<?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>203170</bug_id>
          
          <creation_ts>2019-10-18 16:19:50 -0700</creation_ts>
          <short_desc>Add MediaCapabilities support for DolbyVision codecs.</short_desc>
          <delta_ts>2019-10-21 16:47:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1581586</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-18 16:19:50 -0700</bug_when>
    <thetext>Add MediaCapabilities support for DolbyVision codecs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581587</commentid>
    <comment_count>1</comment_count>
      <attachid>381343</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-18 16:21:45 -0700</bug_when>
    <thetext>Created attachment 381343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581588</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-18 16:22:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/35131321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581611</commentid>
    <comment_count>3</comment_count>
      <attachid>381343</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-10-18 16:47:24 -0700</bug_when>
    <thetext>Comment on attachment 381343
Patch

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

&gt; Source/WebCore/platform/graphics/HEVCUtilities.cpp:178
&gt; +    switch (profileID) {
&gt; +    case 9:  return codecName == &quot;avc1&quot; || codecName == &quot;avc3&quot;;
&gt; +    default: return codecName == &quot;hvc1&quot; || codecName == &quot;hev1&quot;;

Nit: a switch statement with one case and a default is odd, why not just use:

    if (profileID == 9) 
        return codecName == &quot;avc1&quot; || codecName == &quot;avc3&quot;;

    return codecName == &quot;hvc1&quot; || codecName == &quot;hev1&quot;;

&gt; Source/WebCore/platform/graphics/HEVCUtilities.cpp:189
&gt; +    if (nextElement == codecSplit.end())
&gt; +        return WTF::nullopt;

if (nextElement == codecSplit.end() || ++nextElement == codecSplit.end())
    return WTF::nullopt;

&gt; Source/WebCore/platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:196
&gt; +    auto&amp; map = codecStringToCodecTypeMap();
&gt; +    auto findResult = map.find(parameters.codecName);
&gt; +    if (findResult == map.end())
&gt; +        return false;
&gt; +    auto codecType = findResult-&gt;value;

Nit: Any reason to not wrap this in a function like you did with profileIDForAlphabeticDoViProfile and codecStringForDoViCodecType?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581621</commentid>
    <comment_count>4</comment_count>
      <attachid>381343</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-18 16:59:05 -0700</bug_when>
    <thetext>Comment on attachment 381343
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/HEVCUtilities.cpp:178
&gt;&gt; +    default: return codecName == &quot;hvc1&quot; || codecName == &quot;hev1&quot;;
&gt; 
&gt; Nit: a switch statement with one case and a default is odd, why not just use:
&gt; 
&gt;     if (profileID == 9) 
&gt;         return codecName == &quot;avc1&quot; || codecName == &quot;avc3&quot;;
&gt; 
&gt;     return codecName == &quot;hvc1&quot; || codecName == &quot;hev1&quot;;

Sure.

&gt;&gt; Source/WebCore/platform/graphics/HEVCUtilities.cpp:189
&gt;&gt; +        return WTF::nullopt;
&gt; 
&gt; if (nextElement == codecSplit.end() || ++nextElement == codecSplit.end())
&gt;     return WTF::nullopt;

No this would skip the codec type portion of the string. Need that later.

&gt;&gt; Source/WebCore/platform/graphics/cocoa/HEVCUtilitiesCocoa.mm:196
&gt;&gt; +    auto codecType = findResult-&gt;value;
&gt; 
&gt; Nit: Any reason to not wrap this in a function like you did with profileIDForAlphabeticDoViProfile and codecStringForDoViCodecType?

I only split it out before because I ended up with multiple “auto&amp; map =...” statements. But yes, I should convert this into a static query instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581630</commentid>
    <comment_count>5</comment_count>
      <attachid>381352</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-18 17:15:32 -0700</bug_when>
    <thetext>Created attachment 381352
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1581979</commentid>
    <comment_count>6</comment_count>
      <attachid>381435</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-21 13:19:56 -0700</bug_when>
    <thetext>Created attachment 381435
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582001</commentid>
    <comment_count>7</comment_count>
      <attachid>381441</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-10-21 13:37:46 -0700</bug_when>
    <thetext>Created attachment 381441
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582146</commentid>
    <comment_count>8</comment_count>
      <attachid>381441</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-21 16:47:19 -0700</bug_when>
    <thetext>Comment on attachment 381441
Patch for landing

Clearing flags on attachment: 381441

Committed r251396: &lt;https://trac.webkit.org/changeset/251396&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1582147</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-21 16:47:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381343</attachid>
            <date>2019-10-18 16:21:45 -0700</date>
            <delta_ts>2019-10-18 17:15:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203170-20191018162144.patch</filename>
            <type>text/plain</type>
            <size>25183</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMjg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAyZDVkZmU3M2JmZDc3
YjEwNmVhODM1NTRkZjFiYzA4NzJkMzUzYy4uMmZjNGRlZWJmNDExODQ2OGExN2QyNDYwYjQ4ZDky
Mzk5MmQyMWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZWRpYUNhcGFiaWxp
dGllcyBzdXBwb3J0IGZvciBEb2xieVZpc2lvbiBjb2RlY3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS9kb3ZpLWNvZGVjLXBhcmFt
ZXRlcnMuaHRtbAorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIERvbGJ5VmlzaW9u
IChEb1ZpKSBzdHlsZSBjb2RlYyBwcm9maWxlIHN0cmluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHA6CisgICAgICAgICogcGxhdGZvcm0vY29j
b2EvVmlkZW9Ub29sYm94U29mdExpbmsuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjU3RyaW5nRm9yRG9WaUNv
ZGVjVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9maWxlSURGb3JBbHBoYWJldGljRG9WaVBy
b2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZERvVmlQcm9maWxlSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6bWF4aW11bUxldmVsSURGb3JEb1ZpUHJvZmlsZUlEKToKKyAgICAgICAgKFdl
YkNvcmU6OmlzVmFsaWRQcm9maWxlSURGb3JDb2RlY05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6
cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0
aWxpdGllc0NvY29hLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0
aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Y29kZWNTdHJpbmdUb0NvZGVjVHlw
ZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDRlN0cmluZ0FycmF5VG9OdW1iZXJWZWN0b3IpOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVEb1ZpUGFyYW1ldGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29h
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1
cmF0aW9uQ29jb2EpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKToKKyAgICAgICAg
KiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoK
KwogMjAxOS0xMC0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgZXhwZXJpbWVudGFsIEhEUiBNZWRpYUNhcGFiaWxpdGllcyBzdXBwb3J0LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwCmluZGV4IDFkNTYzNjVhN2YxMzhjZjg5MzM0NmFmMzE5OGM2NDI0NjU2NzYxYjMuLmU5MzY1
MTI2MTY3ZWE1YWViYjBlOGEwZTA5OGI3ZjcwYWFiZmJlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTc0
LDYgKzc0LDkgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgVmlkZW9Ub29sYm94LCBrVlRIRVZDRGVjb2RlckNhcGEKIFNPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVmKQogU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVmlkZW9Ub29sYm94
LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heERlY29kZUxldmVsLCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZp
ZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xl
dmVsLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNF
KFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9T
dXBwb3J0ZWRQcm9maWxlcywgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2Rl
ckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVm
KQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gs
IFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcywgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBWVFBp
eGVsQnVmZmVyQ29uZm9ybWVyUmVmKiBjb25mb3JtZXJPdXQpLCAoYWxsb2NhdG9yLCBhdHRyaWJ1
dGVzLCBjb25mb3JtZXJPdXQpKTsKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lcklzQ29uZm9ybWFudFBpeGVs
QnVmZmVyLCBCb29sZWFuLCAoVlRQaXhlbEJ1ZmZlckNvbmZvcm1lclJlZiBjb25mb3JtZXIsIENW
UGl4ZWxCdWZmZXJSZWYgcGl4QnVmKSwgKGNvbmZvcm1lciwgcGl4QnVmKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCmluZGV4
IGYxNTY1NDdhMzllMTI4OTYyZGMzMjZiNzBmYzNlM2Q1YTBlMWMxYzcuLjYyNTMzYWMzZDI3ZmY3
NTcwMmVmNjc2YmY2Mzk4MTYzYmI3NTBiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMTEwLDYgKzExMCwxMiBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVEhFVkNEZWNvZGVyUHJvZgogI2RlZmluZSBrVlRIRVZDRGVjb2RlclByb2ZpbGVD
YXBhYmlsaXR5X01heERlY29kZUxldmVsIGdldF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVEhFVkNEZWNvZGVyUHJv
ZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtW
VEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCBnZXRfVmlkZW9U
b29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCgp
CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMs
IENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1
cHBvcnRlZFByb2ZpbGVzIGdldF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2Fw
YWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNh
cGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZlbHMgZ2V0X1ZpZGVvVG9vbGJveF9r
VlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscygpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtW
VERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3
YXJlQWNjZWxlcmF0ZWQgZ2V0X1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBh
YmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lckNyZWF0
ZVdpdGhBdHRyaWJ1dGVzLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZE
aWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJSZWYqIGNvbmZv
cm1lck91dCksIChhbGxvY2F0b3IsIGF0dHJpYnV0ZXMsIGNvbmZvcm1lck91dCkpOwogI2RlZmlu
ZSBWVFBpeGVsQnVmZmVyQ29uZm9ybWVyQ3JlYXRlV2l0aEF0dHJpYnV0ZXMgc29mdExpbmtfVmlk
ZW9Ub29sYm94X1ZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApp
bmRleCAzYmUwNWY5Y2QwNWE5OTgzZTkyNGY4M2M0Y2RhMTNiZmRjMTI0YzEzLi5jY2Y2MjAzYmMw
YjI5Y2FiOWYyMzc4NTg2NmU5ZmViMTQ1NjEyMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhFVkNVdGlsaXRpZXMuaCIKIAorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTAsNCArMTEyLDEzMiBAQCBPcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0
PiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZykKICAg
ICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAorc3RhdGljIFN0cmluZyBjb2RlY1N0cmluZ0ZvckRv
VmlDb2RlY1R5cGUoY29uc3QgU3RyaW5nJiBjb2RlYykKK3sKKyAgICBzdGF0aWMgYXV0byB0eXBl
cyA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4oeworICAgICAg
ICB7ICJkdmhlIiwgImhldjEiIH0sCisgICAgICAgIHsgImR2aDEiLCAiaHZjMSIgfSwKKyAgICAg
ICAgeyAiZHZhdiIsICJhdmMzIiB9LAorICAgICAgICB7ICJkdmExIiwgImF2YzEiIH0sCisgICAg
fSk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHRzID0gdHlwZXMuZ2V0KCkuZmluZChjb2RlYyk7Cisg
ICAgaWYgKGZpbmRSZXN1bHRzID09IHR5cGVzLmdldCgpLmVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbFN0cmluZygpOworICAgIHJldHVybiBmaW5kUmVzdWx0cy0+dmFsdWU7Cit9CisKK3N0YXRp
YyBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gcHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9m
aWxlKGNvbnN0IFN0cmluZyYgcHJvZmlsZSkKK3sKKyAgICAvLyBTZWUgVGFibGUgNyBvZiAiRG9s
YnkgVmlzaW9uIFByb2ZpbGVzIGFuZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBzdGF0aWMg
YXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIHNo
b3J0Pj4oeworICAgICAgICB7ICJkdmhlLmR0ciIsIDQgfSwKKyAgICAgICAgeyAiZHZoZS5zdG4i
LCA1IH0sCisgICAgICAgIHsgImR2aGUuZHRiIiwgNyB9LAorICAgICAgICB7ICJkdmhlLnN0Iiwg
OCB9LAorICAgICAgICB7ICJkdmF2LnNlIiwgOSB9LAorICAgIH0pOworCisgICAgYXV0byBmaW5k
UmVzdWx0cyA9IG1hcC5nZXQoKS5maW5kKHByb2ZpbGUpOworICAgIGlmIChmaW5kUmVzdWx0cyA9
PSBtYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIGZpbmRSZXN1bHRzLT52YWx1ZTsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZERvVmlQcm9m
aWxlSUQodW5zaWduZWQgc2hvcnQgcHJvZmlsZUlEKQoreworICAgIHN3aXRjaCAocHJvZmlsZUlE
KSB7CisgICAgY2FzZSA0OgorICAgIGNhc2UgNToKKyAgICBjYXNlIDc6CisgICAgY2FzZSA4Ogor
ICAgIGNhc2UgOToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBtYXhpbXVtTGV2ZWxJREZvckRvVmlQcm9maWxlSUQodW5zaWduZWQgc2hvcnQgcHJvZmlsZUlE
KQoreworICAgIC8vIFNlZSBTZWN0aW9uIDQuMSBvZiAiRG9sYnkgVmlzaW9uIFByb2ZpbGVzIGFu
ZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBzd2l0Y2ggKHByb2ZpbGVJRCkgeworICAgIGNh
c2UgNDogcmV0dXJuIDk7CisgICAgY2FzZSA1OiByZXR1cm4gMTM7CisgICAgY2FzZSA3OiByZXR1
cm4gOTsKKyAgICBjYXNlIDg6IHJldHVybiAxMzsKKyAgICBjYXNlIDk6IHJldHVybiA1OworICAg
IGRlZmF1bHQ6IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBp
c1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKHVuc2lnbmVkIHNob3J0IHByb2ZpbGVJRCwgY29u
c3QgU3RyaW5nJiBjb2RlY05hbWUpCit7CisgICAgc3dpdGNoIChwcm9maWxlSUQpIHsKKyAgICBj
YXNlIDk6ICByZXR1cm4gY29kZWNOYW1lID09ICJhdmMxIiB8fCBjb2RlY05hbWUgPT0gImF2YzMi
OworICAgIGRlZmF1bHQ6IHJldHVybiBjb2RlY05hbWUgPT0gImh2YzEiIHx8IGNvZGVjTmFtZSA9
PSAiaGV2MSI7CisgICAgfQorfQorCitPcHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZykKK3sKKyAgICAvLyBU
aGUgZm9ybWF0IG9mIHRoZSBEb1ZpIGNvZGVjIHN0cmluZyBpcyBzcGVjaWZpZWQgaW4gIkRvbGJ5
IFZpc2lvbiBQcm9maWxlcyBhbmQgTGV2ZWxzIFZlcnNpb24gMS4zLjIiCisgICAgU3RyaW5nVmll
dyBjb2RlY1ZpZXcoY29kZWNTdHJpbmcpOworICAgIGF1dG8gY29kZWNTcGxpdCA9IGNvZGVjVmll
dy5zcGxpdCgnLicpOworICAgIGF1dG8gbmV4dEVsZW1lbnQgPSBjb2RlY1NwbGl0LmJlZ2luKCk7
CisgICAgaWYgKG5leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBEb1ZpUGFyYW1ldGVyU2V0IHBhcmFtZXRlcnM7CisKKyAg
ICBwYXJhbWV0ZXJzLmNvZGVjTmFtZSA9IGNvZGVjU3RyaW5nRm9yRG9WaUNvZGVjVHlwZSgoKm5l
eHRFbGVtZW50KS50b1N0cmluZygpKTsKKyAgICBpZiAoIXBhcmFtZXRlcnMuY29kZWNOYW1lKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCsrbmV4dEVsZW1lbnQgPT0g
Y29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGF1
dG8gcHJvZmlsZUlEID0gKm5leHRFbGVtZW50OworICAgIGlmICghcHJvZmlsZUlELmxlbmd0aCgp
KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYm9vbCBpc0ludGVncmFsID0g
ZmFsc2U7CisgICAgYXV0byBmaXJzdENoYXJhY3RlciA9IHByb2ZpbGVJRFswXTsKKyAgICAvLyBQ
cm9maWxlIGRlZmluaXRpb24gY2FuIGVpdGhlciBiZSBudW1lcmljIG9yIGFscGhhOgorICAgIGlm
IChmaXJzdENoYXJhY3RlciA9PSAnMCcpIHsKKyAgICAgICAgcGFyYW1ldGVycy5iaXRzdHJlYW1Q
cm9maWxlSUQgPSB0b0ludGVncmFsVHlwZTx1aW50OF90Pihwcm9maWxlSUQsICZpc0ludGVncmFs
LCAxMCk7CisgICAgICAgIGlmICghaXNJbnRlZ3JhbCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBhbHBoYW51bWVyaWNQcm9maWxl
U3RyaW5nID0gY29kZWNWaWV3LmxlZnQoNSArIHByb2ZpbGVJRC5sZW5ndGgoKSkudG9TdHJpbmco
KTsKKyAgICAgICAgYXV0byBwcm9maWxlSUQgPSBwcm9maWxlSURGb3JBbHBoYWJldGljRG9WaVBy
b2ZpbGUoYWxwaGFudW1lcmljUHJvZmlsZVN0cmluZyk7CisgICAgICAgIGlmICghcHJvZmlsZUlE
KQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgcGFyYW1ldGVycy5i
aXRzdHJlYW1Qcm9maWxlSUQgPSBwcm9maWxlSUQudmFsdWUoKTsKKyAgICB9CisKKyAgICBpZiAo
IWlzVmFsaWREb1ZpUHJvZmlsZUlEKHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEKSkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIGlmICghaXNWYWxpZFByb2ZpbGVJREZv
ckNvZGVjTmFtZShwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCwgcGFyYW1ldGVycy5jb2Rl
Y05hbWUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCsrbmV4dEVs
ZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGF1dG8gbGV2ZWxJRCA9ICpuZXh0RWxlbWVudDsKKyAgICBpZiAoIWxldmVsSUQubGVu
Z3RoKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBwYXJhbWV0ZXJzLmJp
dHN0cmVhbUxldmVsSUQgPSB0b0ludGVncmFsVHlwZTx1aW50OF90PihsZXZlbElELCAmaXNJbnRl
Z3JhbCwgMTApOworICAgIGlmICghaXNJbnRlZ3JhbCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIGF1dG8gbWF4aW11bUxldmVsSUQgPSBtYXhpbXVtTGV2ZWxJREZvckRvVmlQ
cm9maWxlSUQocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpOworICAgIGlmICghbWF4aW11
bUxldmVsSUQgfHwgcGFyYW1ldGVycy5iaXRzdHJlYW1MZXZlbElEID4gbWF4aW11bUxldmVsSUQu
dmFsdWUoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBwYXJh
bWV0ZXJzOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9IRVZDVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9I
RVZDVXRpbGl0aWVzLmgKaW5kZXggYTIwOTkyYzg0N2E0NWIzMzY2MmI2M2JiNjViMWM2ZjE2NzRk
YmI3NS4uNDNlZWE4N2FiOGZhMzg4OWY1NDg0ZTcxN2NmMDI2MjM0ZDFiMDBlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaApAQCAtNDIs
NCArNDIsMTIgQEAgc3RydWN0IEhFVkNQYXJhbWV0ZXJTZXQgewogCiBXRUJDT1JFX0VYUE9SVCBP
cHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0PiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29uc3Qg
U3RyaW5nJiBjb2RlY1N0cmluZyk7CiAKK3N0cnVjdCBEb1ZpUGFyYW1ldGVyU2V0IHsKKyAgICBT
dHJpbmcgY29kZWNOYW1lOworICAgIHVuc2lnbmVkIHNob3J0IGJpdHN0cmVhbVByb2ZpbGVJRCB7
IDAgfTsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzdHJlYW1MZXZlbElEIHsgMCB9OworfTsKKwor
V0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8RG9WaVBhcmFtZXRlclNldD4gcGFyc2VEb1ZpQ29kZWNQ
YXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgY29kZWNTdHJpbmcpOworCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2Eu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXND
b2NvYS5oCmluZGV4IDZiNWNmMWNiMWY2NmI5YmVjNzJlYmJjYTNmYWE5ZTgwZTU3NWQyOWUuLmRh
OTFjMDc1YWRlZGQ1MmU0YzUwOTg1NjM2NTcyZTQ5NWNlMjEyMmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXND
b2NvYS5oCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0cnVjdCBNZWRp
YUNhcGFiaWxpdGllc0luZm87CiAKIGV4dGVybiBib29sIHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMo
SEVWQ1BhcmFtZXRlclNldCYsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYsIGJvb2wgaGFzQWxwaGFD
aGFubmVsLCBib29sIGhkclN1cHBvcnQpOworZXh0ZXJuIGJvb2wgdmFsaWRhdGVEb1ZpUGFyYW1l
dGVycyhEb1ZpUGFyYW1ldGVyU2V0JiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiwgYm9vbCBoYXNB
bHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCk7CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29h
Lm1tCmluZGV4IDdiYTA2ZGEyYTg4ZDNjZTNhMTFkY2M0NjExN2IyNDVjZmY0OWQyMzUuLjJkNWJl
N2JiMTFiZTI5YjE1ZTFjZDcyMTliNTE5MzZiOWY0M2U5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29j
b2EubW0KQEAgLTMyLDggKzMyLDEwIEBACiAjaW1wb3J0ICJIRVZDVXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJNZWRpYUNhcGFiaWxpdGllc0luZm8uaCIKIAotI2ltcG9ydCAiVmlkZW9Ub29sYm94U29m
dExpbmsuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0TGluay5oPgorI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgorCisjaW1wb3J0ICJW
aWRlb1Rvb2xib3hTb2Z0TGluay5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyMiw2
ICsxMjQsMTE1IEBAIGJvb2wgdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhIRVZDUGFyYW1ldGVyU2V0
JiBwYXJhbWV0ZXJzLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK3N0YXRpYyBIYXNoTWFwPFN0cmluZywgQ01WaWRlb0NvZGVjVHlwZT4mIGNvZGVjU3RyaW5n
VG9Db2RlY1R5cGVNYXAoKQoreworICAgIHN0YXRpYyBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPFN0cmluZywgQ01WaWRlb0NvZGVjVHlwZT4+KHsKKyAgICAgICAgeyAiYXZj
MSIsIGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQgfSwKKyAgICAgICAgeyAiYXZjMyIsIGtDTVZpZGVv
Q29kZWNUeXBlX0gyNjQgfSwKKyAgICAgICAgeyAiaHZjMSIsIGtDTVZpZGVvQ29kZWNUeXBlX0hF
VkMgfSwKKyAgICAgICAgeyAiaGV2MSIsIGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMgfSwKKyAgICB9
KTsKKworICAgIHJldHVybiBtYXA7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxWZWN0b3I8dW5zaWdu
ZWQgc2hvcnQ+PiBDRlN0cmluZ0FycmF5VG9OdW1iZXJWZWN0b3IoQ0ZBcnJheVJlZiBhcnJheUNG
KQoreworICAgIGlmICghYXJyYXlDRiB8fCBDRkdldFR5cGVJRChhcnJheUNGKSAhPSBDRkFycmF5
R2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGFy
cmF5TlMgPSAoX19icmlkZ2UgTlNBcnJheTxOU1N0cmluZyo+KilhcnJheUNGOworICAgIFZlY3Rv
cjx1bnNpZ25lZCBzaG9ydD4gdmFsdWVzOworICAgIHZhbHVlcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGFycmF5TlMuY291bnQpOworCisgICAgYm9vbCBhcmVBbGxWYWxpZE51bWJlcnMgPSB0cnVl
OworICAgIFthcnJheU5TIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOlsmXSAoTlNTdHJpbmcq
IHZhbHVlLCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgIGlmICghW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKSB7CisgICAgICAgICAgICBhcmVBbGxWYWxpZE51
bWJlcnMgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzdG9wKQorICAgICAgICAgICAgICAgICpz
dG9wID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGJv
b2wgaXNWYWxpZE51bWJlciA9IGZhbHNlOworICAgICAgICBhdXRvIG51bWVyaWNWYWx1ZSA9IHRv
SW50ZWdyYWxUeXBlPHVuc2lnbmVkIHNob3J0PihTdHJpbmcodmFsdWUpLCAmaXNWYWxpZE51bWJl
cik7CisgICAgICAgIGlmICghaXNWYWxpZE51bWJlcikgeworICAgICAgICAgICAgYXJlQWxsVmFs
aWROdW1iZXJzID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc3RvcCkKKyAgICAgICAgICAgICAg
ICAqc3RvcCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKG51bWVyaWNWYWx1ZSk7CisgICAgfV07CisKKyAgICBp
ZiAoIWFyZUFsbFZhbGlkTnVtYmVycykKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4gdmFsdWVzOworfQorCitib29sIHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoRG9WaVBh
cmFtZXRlclNldCYgcGFyYW1ldGVycywgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiBpbmZvLCBib29s
IGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQoreworICAgIGlmIChoYXNBbHBoYUNo
YW5uZWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChoZHJTdXBwb3J0KSB7Cisg
ICAgICAgIC8vIFBsYXRmb3JtIHN1cHBvcnRzIEhEUiBwbGF5YmFjayBvZiBIRVZDIE1haW4xMCBQ
cm9maWxlLCB3aGljaCBpcyBzaWduYWxsZWQgYnkgRG9WaSBwcm9maWxlcyA0LCA1LCA3LCAmIDgu
CisgICAgICAgIHN3aXRjaCAocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpIHsKKyAgICAg
ICAgY2FzZSA0OgorICAgICAgICBjYXNlIDU6CisgICAgICAgIGNhc2UgNzoKKyAgICAgICAgY2Fz
ZSA4OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvJiBtYXAgPSBjb2RlY1N0
cmluZ1RvQ29kZWNUeXBlTWFwKCk7CisgICAgYXV0byBmaW5kUmVzdWx0ID0gbWFwLmZpbmQocGFy
YW1ldGVycy5jb2RlY05hbWUpOworICAgIGlmIChmaW5kUmVzdWx0ID09IG1hcC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gY29kZWNUeXBlID0gZmluZFJlc3VsdC0+dmFs
dWU7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rl
ckluc3RhbmNlKGNvZGVjVHlwZSwga0NGQWxsb2NhdG9yRGVmYXVsdCwgbnVsbHB0ciwgbnVsbHB0
cik7CisgICAgaWYgKHN0YXR1cyAhPSBub0VycikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgaWYgKCFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9WVENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGll
c0RpY3Rpb25hcnkoKQorICAgICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCisgICAgICAgIHx8ICFj
YW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBv
cnRlZExldmVscygpCisgICAgICAgIHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZp
c2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBjYXBhYmlsaXRp
ZXMgPSBhZG9wdENGKFZUQ29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0aWVzRGljdGlvbmFyeSgpKTsK
KyAgICBpZiAoIWNhcGFiaWxpdGllcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0
byBzdXBwb3J0ZWRQcm9maWxlc0NGID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
Y2FwYWJpbGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBv
cnRlZFByb2ZpbGVzKTsKKyAgICBhdXRvIHN1cHBvcnRlZFByb2ZpbGVzID0gQ0ZTdHJpbmdBcnJh
eVRvTnVtYmVyVmVjdG9yKHN1cHBvcnRlZFByb2ZpbGVzQ0YpOworICAgIGlmICghc3VwcG9ydGVk
UHJvZmlsZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc3VwcG9ydGVkTGV2
ZWxzQ0YgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0
KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzKTsKKyAg
ICBhdXRvIHN1cHBvcnRlZExldmVscyA9IENGU3RyaW5nQXJyYXlUb051bWJlclZlY3RvcihzdXBw
b3J0ZWRMZXZlbHNDRik7CisgICAgaWYgKCFzdXBwb3J0ZWRMZXZlbHMpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGF1dG8gaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YgPSAoQ0ZCb29sZWFu
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZURG9sYnlWaXNp
b25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQpOworICAgIGlmICghaXNI
YXJkd2FyZUFjY2VsZXJhdGVkQ0YgfHwgQ0ZHZXRUeXBlSUQoaXNIYXJkd2FyZUFjY2VsZXJhdGVk
Q0YpICE9IENGQm9vbGVhbkdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzLnZhbHVlKCkuY29udGFpbnMocGFyYW1ldGVycy5iaXRz
dHJlYW1Qcm9maWxlSUQpIHx8ICFzdXBwb3J0ZWRMZXZlbHMudmFsdWUoKS5jb250YWlucyhwYXJh
bWV0ZXJzLmJpdHN0cmVhbUxldmVsSUQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
bmZvLnN1cHBvcnRlZCA9IHRydWU7CisgICAgaW5mby5zbW9vdGggPSB0cnVlOworICAgIGluZm8u
cG93ZXJFZmZpY2llbnQgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hhcmR3YXJlQWNjZWxlcmF0ZWRD
Rik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9N
ZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNv
Y29hLmNwcAppbmRleCBiYzkwNTZmMzljODk5M2FmNjYzMGE4ODAxNzU0NTU5OTYyYjVhOGIzLi4y
ZWUzODI3MDg0OTRjNWI3YTMxNjc1OWZkZGFkYjg0ZjAzMmFiOWZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRp
b25GYWN0b3J5Q29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKQEAgLTcxLDcg
KzcxLDcgQEAgdm9pZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29h
KE1lZGlhRGVjb2RpbmdDb25maWd1cmF0aW9uJiYgY28KICAgICAgICAgaW5mby5zdXBwb3J0ZWQg
PSB0cnVlOwogICAgICAgICBhdXRvJiBjb2RlYyA9IGNvZGVjc1swXTsKICAgICAgICAgYXV0byB2
aWRlb0NvZGVjVHlwZSA9IHZpZGVvQ29kZWNUeXBlRnJvbVJGQzQyODFUeXBlKGNvZGVjKTsKLSAg
ICAgICAgaWYgKCF2aWRlb0NvZGVjVHlwZSkgeworICAgICAgICBpZiAoIXZpZGVvQ29kZWNUeXBl
ICYmICEoY29kZWMuc3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNvZGVjLnN0YXJ0c1dpdGgoImR2aGUi
KSkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKHt7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbil9
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtODUsNiArODUsMTIgQEAgdm9p
ZCBjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJhdGlvbkNvY29hKE1lZGlhRGVjb2Rp
bmdDb25maWd1cmF0aW9uJiYgY28KICAgICAgICAgICAgICAgICBjYWxsYmFjayh7eyB9LCBXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgaWYgKGNvZGVjLnN0YXJ0c1dpdGgoImR2aDEiKSB8fCBjb2Rl
Yy5zdGFydHNXaXRoKCJkdmhlIikpIHsKKyAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVycyA9IHBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyhjb2RlYyk7CisgICAgICAgICAgICBpZiAoIXBhcmFtZXRl
cnMgfHwgIXZhbGlkYXRlRG9WaVBhcmFtZXRlcnMocGFyYW1ldGVycy52YWx1ZSgpLCBpbmZvLCBh
bHBoYUNoYW5uZWwsIGhkclN1cHBvcnRlZCkpIHsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayh7
eyB9LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGFscGhhQ2hh
bm5lbCB8fCBoZHJTdXBwb3J0ZWQpIHsKICAgICAgICAgICAgICAgICBjYWxsYmFjayh7eyB9LCBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggODJlYTAwZDNlYjk1ZDNkOTBhYWNhOTE4M2IyNjBkZTE5MWRiMjA3Mi4uZWE5YzM5NTY2
NjcwZDc2ZWEzZjMxYmY1ZjQ2NGJmMzBiZjIyMWI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtNTE0Miw2ICs1MTQyLDExIEBAIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJT
ZXQ+IEludGVybmFsczo6cGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgY29k
CiAgICAgcmV0dXJuIFdlYkNvcmU6OnBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb2RlY1N0cmlu
Zyk7CiB9CiAKK09wdGlvbmFsPERvVmlQYXJhbWV0ZXJTZXQ+IEludGVybmFsczo6cGFyc2VEb1Zp
Q29kZWNQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgY29kZWNTdHJpbmcpCit7CisgICAgcmV0dXJu
IFdlYkNvcmU6OnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhjb2RlY1N0cmluZyk7Cit9CisKIGF1
dG8gSW50ZXJuYWxzOjpnZXRDb29raWVzKCkgY29uc3QgLT4gVmVjdG9yPENvb2tpZURhdGE+CiB7
CiAgICAgYXV0byogZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCmluZGV4IGY5YjMzYTI1ODJhNDU4ODYzMTE3YzljM2Q5Mzk5MzE5MzE1OGFm
ZDguLmEzYjRhYmFlNTU4NGY3NWRiZmNkZGY5MmU0NjAzYmE0ZGU5Y2EyZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaApAQCAtODE2LDYgKzgxNiw5IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBIRVZDUGFyYW1ldGVyU2V0ID0gV2ViQ29yZTo6SEVWQ1BhcmFtZXRlclNldDsKICAgICBPcHRp
b25hbDxIRVZDUGFyYW1ldGVyU2V0PiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3Ry
aW5nJiBjb2RlY1N0cmluZyk7CiAKKyAgICB1c2luZyBEb1ZpUGFyYW1ldGVyU2V0ID0gV2ViQ29y
ZTo6RG9WaVBhcmFtZXRlclNldDsKKyAgICBPcHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJz
ZURvVmlDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZyk7CisKICAgICBz
dHJ1Y3QgQ29va2llRGF0YSB7CiAgICAgICAgIFN0cmluZyBuYW1lOwogICAgICAgICBTdHJpbmcg
dmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNWZmNDcxYWVhNWNk
ZDAyNmMwYzdlMTEyNjc1Mzk0ZGFhNmRhZTI0Ny4uOTdiNDQ0N2E0MjBmN2E5NmFiOWVjNDYyZjA2
ZmM3YzA0YzYxNjBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtMTM2
LDYgKzEzNiwxNSBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKICAgICBzZXF1ZW5jZTx1bnNp
Z25lZCBzaG9ydD4gY29uc3RyYWludEZsYWdzOwogfTsKIAorWworICAgIEV4cG9ydE1hY3JvPVdF
QkNPUkVfVEVTVFNVUFBPUlRfRVhQT1JULAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorXSBk
aWN0aW9uYXJ5IERvVmlQYXJhbWV0ZXJTZXQgeworICAgIERPTVN0cmluZyBjb2RlY05hbWU7Cisg
ICAgdW5zaWduZWQgc2hvcnQgYml0c3RyZWFtUHJvZmlsZUlEOworICAgIHVuc2lnbmVkIHNob3J0
IGJpdHN0cmVhbUxldmVsSUQ7Cit9OworCiBbCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNU
U1VQUE9SVF9FWFBPUlQsCiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCkBAIC03ODEsNiArNzkw
LDcgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAgYm9vbGVhbiBzdXBwb3J0c1ZDUEVu
Y29kZXIoKTsKIAogICAgIEhFVkNQYXJhbWV0ZXJTZXQ/IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVy
cyhET01TdHJpbmcgY29kZWNQYXJhbWV0ZXJzKTsKKyAgICBEb1ZpUGFyYW1ldGVyU2V0PyBwYXJz
ZURvVmlDb2RlY1BhcmFtZXRlcnMoRE9NU3RyaW5nIGNvZGVjUGFyYW1ldGVycyk7CiAKICAgICBz
ZXF1ZW5jZTxDb29raWVEYXRhPiBnZXRDb29raWVzKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMzUyM2MyMjU2ZDM3
MGI3ZmFiZTFkMDgwMzkxY2ZlODE1NWJmYTc5Li5lY2RlZDkzNTNkMTZhYWEzMDg4MmM0ZWU0ZjUz
ZDZiOTM0YTBlNGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTAtMTggIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIE1lZGlhQ2FwYWJpbGl0aWVz
IHN1cHBvcnQgZm9yIERvbGJ5VmlzaW9uIGNvZGVjcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzE3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJz
Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTE3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIEFkZCBleHBlcmltZW50YWwgSERSIE1lZGlhQ2FwYWJpbGl0aWVzIHN1
cHBvcnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRl
cnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJz
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWVlYjVmZDcwY2I4MzFkNWY2OWU5MWM3ZTc4YTgy
OTdiMzlmZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2Rl
Yy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitFWFBFQ1RFRCAoaW50
ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiYmFkLXBhcmFtZXRlciIpID09ICdudWxs
JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgx
IikgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFt
ZXRlcnMoImR2aDEuMDQuMDkiKSA9PT0gJ3sgaHZjMSwgNCwgOSB9JykgT0sKK0VYUEVDVEVEIChp
bnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA1LjEzIikgPT09ICd7IGh2
YzEsIDUsIDEzIH0nKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFt
ZXRlcnMoImR2aGUuMDcuMDkiKSA9PT0gJ3sgaGV2MSwgNywgOSB9JykgT0sKK0VYUEVDVEVEIChp
bnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLmR0ci45IikgPT09ICd7IGhl
djEsIDQsIDkgfScpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1l
dGVycygiZHZoZS5zdG4uOSIpID09PSAneyBoZXYxLCA1LCA5IH0nKSBPSworRVhQRUNURUQgKGlu
dGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuZHRiLjkiKSA9PT0gJ3sgaGV2
MSwgNywgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKCJkdmhlLnN0LjkiKSA9PT0gJ3sgaGV2MSwgOCwgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRl
cm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2LnNlLjUiKSA9PT0gJ3sgYXZjMywg
OSwgNSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJz
KCJkdmgxLjA2LjAxIikgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuMDMuMDEiKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAo
aW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoMS4wOS4wMSIpID09ICdudWxs
JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2
LjA0LjAxIikgPT0gJ251bGwnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRp
YS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjA4MDYyMWQ5ZWUxMDBh
YTQ3YTFhYTg0YjZjZWVmNjVmMDU4YWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
bWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIERvVmlQYXJhbWV0ZXJTZXRU
b1N0cmluZyhzZXQpIHsKKyAgICAgICAgaWYgKCFzZXQpCisgICAgICAgICAgICByZXR1cm4gYG51
bGxgOworICAgICAgICByZXR1cm4gYHsgJHtzZXQuY29kZWNOYW1lfSwgJHtzZXQuYml0c3RyZWFt
UHJvZmlsZUlEIH0sICR7c2V0LmJpdHN0cmVhbUxldmVsSUQgfSB9YDsKKyAgICB9CisgICAgZnVu
Y3Rpb24gaXNFcXVhbERvVmlQYXJhbWV0ZXJTZXQoc2V0QSwgc2V0QikgeworICAgICAgICByZXR1
cm4gc2V0QSAmJiBzZXRCIAorICAgICAgICAgICAgJiYgc2V0QS5jb2RlY05hbWUgPT09IHNldEIu
Y29kZWNOYW1lCisgICAgICAgICAgICAmJiBzZXRBLmJpdHN0cmVhbVByb2ZpbGVJRCA9PT0gc2V0
Qi5iaXRzdHJlYW1Qcm9maWxlSUQKKyAgICAgICAgICAgICYmIHNldEEuYml0c3RyZWFtTGV2ZWxJ
RCA9PT0gc2V0Qi5iaXRzdHJlYW1MZXZlbElECisgICAgfQorICAgIGZ1bmN0aW9uIG1ha2VEb1Zp
UGFyYW1ldGVyU2V0KGNvZGVjTmFtZSwgYml0c3RyZWFtUHJvZmlsZUlELCBiaXRzdHJlYW1MZXZl
bElEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGNvZGVjTmFtZTogY29k
ZWNOYW1lLAorICAgICAgICAgICAgYml0c3RyZWFtUHJvZmlsZUlEOiBiaXRzdHJlYW1Qcm9maWxl
SUQsCisgICAgICAgICAgICBiaXRzdHJlYW1MZXZlbElEOiBiaXRzdHJlYW1MZXZlbElELAorICAg
ICAgICB9OworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0
KHRlc3RGdW5jU3RyaW5nLCBleHBlY3RlZCkKKyAgICB7CisgICAgICAgIGxldCBvYnNlcnZlZCA9
IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgICAgICBsZXQgc3VjY2VzcyA9IGlzRXF1YWxEb1Zp
UGFyYW1ldGVyU2V0KG9ic2VydmVkLCBleHBlY3RlZCk7CisgICAgICAgIHJlcG9ydEV4cGVjdGVk
KHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCAnPT09JywgRG9WaVBhcmFtZXRlclNldFRvU3RyaW5n
KGV4cGVjdGVkKSwgRG9WaVBhcmFtZXRlclNldFRvU3RyaW5nKG9ic2VydmVkKSk7CisgICAgfQor
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZXZlbnQgPT4geworICAgICAgICB0
ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImJhZC1wYXJh
bWV0ZXIiKScsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoImR2aDEiKScsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWRE
b1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgx
LjA0LjA5IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaHZjMScsIDQsIDkpKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFy
YW1ldGVycygiZHZoMS4wNS4xMyIpJywgbWFrZURvVmlQYXJhbWV0ZXJTZXQoJ2h2YzEnLCA1LCAx
MykpOworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFy
c2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLjA3LjA5IiknLCBtYWtlRG9WaVBhcmFtZXRlclNl
dCgnaGV2MScsIDcsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgn
aW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5kdHIuOSIpJywgbWFrZURv
VmlQYXJhbWV0ZXJTZXQoJ2hldjEnLCA0LCA5KSk7CisgICAgICAgIHRlc3RFeHBlY3RlZERvVmlQ
YXJhbWV0ZXJTZXQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuc3Ru
LjkiKScsIG1ha2VEb1ZpUGFyYW1ldGVyU2V0KCdoZXYxJywgNSwgOSkpOworICAgICAgICB0ZXN0
RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKCJkdmhlLmR0Yi45IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaGV2MScsIDcsIDkpKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9W
aUNvZGVjUGFyYW1ldGVycygiZHZoZS5zdC45IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaGV2
MScsIDgsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJu
YWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZhdi5zZS41IiknLCBtYWtlRG9WaVBhcmFt
ZXRlclNldCgnYXZjMycsIDksIDUpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA2LjAxIiknLCBudWxsKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLjAz
LjAxIiknLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1Zp
Q29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA5LjAxIiknLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVj
dGVkKCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2LjA0LjAxIiknLCBu
dWxsKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSwgeyBvbmNlOiB0cnVlIH0pOworICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381352</attachid>
            <date>2019-10-18 17:15:32 -0700</date>
            <delta_ts>2019-10-21 13:19:54 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203170-20191018171531.patch</filename>
            <type>text/plain</type>
            <size>25306</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA2OWFiNmY1MWM3Mzhm
ZmY1YzJmMmIyMDhiM2Q2YTJkZjg4MjI1My4uNWI5NmE4ODM4YTZjODcxMDA3ZDg0MTU5ODg3NGJl
ZDFkMzlmMzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZWRpYUNhcGFiaWxp
dGllcyBzdXBwb3J0IGZvciBEb2xieVZpc2lvbiBjb2RlY3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdDogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0
ZXJzLmh0bWwKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyBEb2xieVZpc2lvbiAo
RG9WaSkgc3R5bGUgY29kZWMgcHJvZmlsZSBzdHJpbmdzLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2RlY1N0cmluZ0ZvckRvVmlDb2Rl
Y1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9m
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWREb1ZpUHJvZmlsZUlEKToKKyAgICAgICAg
KFdlYkNvcmU6Om1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjU3RyaW5nVG9Db2RlY1R5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q0ZTdHJpbmdBcnJheVRvTnVtYmVyVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlRG9WaVBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJh
dGlvbkNvY29hKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisK
IDIwMTktMTAtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVmYWN0b3IgQWJzdHJhY3RFdmVudExvb3Agb3V0IG9mIFdpbmRvd0V2ZW50TG9vcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwCmluZGV4IDFkNTYzNjVhN2YxMzhjZjg5MzM0NmFmMzE5OGM2NDI0NjU2NzYxYjMuLmU5MzY1
MTI2MTY3ZWE1YWViYjBlOGEwZTA5OGI3ZjcwYWFiZmJlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTc0
LDYgKzc0LDkgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgVmlkZW9Ub29sYm94LCBrVlRIRVZDRGVjb2RlckNhcGEKIFNPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVmKQogU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVmlkZW9Ub29sYm94
LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heERlY29kZUxldmVsLCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZp
ZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xl
dmVsLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNF
KFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9T
dXBwb3J0ZWRQcm9maWxlcywgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2Rl
ckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVm
KQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gs
IFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcywgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBWVFBp
eGVsQnVmZmVyQ29uZm9ybWVyUmVmKiBjb25mb3JtZXJPdXQpLCAoYWxsb2NhdG9yLCBhdHRyaWJ1
dGVzLCBjb25mb3JtZXJPdXQpKTsKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lcklzQ29uZm9ybWFudFBpeGVs
QnVmZmVyLCBCb29sZWFuLCAoVlRQaXhlbEJ1ZmZlckNvbmZvcm1lclJlZiBjb25mb3JtZXIsIENW
UGl4ZWxCdWZmZXJSZWYgcGl4QnVmKSwgKGNvbmZvcm1lciwgcGl4QnVmKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCmluZGV4
IGYxNTY1NDdhMzllMTI4OTYyZGMzMjZiNzBmYzNlM2Q1YTBlMWMxYzcuLjYyNTMzYWMzZDI3ZmY3
NTcwMmVmNjc2YmY2Mzk4MTYzYmI3NTBiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMTEwLDYgKzExMCwxMiBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVEhFVkNEZWNvZGVyUHJvZgogI2RlZmluZSBrVlRIRVZDRGVjb2RlclByb2ZpbGVD
YXBhYmlsaXR5X01heERlY29kZUxldmVsIGdldF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVEhFVkNEZWNvZGVyUHJv
ZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtW
VEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCBnZXRfVmlkZW9U
b29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCgp
CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMs
IENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1
cHBvcnRlZFByb2ZpbGVzIGdldF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2Fw
YWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNh
cGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZlbHMgZ2V0X1ZpZGVvVG9vbGJveF9r
VlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscygpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtW
VERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3
YXJlQWNjZWxlcmF0ZWQgZ2V0X1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBh
YmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lckNyZWF0
ZVdpdGhBdHRyaWJ1dGVzLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZE
aWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJSZWYqIGNvbmZv
cm1lck91dCksIChhbGxvY2F0b3IsIGF0dHJpYnV0ZXMsIGNvbmZvcm1lck91dCkpOwogI2RlZmlu
ZSBWVFBpeGVsQnVmZmVyQ29uZm9ybWVyQ3JlYXRlV2l0aEF0dHJpYnV0ZXMgc29mdExpbmtfVmlk
ZW9Ub29sYm94X1ZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApp
bmRleCAzYmUwNWY5Y2QwNWE5OTgzZTkyNGY4M2M0Y2RhMTNiZmRjMTI0YzEzLi5iNDk1M2JkMDlk
MDkxODlhOGMxZWEzMDQ0Nzg3ZDU2OWQ5M2I3OGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhFVkNVdGlsaXRpZXMuaCIKIAorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTAsNCArMTEyLDEzMSBAQCBPcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0
PiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZykKICAg
ICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAorc3RhdGljIFN0cmluZyBjb2RlY1N0cmluZ0ZvckRv
VmlDb2RlY1R5cGUoY29uc3QgU3RyaW5nJiBjb2RlYykKK3sKKyAgICBzdGF0aWMgYXV0byB0eXBl
cyA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4oeworICAgICAg
ICB7ICJkdmhlIiwgImhldjEiIH0sCisgICAgICAgIHsgImR2aDEiLCAiaHZjMSIgfSwKKyAgICAg
ICAgeyAiZHZhdiIsICJhdmMzIiB9LAorICAgICAgICB7ICJkdmExIiwgImF2YzEiIH0sCisgICAg
fSk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHRzID0gdHlwZXMuZ2V0KCkuZmluZChjb2RlYyk7Cisg
ICAgaWYgKGZpbmRSZXN1bHRzID09IHR5cGVzLmdldCgpLmVuZCgpKQorICAgICAgICByZXR1cm4g
bnVsbFN0cmluZygpOworICAgIHJldHVybiBmaW5kUmVzdWx0cy0+dmFsdWU7Cit9CisKK3N0YXRp
YyBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gcHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9m
aWxlKGNvbnN0IFN0cmluZyYgcHJvZmlsZSkKK3sKKyAgICAvLyBTZWUgVGFibGUgNyBvZiAiRG9s
YnkgVmlzaW9uIFByb2ZpbGVzIGFuZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBzdGF0aWMg
YXV0byBtYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIHNo
b3J0Pj4oeworICAgICAgICB7ICJkdmhlLmR0ciIsIDQgfSwKKyAgICAgICAgeyAiZHZoZS5zdG4i
LCA1IH0sCisgICAgICAgIHsgImR2aGUuZHRiIiwgNyB9LAorICAgICAgICB7ICJkdmhlLnN0Iiwg
OCB9LAorICAgICAgICB7ICJkdmF2LnNlIiwgOSB9LAorICAgIH0pOworCisgICAgYXV0byBmaW5k
UmVzdWx0cyA9IG1hcC5nZXQoKS5maW5kKHByb2ZpbGUpOworICAgIGlmIChmaW5kUmVzdWx0cyA9
PSBtYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIGZpbmRSZXN1bHRzLT52YWx1ZTsKK30KKworc3RhdGljIGJvb2wgaXNWYWxpZERvVmlQcm9m
aWxlSUQodW5zaWduZWQgc2hvcnQgcHJvZmlsZUlEKQoreworICAgIHN3aXRjaCAocHJvZmlsZUlE
KSB7CisgICAgY2FzZSA0OgorICAgIGNhc2UgNToKKyAgICBjYXNlIDc6CisgICAgY2FzZSA4Ogor
ICAgIGNhc2UgOToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBtYXhpbXVtTGV2ZWxJREZvckRvVmlQcm9maWxlSUQodW5zaWduZWQgc2hvcnQgcHJvZmlsZUlE
KQoreworICAgIC8vIFNlZSBTZWN0aW9uIDQuMSBvZiAiRG9sYnkgVmlzaW9uIFByb2ZpbGVzIGFu
ZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBzd2l0Y2ggKHByb2ZpbGVJRCkgeworICAgIGNh
c2UgNDogcmV0dXJuIDk7CisgICAgY2FzZSA1OiByZXR1cm4gMTM7CisgICAgY2FzZSA3OiByZXR1
cm4gOTsKKyAgICBjYXNlIDg6IHJldHVybiAxMzsKKyAgICBjYXNlIDk6IHJldHVybiA1OworICAg
IGRlZmF1bHQ6IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBp
c1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKHVuc2lnbmVkIHNob3J0IHByb2ZpbGVJRCwgY29u
c3QgU3RyaW5nJiBjb2RlY05hbWUpCit7CisgICAgaWYgKHByb2ZpbGVJRCA9PSA5KQorICAgICAg
ICByZXR1cm4gY29kZWNOYW1lID09ICJhdmMxIiB8fCBjb2RlY05hbWUgPT0gImF2YzMiOworICAg
IHJldHVybiBjb2RlY05hbWUgPT0gImh2YzEiIHx8IGNvZGVjTmFtZSA9PSAiaGV2MSI7Cit9CisK
K09wdGlvbmFsPERvVmlQYXJhbWV0ZXJTZXQ+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhjb25z
dCBTdHJpbmcmIGNvZGVjU3RyaW5nKQoreworICAgIC8vIFRoZSBmb3JtYXQgb2YgdGhlIERvVmkg
Y29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpbiAiRG9sYnkgVmlzaW9uIFByb2ZpbGVzIGFuZCBM
ZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBTdHJpbmdWaWV3IGNvZGVjVmlldyhjb2RlY1N0cmlu
Zyk7CisgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNWaWV3LnNwbGl0KCcuJyk7CisgICAgYXV0
byBuZXh0RWxlbWVudCA9IGNvZGVjU3BsaXQuYmVnaW4oKTsKKyAgICBpZiAobmV4dEVsZW1lbnQg
PT0gY29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAg
IERvVmlQYXJhbWV0ZXJTZXQgcGFyYW1ldGVyczsKKworICAgIHBhcmFtZXRlcnMuY29kZWNOYW1l
ID0gY29kZWNTdHJpbmdGb3JEb1ZpQ29kZWNUeXBlKCgqbmV4dEVsZW1lbnQpLnRvU3RyaW5nKCkp
OworICAgIGlmICghcGFyYW1ldGVycy5jb2RlY05hbWUpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisKKyAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBwcm9maWxlSUQgPSAqbmV4dEVs
ZW1lbnQ7CisgICAgaWYgKCFwcm9maWxlSUQubGVuZ3RoKCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBib29sIGlzSW50ZWdyYWwgPSBmYWxzZTsKKyAgICBhdXRvIGZpcnN0
Q2hhcmFjdGVyID0gcHJvZmlsZUlEWzBdOworICAgIC8vIFByb2ZpbGUgZGVmaW5pdGlvbiBjYW4g
ZWl0aGVyIGJlIG51bWVyaWMgb3IgYWxwaGE6CisgICAgaWYgKGZpcnN0Q2hhcmFjdGVyID09ICcw
JykgeworICAgICAgICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9IHRvSW50ZWdyYWxU
eXBlPHVpbnQ4X3Q+KHByb2ZpbGVJRCwgJmlzSW50ZWdyYWwsIDEwKTsKKyAgICAgICAgaWYgKCFp
c0ludGVncmFsKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9IGVsc2Ug
eworICAgICAgICBhdXRvIGFscGhhbnVtZXJpY1Byb2ZpbGVTdHJpbmcgPSBjb2RlY1ZpZXcubGVm
dCg1ICsgcHJvZmlsZUlELmxlbmd0aCgpKS50b1N0cmluZygpOworICAgICAgICBhdXRvIHByb2Zp
bGVJRCA9IHByb2ZpbGVJREZvckFscGhhYmV0aWNEb1ZpUHJvZmlsZShhbHBoYW51bWVyaWNQcm9m
aWxlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFwcm9maWxlSUQpCisgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICBwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCA9IHBy
b2ZpbGVJRC52YWx1ZSgpOworICAgIH0KKworICAgIGlmICghaXNWYWxpZERvVmlQcm9maWxlSUQo
cGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgaWYgKCFpc1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKHBhcmFtZXRlcnMu
Yml0c3RyZWFtUHJvZmlsZUlELCBwYXJhbWV0ZXJzLmNvZGVjTmFtZSkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoKytuZXh0RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVu
ZCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBsZXZlbElEID0g
Km5leHRFbGVtZW50OworICAgIGlmICghbGV2ZWxJRC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCA9IHRvSW50
ZWdyYWxUeXBlPHVpbnQ4X3Q+KGxldmVsSUQsICZpc0ludGVncmFsLCAxMCk7CisgICAgaWYgKCFp
c0ludGVncmFsKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBtYXhp
bXVtTGV2ZWxJRCA9IG1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJp
dHN0cmVhbVByb2ZpbGVJRCk7CisgICAgaWYgKCFtYXhpbXVtTGV2ZWxJRCB8fCBwYXJhbWV0ZXJz
LmJpdHN0cmVhbUxldmVsSUQgPiBtYXhpbXVtTGV2ZWxJRC52YWx1ZSgpKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHBhcmFtZXRlcnM7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0hFVkNVdGlsaXRpZXMuaAppbmRleCBh
MjA5OTJjODQ3YTQ1YjMzNjYyYjYzYmI2NWIxYzZmMTY3NGRiYjc1Li40M2VlYTg3YWI4ZmEzODg5
ZjU0ODRlNzE3Y2YwMjYyMzRkMWIwMGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC00Miw0ICs0MiwxMiBAQCBzdHJ1Y3QgSEVW
Q1BhcmFtZXRlclNldCB7CiAKIFdFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJT
ZXQ+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZGVjU3RyaW5nKTsK
IAorc3RydWN0IERvVmlQYXJhbWV0ZXJTZXQgeworICAgIFN0cmluZyBjb2RlY05hbWU7CisgICAg
dW5zaWduZWQgc2hvcnQgYml0c3RyZWFtUHJvZmlsZUlEIHsgMCB9OworICAgIHVuc2lnbmVkIHNo
b3J0IGJpdHN0cmVhbUxldmVsSUQgeyAwIH07Cit9OworCitXRUJDT1JFX0VYUE9SVCBPcHRpb25h
bDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5n
JiBjb2RlY1N0cmluZyk7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLmgKaW5kZXggNmI1Y2YxY2Ix
ZjY2YjliZWM3MmViYmNhM2ZhYTllODBlNTc1ZDI5ZS4uZGE5MWMwNzVhZGVkZDUyZTRjNTA5ODU2
MzY1NzJlNDk1Y2UyMTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLmgKQEAgLTM0LDYgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE1lZGlhQ2FwYWJpbGl0aWVzSW5mbzsKIAog
ZXh0ZXJuIGJvb2wgdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhIRVZDUGFyYW1ldGVyU2V0JiwgTWVk
aWFDYXBhYmlsaXRpZXNJbmZvJiwgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9y
dCk7CitleHRlcm4gYm9vbCB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKERvVmlQYXJhbWV0ZXJTZXQm
LCBNZWRpYUNhcGFiaWxpdGllc0luZm8mLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJT
dXBwb3J0KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggN2JhMDZkYTJhODhk
M2NlM2ExMWRjYzQ2MTE3YjI0NWNmZjQ5ZDIzNS4uZjExMWYyODc3Yjk4ZjljODM3ZDM1NGNjODFk
YmEwMjhiM2VlOTIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzIsOCArMzIsMTAg
QEAKICNpbXBvcnQgIkhFVkNVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk1lZGlhQ2FwYWJpbGl0aWVz
SW5mby5oIgogCi0jaW1wb3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgogI2ltcG9ydCA8cGFs
L2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdU
b0ludGVnZXJDb252ZXJzaW9uLmg+CisKKyNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRMaW5rLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTIyLDYgKzEyNCwxMTYgQEAgYm9vbCB2YWxp
ZGF0ZUhFVkNQYXJhbWV0ZXJzKEhFVkNQYXJhbWV0ZXJTZXQmIHBhcmFtZXRlcnMsIE1lZGlhQ2Fw
YWJpbGl0aWVzSW5mbyYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPENN
VmlkZW9Db2RlY1R5cGU+IGNvZGVjVHlwZUZvckRvVmlDb2RlY1N0cmluZyhjb25zdCBTdHJpbmcm
IGNvZGVjU3RyaW5nKQoreworICAgIHN0YXRpYyBhdXRvIG1hcCA9IG1ha2VOZXZlckRlc3Ryb3ll
ZDxIYXNoTWFwPFN0cmluZywgQ01WaWRlb0NvZGVjVHlwZT4+KHsKKyAgICAgICAgeyAiYXZjMSIs
IGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQgfSwKKyAgICAgICAgeyAiYXZjMyIsIGtDTVZpZGVvQ29k
ZWNUeXBlX0gyNjQgfSwKKyAgICAgICAgeyAiaHZjMSIsIGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMg
fSwKKyAgICAgICAgeyAiaGV2MSIsIGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMgfSwKKyAgICB9KTsK
KworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1hcC5nZXQoKS5maW5kKGNvZGVjU3RyaW5nKTsKKyAg
ICBpZiAoZmluZFJlc3VsdCA9PSBtYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIGZpbmRSZXN1bHQtPnZhbHVlOworfQorCitzdGF0aWMgT3B0
aW9uYWw8VmVjdG9yPHVuc2lnbmVkIHNob3J0Pj4gQ0ZTdHJpbmdBcnJheVRvTnVtYmVyVmVjdG9y
KENGQXJyYXlSZWYgYXJyYXlDRikKK3sKKyAgICBpZiAoIWFycmF5Q0YgfHwgQ0ZHZXRUeXBlSUQo
YXJyYXlDRikgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgYXV0byBhcnJheU5TID0gKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcqPiop
YXJyYXlDRjsKKyAgICBWZWN0b3I8dW5zaWduZWQgc2hvcnQ+IHZhbHVlczsKKyAgICB2YWx1ZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcnJheU5TLmNvdW50KTsKKworICAgIGJvb2wgYXJlQWxs
VmFsaWROdW1iZXJzID0gdHJ1ZTsKKyAgICBbYXJyYXlOUyBlbnVtZXJhdGVPYmplY3RzVXNpbmdC
bG9jazpbJl0gKE5TU3RyaW5nKiB2YWx1ZSwgTlNVSW50ZWdlciwgQk9PTCAqc3RvcCkgeworICAg
ICAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOk5TU3RyaW5nLmNsYXNzXSkgeworICAgICAg
ICAgICAgYXJlQWxsVmFsaWROdW1iZXJzID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc3RvcCkK
KyAgICAgICAgICAgICAgICAqc3RvcCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBib29sIGlzVmFsaWROdW1iZXIgPSBmYWxzZTsKKyAgICAgICAgYXV0
byBudW1lcmljVmFsdWUgPSB0b0ludGVncmFsVHlwZTx1bnNpZ25lZCBzaG9ydD4oU3RyaW5nKHZh
bHVlKSwgJmlzVmFsaWROdW1iZXIpOworICAgICAgICBpZiAoIWlzVmFsaWROdW1iZXIpIHsKKyAg
ICAgICAgICAgIGFyZUFsbFZhbGlkTnVtYmVycyA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHN0
b3ApCisgICAgICAgICAgICAgICAgKnN0b3AgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFsdWVzLnVuY2hlY2tlZEFwcGVuZChudW1lcmljVmFsdWUp
OworICAgIH1dOworCisgICAgaWYgKCFhcmVBbGxWYWxpZE51bWJlcnMpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHZhbHVlczsKK30KKworYm9vbCB2YWxpZGF0ZURv
VmlQYXJhbWV0ZXJzKERvVmlQYXJhbWV0ZXJTZXQmIHBhcmFtZXRlcnMsIE1lZGlhQ2FwYWJpbGl0
aWVzSW5mbyYgaW5mbywgYm9vbCBoYXNBbHBoYUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCkKK3sK
KyAgICBpZiAoaGFzQWxwaGFDaGFubmVsKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoaGRyU3VwcG9ydCkgeworICAgICAgICAvLyBQbGF0Zm9ybSBzdXBwb3J0cyBIRFIgcGxheWJh
Y2sgb2YgSEVWQyBNYWluMTAgUHJvZmlsZSwgd2hpY2ggaXMgc2lnbmFsbGVkIGJ5IERvVmkgcHJv
ZmlsZXMgNCwgNSwgNywgJiA4LgorICAgICAgICBzd2l0Y2ggKHBhcmFtZXRlcnMuYml0c3RyZWFt
UHJvZmlsZUlEKSB7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgY2FzZSA1OgorICAgICAgICBj
YXNlIDc6CisgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
YXV0byBjb2RlY1R5cGUgPSBjb2RlY1R5cGVGb3JEb1ZpQ29kZWNTdHJpbmcocGFyYW1ldGVycy5j
b2RlY05hbWUpOworICAgIGlmICghY29kZWNUeXBlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlbGVjdEFuZENyZWF0ZVZpZGVvRGVjb2Rlckluc3Rh
bmNlKGNvZGVjVHlwZS52YWx1ZSgpLCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBudWxscHRyLCBudWxs
cHRyKTsKKyAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWNhbkxvYWRfVmlkZW9Ub29sYm94X1ZUQ29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0
aWVzRGljdGlvbmFyeSgpCisgICAgICAgIHx8ICFjYW5Mb2FkX1ZpZGVvVG9vbGJveF9rVlREb2xi
eVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZFByb2ZpbGVzKCkKKyAgICAgICAgfHwg
IWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3Vw
cG9ydGVkTGV2ZWxzKCkKKyAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVERvbGJ5
VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNhcGFiaWxp
dGllcyA9IGFkb3B0Q0YoVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkp
OworICAgIGlmICghY2FwYWJpbGl0aWVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBh
dXRvIHN1cHBvcnRlZFByb2ZpbGVzQ0YgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3Vw
cG9ydGVkUHJvZmlsZXMpOworICAgIGF1dG8gc3VwcG9ydGVkUHJvZmlsZXMgPSBDRlN0cmluZ0Fy
cmF5VG9OdW1iZXJWZWN0b3Ioc3VwcG9ydGVkUHJvZmlsZXNDRik7CisgICAgaWYgKCFzdXBwb3J0
ZWRQcm9maWxlcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBzdXBwb3J0ZWRM
ZXZlbHNDRiA9IChDRkFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5n
ZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZlbHMpOwor
ICAgIGF1dG8gc3VwcG9ydGVkTGV2ZWxzID0gQ0ZTdHJpbmdBcnJheVRvTnVtYmVyVmVjdG9yKHN1
cHBvcnRlZExldmVsc0NGKTsKKyAgICBpZiAoIXN1cHBvcnRlZExldmVscykKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgYXV0byBpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiA9IChDRkJvb2xl
YW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBrVlREb2xieVZp
c2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCk7CisgICAgaWYgKCFp
c0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiB8fCBDRkdldFR5cGVJRChpc0hhcmR3YXJlQWNjZWxlcmF0
ZWRDRikgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMudmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJp
dHN0cmVhbVByb2ZpbGVJRCkgfHwgIXN1cHBvcnRlZExldmVscy52YWx1ZSgpLmNvbnRhaW5zKHBh
cmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGluZm8uc3VwcG9ydGVkID0gdHJ1ZTsKKyAgICBpbmZvLnNtb290aCA9IHRydWU7CisgICAgaW5m
by5wb3dlckVmZmljaWVudCA9IENGQm9vbGVhbkdldFZhbHVlKGlzSGFyZHdhcmVBY2NlbGVyYXRl
ZENGKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShD
T0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5
Q29jb2EuY3BwCmluZGV4IGJjOTA1NmYzOWM4OTkzYWY2NjMwYTg4MDE3NTQ1NTk5NjJiNWE4YjMu
LjJlZTM4MjcwODQ5NGM1YjdhMzE2NzU5ZmRkYWRiODRmMDMyYWI5ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJh
dGlvbkZhY3RvcnlDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcApAQCAtNzEs
NyArNzEsNyBAQCB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29j
b2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjbwogICAgICAgICBpbmZvLnN1cHBvcnRl
ZCA9IHRydWU7CiAgICAgICAgIGF1dG8mIGNvZGVjID0gY29kZWNzWzBdOwogICAgICAgICBhdXRv
IHZpZGVvQ29kZWNUeXBlID0gdmlkZW9Db2RlY1R5cGVGcm9tUkZDNDI4MVR5cGUoY29kZWMpOwot
ICAgICAgICBpZiAoIXZpZGVvQ29kZWNUeXBlKSB7CisgICAgICAgIGlmICghdmlkZW9Db2RlY1R5
cGUgJiYgIShjb2RlYy5zdGFydHNXaXRoKCJkdmgxIikgfHwgY29kZWMuc3RhcnRzV2l0aCgiZHZo
ZSIpKSkgewogICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwgV1RGTW92ZShjb25maWd1cmF0aW9u
KX0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC04NSw2ICs4NSwxMiBAQCB2
b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNv
ZGluZ0NvbmZpZ3VyYXRpb24mJiBjbwogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHt7IH0sIFdU
Rk1vdmUoY29uZmlndXJhdGlvbil9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY29kZWMuc3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNv
ZGVjLnN0YXJ0c1dpdGgoImR2aGUiKSkgeworICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXJzID0g
cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKGNvZGVjKTsKKyAgICAgICAgICAgIGlmICghcGFyYW1l
dGVycyB8fCAhdmFsaWRhdGVEb1ZpUGFyYW1ldGVycyhwYXJhbWV0ZXJzLnZhbHVlKCksIGluZm8s
IGFscGhhQ2hhbm5lbCwgaGRyU3VwcG9ydGVkKSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHt7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbil9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoYWxwaGFD
aGFubmVsIHx8IGhkclN1cHBvcnRlZCkgewogICAgICAgICAgICAgICAgIGNhbGxiYWNrKHt7IH0s
IFdURk1vdmUoY29uZmlndXJhdGlvbil9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCA4MmVhMDBkM2ViOTVkM2Q5MGFhY2E5MTgzYjI2MGRlMTkxZGIyMDcyLi5lYTljMzk1
NjY2NzBkNzZlYTNmMzFiZjVmNDY0YmYzMGJmMjIxYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC01MTQyLDYgKzUxNDIsMTEgQEAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRl
clNldD4gSW50ZXJuYWxzOjpwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBj
b2QKICAgICByZXR1cm4gV2ViQ29yZTo6cGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKGNvZGVjU3Ry
aW5nKTsKIH0KIAorT3B0aW9uYWw8RG9WaVBhcmFtZXRlclNldD4gSW50ZXJuYWxzOjpwYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZykKK3sKKyAgICByZXR1
cm4gV2ViQ29yZTo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKGNvZGVjU3RyaW5nKTsKK30KKwog
YXV0byBJbnRlcm5hbHM6OmdldENvb2tpZXMoKSBjb25zdCAtPiBWZWN0b3I8Q29va2llRGF0YT4K
IHsKICAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKaW5kZXggZjliMzNhMjU4MmE0NTg4NjMxMTdjOWMzZDkzOTkzMTkzMTU4
YWZkOC4uYTNiNGFiYWU1NTg0Zjc1ZGJmY2RkZjkyZTQ2MDNiYTRkZTljYTJlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04MTYsNiArODE2LDkgQEAgcHVibGljOgogICAgIHVz
aW5nIEhFVkNQYXJhbWV0ZXJTZXQgPSBXZWJDb3JlOjpIRVZDUGFyYW1ldGVyU2V0OwogICAgIE9w
dGlvbmFsPEhFVkNQYXJhbWV0ZXJTZXQ+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb25zdCBT
dHJpbmcmIGNvZGVjU3RyaW5nKTsKIAorICAgIHVzaW5nIERvVmlQYXJhbWV0ZXJTZXQgPSBXZWJD
b3JlOjpEb1ZpUGFyYW1ldGVyU2V0OworICAgIE9wdGlvbmFsPERvVmlQYXJhbWV0ZXJTZXQ+IHBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZGVjU3RyaW5nKTsKKwogICAg
IHN0cnVjdCBDb29raWVEYXRhIHsKICAgICAgICAgU3RyaW5nIG5hbWU7CiAgICAgICAgIFN0cmlu
ZyB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCA1ZmY0NzFhZWE1
Y2RkMDI2YzBjN2UxMTI2NzUzOTRkYWE2ZGFlMjQ3Li45N2I0NDQ3YTQyMGY3YTk2YWI5ZWM0NjJm
MDZmYzdjMDRjNjE2MGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0x
MzYsNiArMTM2LDE1IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIHNlcXVlbmNlPHVu
c2lnbmVkIHNob3J0PiBjb25zdHJhaW50RmxhZ3M7CiB9OwogCitbCisgICAgRXhwb3J0TWFjcm89
V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCitd
IGRpY3Rpb25hcnkgRG9WaVBhcmFtZXRlclNldCB7CisgICAgRE9NU3RyaW5nIGNvZGVjTmFtZTsK
KyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzdHJlYW1Qcm9maWxlSUQ7CisgICAgdW5zaWduZWQgc2hv
cnQgYml0c3RyZWFtTGV2ZWxJRDsKK307CisKIFsKICAgICBFeHBvcnRNYWNybz1XRUJDT1JFX1RF
U1RTVVBQT1JUX0VYUE9SVCwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKQEAgLTc4MSw2ICs3
OTAsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsKICAgICBib29sZWFuIHN1cHBvcnRzVkNQ
RW5jb2RlcigpOwogCiAgICAgSEVWQ1BhcmFtZXRlclNldD8gcGFyc2VIRVZDQ29kZWNQYXJhbWV0
ZXJzKERPTVN0cmluZyBjb2RlY1BhcmFtZXRlcnMpOworICAgIERvVmlQYXJhbWV0ZXJTZXQ/IHBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyhET01TdHJpbmcgY29kZWNQYXJhbWV0ZXJzKTsKIAogICAg
IHNlcXVlbmNlPENvb2tpZURhdGE+IGdldENvb2tpZXMoKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGM3OTMzOWJmZmU1
MDdiOGRhZjNmMTYzMjIzMTlmZDMzOWUzMWVjZGIuLmJiNjMyNzRjMmQ0YWEzM2M3M2M2OTJkODcz
OGMxMzNjMzY5MzQyZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0xMC0xOCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgTWVkaWFDYXBhYmlsaXRp
ZXMgc3VwcG9ydCBmb3IgRG9sYnlWaXNpb24gY29kZWNzLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBDYXJsc29uLgorCisgICAgICAgICogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJz
Lmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTE4ICBSdXNzZWxsIEVwc3RlaW4gIDxyZXBzdGVpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgV0sxIF0gUkVHUkVTU0lPTiAocjI1MTI2MSk6IExh
eW91dCBUZXN0IGluc3BlY3Rvci9jb25zb2xlL3dlYmNvcmUtbG9nZ2luZy5odG1sIGlzIGNvbnNp
c3RlbnRseSBGYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS9kb3ZpLWNvZGVj
LXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1w
YXJhbWV0ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWVlYjVmZDcwY2I4MzFkNWY2OWU5
MWM3ZTc4YTgyOTdiMzlmZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
ZG92aS1jb2RlYy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitFWFBF
Q1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiYmFkLXBhcmFtZXRlciIp
ID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKCJkdmgxIikgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlD
b2RlY1BhcmFtZXRlcnMoImR2aDEuMDQuMDkiKSA9PT0gJ3sgaHZjMSwgNCwgOSB9JykgT0sKK0VY
UEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA1LjEzIikg
PT09ICd7IGh2YzEsIDUsIDEzIH0nKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlD
b2RlY1BhcmFtZXRlcnMoImR2aGUuMDcuMDkiKSA9PT0gJ3sgaGV2MSwgNywgOSB9JykgT0sKK0VY
UEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLmR0ci45Iikg
PT09ICd7IGhldjEsIDQsIDkgfScpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNv
ZGVjUGFyYW1ldGVycygiZHZoZS5zdG4uOSIpID09PSAneyBoZXYxLCA1LCA5IH0nKSBPSworRVhQ
RUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuZHRiLjkiKSA9
PT0gJ3sgaGV2MSwgNywgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29k
ZWNQYXJhbWV0ZXJzKCJkdmhlLnN0LjkiKSA9PT0gJ3sgaGV2MSwgOCwgOSB9JykgT0sKK0VYUEVD
VEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2LnNlLjUiKSA9PT0g
J3sgYXZjMywgOSwgNSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQ
YXJhbWV0ZXJzKCJkdmgxLjA2LjAxIikgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGludGVybmFs
cy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuMDMuMDEiKSA9PSAnbnVsbCcpIE9LCitF
WFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoMS4wOS4wMSIp
ID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKCJkdmF2LjA0LjAxIikgPT0gJ251bGwnKSBPSworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjA4MDYy
MWQ5ZWUxMDBhYTQ3YTFhYTg0YjZjZWVmNjVmMDU4YWRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSJ2aWRl
by10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIERvVmlQYXJh
bWV0ZXJTZXRUb1N0cmluZyhzZXQpIHsKKyAgICAgICAgaWYgKCFzZXQpCisgICAgICAgICAgICBy
ZXR1cm4gYG51bGxgOworICAgICAgICByZXR1cm4gYHsgJHtzZXQuY29kZWNOYW1lfSwgJHtzZXQu
Yml0c3RyZWFtUHJvZmlsZUlEIH0sICR7c2V0LmJpdHN0cmVhbUxldmVsSUQgfSB9YDsKKyAgICB9
CisgICAgZnVuY3Rpb24gaXNFcXVhbERvVmlQYXJhbWV0ZXJTZXQoc2V0QSwgc2V0QikgeworICAg
ICAgICByZXR1cm4gc2V0QSAmJiBzZXRCIAorICAgICAgICAgICAgJiYgc2V0QS5jb2RlY05hbWUg
PT09IHNldEIuY29kZWNOYW1lCisgICAgICAgICAgICAmJiBzZXRBLmJpdHN0cmVhbVByb2ZpbGVJ
RCA9PT0gc2V0Qi5iaXRzdHJlYW1Qcm9maWxlSUQKKyAgICAgICAgICAgICYmIHNldEEuYml0c3Ry
ZWFtTGV2ZWxJRCA9PT0gc2V0Qi5iaXRzdHJlYW1MZXZlbElECisgICAgfQorICAgIGZ1bmN0aW9u
IG1ha2VEb1ZpUGFyYW1ldGVyU2V0KGNvZGVjTmFtZSwgYml0c3RyZWFtUHJvZmlsZUlELCBiaXRz
dHJlYW1MZXZlbElEKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGNvZGVj
TmFtZTogY29kZWNOYW1lLAorICAgICAgICAgICAgYml0c3RyZWFtUHJvZmlsZUlEOiBiaXRzdHJl
YW1Qcm9maWxlSUQsCisgICAgICAgICAgICBiaXRzdHJlYW1MZXZlbElEOiBiaXRzdHJlYW1MZXZl
bElELAorICAgICAgICB9OworICAgIH0KKyAgICBmdW5jdGlvbiB0ZXN0RXhwZWN0ZWREb1ZpUGFy
YW1ldGVyU2V0KHRlc3RGdW5jU3RyaW5nLCBleHBlY3RlZCkKKyAgICB7CisgICAgICAgIGxldCBv
YnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgICAgICBsZXQgc3VjY2VzcyA9IGlz
RXF1YWxEb1ZpUGFyYW1ldGVyU2V0KG9ic2VydmVkLCBleHBlY3RlZCk7CisgICAgICAgIHJlcG9y
dEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCAnPT09JywgRG9WaVBhcmFtZXRlclNl
dFRvU3RyaW5nKGV4cGVjdGVkKSwgRG9WaVBhcmFtZXRlclNldFRvU3RyaW5nKG9ic2VydmVkKSk7
CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZXZlbnQgPT4gewor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMo
ImJhZC1wYXJhbWV0ZXIiKScsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFs
cy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aDEiKScsIG51bGwpOworICAgICAgICB0ZXN0
RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKCJkdmgxLjA0LjA5IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaHZjMScsIDQsIDkpKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9W
aUNvZGVjUGFyYW1ldGVycygiZHZoMS4wNS4xMyIpJywgbWFrZURvVmlQYXJhbWV0ZXJTZXQoJ2h2
YzEnLCA1LCAxMykpOworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRl
cm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLjA3LjA5IiknLCBtYWtlRG9WaVBh
cmFtZXRlclNldCgnaGV2MScsIDcsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFt
ZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5kdHIuOSIp
JywgbWFrZURvVmlQYXJhbWV0ZXJTZXQoJ2hldjEnLCA0LCA5KSk7CisgICAgICAgIHRlc3RFeHBl
Y3RlZERvVmlQYXJhbWV0ZXJTZXQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMo
ImR2aGUuc3RuLjkiKScsIG1ha2VEb1ZpUGFyYW1ldGVyU2V0KCdoZXYxJywgNSwgOSkpOworICAg
ICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29k
ZWNQYXJhbWV0ZXJzKCJkdmhlLmR0Yi45IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaGV2MScs
IDcsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJuYWxz
LnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5zdC45IiknLCBtYWtlRG9WaVBhcmFtZXRl
clNldCgnaGV2MScsIDgsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNl
dCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZhdi5zZS41IiknLCBtYWtl
RG9WaVBhcmFtZXRlclNldCgnYXZjMycsIDksIDUpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdp
bnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA2LjAxIiknLCBudWxsKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJz
KCJkdmhlLjAzLjAxIiknLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA5LjAxIiknLCBudWxsKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2LjA0
LjAxIiknLCBudWxsKTsKKworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSwgeyBvbmNlOiB0cnVl
IH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381435</attachid>
            <date>2019-10-21 13:19:56 -0700</date>
            <delta_ts>2019-10-21 13:37:45 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203170-20191021131954.patch</filename>
            <type>text/plain</type>
            <size>25444</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA2OWFiNmY1MWM3Mzhm
ZmY1YzJmMmIyMDhiM2Q2YTJkZjg4MjI1My4uNWI5NmE4ODM4YTZjODcxMDA3ZDg0MTU5ODg3NGJl
ZDFkMzlmMzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZWRpYUNhcGFiaWxp
dGllcyBzdXBwb3J0IGZvciBEb2xieVZpc2lvbiBjb2RlY3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdDogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0
ZXJzLmh0bWwKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyBEb2xieVZpc2lvbiAo
RG9WaSkgc3R5bGUgY29kZWMgcHJvZmlsZSBzdHJpbmdzLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2RlY1N0cmluZ0ZvckRvVmlDb2Rl
Y1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9m
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWREb1ZpUHJvZmlsZUlEKToKKyAgICAgICAg
KFdlYkNvcmU6Om1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjU3RyaW5nVG9Db2RlY1R5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q0ZTdHJpbmdBcnJheVRvTnVtYmVyVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlRG9WaVBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJh
dGlvbkNvY29hKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisK
IDIwMTktMTAtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVmYWN0b3IgQWJzdHJhY3RFdmVudExvb3Agb3V0IG9mIFdpbmRvd0V2ZW50TG9vcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwCmluZGV4IDFkNTYzNjVhN2YxMzhjZjg5MzM0NmFmMzE5OGM2NDI0NjU2NzYxYjMuLmU5MzY1
MTI2MTY3ZWE1YWViYjBlOGEwZTA5OGI3ZjcwYWFiZmJlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTc0
LDYgKzc0LDkgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgVmlkZW9Ub29sYm94LCBrVlRIRVZDRGVjb2RlckNhcGEKIFNPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVmKQogU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVmlkZW9Ub29sYm94
LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heERlY29kZUxldmVsLCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZp
ZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xl
dmVsLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNF
KFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9T
dXBwb3J0ZWRQcm9maWxlcywgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2Rl
ckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVm
KQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gs
IFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcywgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBWVFBp
eGVsQnVmZmVyQ29uZm9ybWVyUmVmKiBjb25mb3JtZXJPdXQpLCAoYWxsb2NhdG9yLCBhdHRyaWJ1
dGVzLCBjb25mb3JtZXJPdXQpKTsKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lcklzQ29uZm9ybWFudFBpeGVs
QnVmZmVyLCBCb29sZWFuLCAoVlRQaXhlbEJ1ZmZlckNvbmZvcm1lclJlZiBjb25mb3JtZXIsIENW
UGl4ZWxCdWZmZXJSZWYgcGl4QnVmKSwgKGNvbmZvcm1lciwgcGl4QnVmKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCmluZGV4
IGYxNTY1NDdhMzllMTI4OTYyZGMzMjZiNzBmYzNlM2Q1YTBlMWMxYzcuLjYyNTMzYWMzZDI3ZmY3
NTcwMmVmNjc2YmY2Mzk4MTYzYmI3NTBiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMTEwLDYgKzExMCwxMiBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVEhFVkNEZWNvZGVyUHJvZgogI2RlZmluZSBrVlRIRVZDRGVjb2RlclByb2ZpbGVD
YXBhYmlsaXR5X01heERlY29kZUxldmVsIGdldF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVEhFVkNEZWNvZGVyUHJv
ZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtW
VEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCBnZXRfVmlkZW9U
b29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCgp
CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMs
IENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1
cHBvcnRlZFByb2ZpbGVzIGdldF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2Fw
YWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNh
cGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZlbHMgZ2V0X1ZpZGVvVG9vbGJveF9r
VlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscygpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtW
VERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3
YXJlQWNjZWxlcmF0ZWQgZ2V0X1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBh
YmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lckNyZWF0
ZVdpdGhBdHRyaWJ1dGVzLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZE
aWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJSZWYqIGNvbmZv
cm1lck91dCksIChhbGxvY2F0b3IsIGF0dHJpYnV0ZXMsIGNvbmZvcm1lck91dCkpOwogI2RlZmlu
ZSBWVFBpeGVsQnVmZmVyQ29uZm9ybWVyQ3JlYXRlV2l0aEF0dHJpYnV0ZXMgc29mdExpbmtfVmlk
ZW9Ub29sYm94X1ZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApp
bmRleCAzYmUwNWY5Y2QwNWE5OTgzZTkyNGY4M2M0Y2RhMTNiZmRjMTI0YzEzLi4xYzRhYWVhMTlk
ODNlNTVmMDg3M2IzYjAxODNjNzlmYWUyNGZjMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhFVkNVdGlsaXRpZXMuaCIKIAorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC0xMTAsNCArMTEyLDEzMyBAQCBPcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0
PiBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZykKICAg
ICByZXR1cm4gcGFyYW1ldGVyczsKIH0KIAorc3RhdGljIFN0cmluZyBjb2RlY1N0cmluZ0ZvckRv
VmlDb2RlY1R5cGUoY29uc3QgU3RyaW5nJiBjb2RlYykKK3sKKyAgICB1c2luZyBNYXBUeXBlID0g
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz47CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hcFR5
cGU+IHR5cGVzID0gc3RkOjppbml0aWFsaXplcl9saXN0PE1hcFR5cGU6OktleVZhbHVlUGFpclR5
cGU+KHsKKyAgICAgICAgeyAiZHZoZSIsICJoZXYxIiB9LAorICAgICAgICB7ICJkdmgxIiwgImh2
YzEiIH0sCisgICAgICAgIHsgImR2YXYiLCAiYXZjMyIgfSwKKyAgICAgICAgeyAiZHZhMSIsICJh
dmMxIiB9CisgICAgfSk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHRzID0gdHlwZXMuZ2V0KCkuZmlu
ZChjb2RlYyk7CisgICAgaWYgKGZpbmRSZXN1bHRzID09IHR5cGVzLmdldCgpLmVuZCgpKQorICAg
ICAgICByZXR1cm4gbnVsbFN0cmluZygpOworICAgIHJldHVybiBmaW5kUmVzdWx0cy0+dmFsdWU7
Cit9CisKK3N0YXRpYyBPcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gcHJvZmlsZUlERm9yQWxwaGFi
ZXRpY0RvVmlQcm9maWxlKGNvbnN0IFN0cmluZyYgcHJvZmlsZSkKK3sKKyAgICAvLyBTZWUgVGFi
bGUgNyBvZiAiRG9sYnkgVmlzaW9uIFByb2ZpbGVzIGFuZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIK
KyAgICB1c2luZyBNYXBUeXBlID0gSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkIHNob3J0PjsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFwVHlwZT4gbWFwID0gc3RkOjppbml0aWFsaXplcl9s
aXN0PE1hcFR5cGU6OktleVZhbHVlUGFpclR5cGU+KHsKKyAgICAgICAgeyAiZHZoZS5kdHIiLCA0
IH0sCisgICAgICAgIHsgImR2aGUuc3RuIiwgNSB9LAorICAgICAgICB7ICJkdmhlLmR0YiIsIDcg
fSwKKyAgICAgICAgeyAiZHZoZS5zdCIsIDggfSwKKyAgICAgICAgeyAiZHZhdi5zZSIsIDkgfQor
ICAgIH0pOworCisgICAgYXV0byBmaW5kUmVzdWx0cyA9IG1hcC5nZXQoKS5maW5kKHByb2ZpbGUp
OworICAgIGlmIChmaW5kUmVzdWx0cyA9PSBtYXAuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGZpbmRSZXN1bHRzLT52YWx1ZTsKK30KKworc3Rh
dGljIGJvb2wgaXNWYWxpZERvVmlQcm9maWxlSUQodW5zaWduZWQgc2hvcnQgcHJvZmlsZUlEKQor
eworICAgIHN3aXRjaCAocHJvZmlsZUlEKSB7CisgICAgY2FzZSA0OgorICAgIGNhc2UgNToKKyAg
ICBjYXNlIDc6CisgICAgY2FzZSA4OgorICAgIGNhc2UgOToKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdGlj
IE9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBtYXhpbXVtTGV2ZWxJREZvckRvVmlQcm9maWxlSUQo
dW5zaWduZWQgc2hvcnQgcHJvZmlsZUlEKQoreworICAgIC8vIFNlZSBTZWN0aW9uIDQuMSBvZiAi
RG9sYnkgVmlzaW9uIFByb2ZpbGVzIGFuZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBzd2l0
Y2ggKHByb2ZpbGVJRCkgeworICAgIGNhc2UgNDogcmV0dXJuIDk7CisgICAgY2FzZSA1OiByZXR1
cm4gMTM7CisgICAgY2FzZSA3OiByZXR1cm4gOTsKKyAgICBjYXNlIDg6IHJldHVybiAxMzsKKyAg
ICBjYXNlIDk6IHJldHVybiA1OworICAgIGRlZmF1bHQ6IHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgfQorfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKHVuc2ln
bmVkIHNob3J0IHByb2ZpbGVJRCwgY29uc3QgU3RyaW5nJiBjb2RlY05hbWUpCit7CisgICAgaWYg
KHByb2ZpbGVJRCA9PSA5KQorICAgICAgICByZXR1cm4gY29kZWNOYW1lID09ICJhdmMxIiB8fCBj
b2RlY05hbWUgPT0gImF2YzMiOworICAgIHJldHVybiBjb2RlY05hbWUgPT0gImh2YzEiIHx8IGNv
ZGVjTmFtZSA9PSAiaGV2MSI7Cit9CisKK09wdGlvbmFsPERvVmlQYXJhbWV0ZXJTZXQ+IHBhcnNl
RG9WaUNvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZGVjU3RyaW5nKQoreworICAgIC8v
IFRoZSBmb3JtYXQgb2YgdGhlIERvVmkgY29kZWMgc3RyaW5nIGlzIHNwZWNpZmllZCBpbiAiRG9s
YnkgVmlzaW9uIFByb2ZpbGVzIGFuZCBMZXZlbHMgVmVyc2lvbiAxLjMuMiIKKyAgICBTdHJpbmdW
aWV3IGNvZGVjVmlldyhjb2RlY1N0cmluZyk7CisgICAgYXV0byBjb2RlY1NwbGl0ID0gY29kZWNW
aWV3LnNwbGl0KCcuJyk7CisgICAgYXV0byBuZXh0RWxlbWVudCA9IGNvZGVjU3BsaXQuYmVnaW4o
KTsKKyAgICBpZiAobmV4dEVsZW1lbnQgPT0gY29kZWNTcGxpdC5lbmQoKSkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKworICAgIERvVmlQYXJhbWV0ZXJTZXQgcGFyYW1ldGVyczsKKwor
ICAgIHBhcmFtZXRlcnMuY29kZWNOYW1lID0gY29kZWNTdHJpbmdGb3JEb1ZpQ29kZWNUeXBlKCgq
bmV4dEVsZW1lbnQpLnRvU3RyaW5nKCkpOworICAgIGlmICghcGFyYW1ldGVycy5jb2RlY05hbWUp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoKytuZXh0RWxlbWVudCA9
PSBjb2RlY1NwbGl0LmVuZCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
YXV0byBwcm9maWxlSUQgPSAqbmV4dEVsZW1lbnQ7CisgICAgaWYgKCFwcm9maWxlSUQubGVuZ3Ro
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBib29sIGlzSW50ZWdyYWwg
PSBmYWxzZTsKKyAgICBhdXRvIGZpcnN0Q2hhcmFjdGVyID0gcHJvZmlsZUlEWzBdOworICAgIC8v
IFByb2ZpbGUgZGVmaW5pdGlvbiBjYW4gZWl0aGVyIGJlIG51bWVyaWMgb3IgYWxwaGE6CisgICAg
aWYgKGZpcnN0Q2hhcmFjdGVyID09ICcwJykgeworICAgICAgICBwYXJhbWV0ZXJzLmJpdHN0cmVh
bVByb2ZpbGVJRCA9IHRvSW50ZWdyYWxUeXBlPHVpbnQ4X3Q+KHByb2ZpbGVJRCwgJmlzSW50ZWdy
YWwsIDEwKTsKKyAgICAgICAgaWYgKCFpc0ludGVncmFsKQorICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICB9IGVsc2UgeworICAgICAgICBhdXRvIGFscGhhbnVtZXJpY1Byb2Zp
bGVTdHJpbmcgPSBjb2RlY1ZpZXcubGVmdCg1ICsgcHJvZmlsZUlELmxlbmd0aCgpKS50b1N0cmlu
ZygpOworICAgICAgICBhdXRvIHByb2ZpbGVJRCA9IHByb2ZpbGVJREZvckFscGhhYmV0aWNEb1Zp
UHJvZmlsZShhbHBoYW51bWVyaWNQcm9maWxlU3RyaW5nKTsKKyAgICAgICAgaWYgKCFwcm9maWxl
SUQpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICBwYXJhbWV0ZXJz
LmJpdHN0cmVhbVByb2ZpbGVJRCA9IHByb2ZpbGVJRC52YWx1ZSgpOworICAgIH0KKworICAgIGlm
ICghaXNWYWxpZERvVmlQcm9maWxlSUQocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgaWYgKCFpc1ZhbGlkUHJvZmlsZUlE
Rm9yQ29kZWNOYW1lKHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlELCBwYXJhbWV0ZXJzLmNv
ZGVjTmFtZSkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBpZiAoKytuZXh0
RWxlbWVudCA9PSBjb2RlY1NwbGl0LmVuZCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgYXV0byBsZXZlbElEID0gKm5leHRFbGVtZW50OworICAgIGlmICghbGV2ZWxJRC5s
ZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHBhcmFtZXRlcnMu
Yml0c3RyZWFtTGV2ZWxJRCA9IHRvSW50ZWdyYWxUeXBlPHVpbnQ4X3Q+KGxldmVsSUQsICZpc0lu
dGVncmFsLCAxMCk7CisgICAgaWYgKCFpc0ludGVncmFsKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgYXV0byBtYXhpbXVtTGV2ZWxJRCA9IG1heGltdW1MZXZlbElERm9yRG9W
aVByb2ZpbGVJRChwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCk7CisgICAgaWYgKCFtYXhp
bXVtTGV2ZWxJRCB8fCBwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVsSUQgPiBtYXhpbXVtTGV2ZWxJ
RC52YWx1ZSgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIHBh
cmFtZXRlcnM7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0hFVkNVdGlsaXRpZXMuaAppbmRleCBhMjA5OTJjODQ3YTQ1YjMzNjYyYjYzYmI2NWIxYzZmMTY3
NGRiYjc1Li40M2VlYTg3YWI4ZmEzODg5ZjU0ODRlNzE3Y2YwMjYyMzRkMWIwMGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCkBAIC00
Miw0ICs0MiwxMiBAQCBzdHJ1Y3QgSEVWQ1BhcmFtZXRlclNldCB7CiAKIFdFQkNPUkVfRVhQT1JU
IE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJTZXQ+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb25z
dCBTdHJpbmcmIGNvZGVjU3RyaW5nKTsKIAorc3RydWN0IERvVmlQYXJhbWV0ZXJTZXQgeworICAg
IFN0cmluZyBjb2RlY05hbWU7CisgICAgdW5zaWduZWQgc2hvcnQgYml0c3RyZWFtUHJvZmlsZUlE
IHsgMCB9OworICAgIHVuc2lnbmVkIHNob3J0IGJpdHN0cmVhbUxldmVsSUQgeyAwIH07Cit9Owor
CitXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBwYXJzZURvVmlDb2Rl
Y1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2RlY1N0cmluZyk7CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2Nv
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGll
c0NvY29hLmgKaW5kZXggNmI1Y2YxY2IxZjY2YjliZWM3MmViYmNhM2ZhYTllODBlNTc1ZDI5ZS4u
ZGE5MWMwNzVhZGVkZDUyZTRjNTA5ODU2MzY1NzJlNDk1Y2UyMTIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGll
c0NvY29hLmgKQEAgLTM0LDYgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RydWN0IE1l
ZGlhQ2FwYWJpbGl0aWVzSW5mbzsKIAogZXh0ZXJuIGJvb2wgdmFsaWRhdGVIRVZDUGFyYW1ldGVy
cyhIRVZDUGFyYW1ldGVyU2V0JiwgTWVkaWFDYXBhYmlsaXRpZXNJbmZvJiwgYm9vbCBoYXNBbHBo
YUNoYW5uZWwsIGJvb2wgaGRyU3VwcG9ydCk7CitleHRlcm4gYm9vbCB2YWxpZGF0ZURvVmlQYXJh
bWV0ZXJzKERvVmlQYXJhbWV0ZXJTZXQmLCBNZWRpYUNhcGFiaWxpdGllc0luZm8mLCBib29sIGhh
c0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29j
b2EubW0KaW5kZXggN2JhMDZkYTJhODhkM2NlM2ExMWRjYzQ2MTE3YjI0NWNmZjQ5ZDIzNS4uZjEx
MWYyODc3Yjk4ZjljODM3ZDM1NGNjODFkYmEwMjhiM2VlOTIzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXND
b2NvYS5tbQpAQCAtMzIsOCArMzIsMTAgQEAKICNpbXBvcnQgIkhFVkNVdGlsaXRpZXMuaCIKICNp
bXBvcnQgIk1lZGlhQ2FwYWJpbGl0aWVzSW5mby5oIgogCi0jaW1wb3J0ICJWaWRlb1Rvb2xib3hT
b2Z0TGluay5oIgogI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJzaW9uLmg+CisKKyNpbXBvcnQg
IlZpZGVvVG9vbGJveFNvZnRMaW5rLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTIy
LDYgKzEyNCwxMTYgQEAgYm9vbCB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKEhFVkNQYXJhbWV0ZXJT
ZXQmIHBhcmFtZXRlcnMsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RhdGljIE9wdGlvbmFsPENNVmlkZW9Db2RlY1R5cGU+IGNvZGVjVHlwZUZvckRvVmlD
b2RlY1N0cmluZyhjb25zdCBTdHJpbmcmIGNvZGVjU3RyaW5nKQoreworICAgIHN0YXRpYyBhdXRv
IG1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFN0cmluZywgQ01WaWRlb0NvZGVjVHlw
ZT4+KHsKKyAgICAgICAgeyAiYXZjMSIsIGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQgfSwKKyAgICAg
ICAgeyAiYXZjMyIsIGtDTVZpZGVvQ29kZWNUeXBlX0gyNjQgfSwKKyAgICAgICAgeyAiaHZjMSIs
IGtDTVZpZGVvQ29kZWNUeXBlX0hFVkMgfSwKKyAgICAgICAgeyAiaGV2MSIsIGtDTVZpZGVvQ29k
ZWNUeXBlX0hFVkMgfSwKKyAgICB9KTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1hcC5nZXQo
KS5maW5kKGNvZGVjU3RyaW5nKTsKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtYXAuZ2V0KCkuZW5k
KCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIGZpbmRSZXN1bHQt
PnZhbHVlOworfQorCitzdGF0aWMgT3B0aW9uYWw8VmVjdG9yPHVuc2lnbmVkIHNob3J0Pj4gQ0ZT
dHJpbmdBcnJheVRvTnVtYmVyVmVjdG9yKENGQXJyYXlSZWYgYXJyYXlDRikKK3sKKyAgICBpZiAo
IWFycmF5Q0YgfHwgQ0ZHZXRUeXBlSUQoYXJyYXlDRikgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgYXV0byBhcnJheU5TID0gKF9fYnJp
ZGdlIE5TQXJyYXk8TlNTdHJpbmcqPiopYXJyYXlDRjsKKyAgICBWZWN0b3I8dW5zaWduZWQgc2hv
cnQ+IHZhbHVlczsKKyAgICB2YWx1ZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcnJheU5TLmNv
dW50KTsKKworICAgIGJvb2wgYXJlQWxsVmFsaWROdW1iZXJzID0gdHJ1ZTsKKyAgICBbYXJyYXlO
UyBlbnVtZXJhdGVPYmplY3RzVXNpbmdCbG9jazpbJl0gKE5TU3RyaW5nKiB2YWx1ZSwgTlNVSW50
ZWdlciwgQk9PTCAqc3RvcCkgeworICAgICAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOk5T
U3RyaW5nLmNsYXNzXSkgeworICAgICAgICAgICAgYXJlQWxsVmFsaWROdW1iZXJzID0gZmFsc2U7
CisgICAgICAgICAgICBpZiAoc3RvcCkKKyAgICAgICAgICAgICAgICAqc3RvcCA9IHRydWU7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBib29sIGlzVmFsaWROdW1i
ZXIgPSBmYWxzZTsKKyAgICAgICAgYXV0byBudW1lcmljVmFsdWUgPSB0b0ludGVncmFsVHlwZTx1
bnNpZ25lZCBzaG9ydD4oU3RyaW5nKHZhbHVlKSwgJmlzVmFsaWROdW1iZXIpOworICAgICAgICBp
ZiAoIWlzVmFsaWROdW1iZXIpIHsKKyAgICAgICAgICAgIGFyZUFsbFZhbGlkTnVtYmVycyA9IGZh
bHNlOworICAgICAgICAgICAgaWYgKHN0b3ApCisgICAgICAgICAgICAgICAgKnN0b3AgPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFsdWVzLnVuY2hl
Y2tlZEFwcGVuZChudW1lcmljVmFsdWUpOworICAgIH1dOworCisgICAgaWYgKCFhcmVBbGxWYWxp
ZE51bWJlcnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHZhbHVl
czsKK30KKworYm9vbCB2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKERvVmlQYXJhbWV0ZXJTZXQmIHBh
cmFtZXRlcnMsIE1lZGlhQ2FwYWJpbGl0aWVzSW5mbyYgaW5mbywgYm9vbCBoYXNBbHBoYUNoYW5u
ZWwsIGJvb2wgaGRyU3VwcG9ydCkKK3sKKyAgICBpZiAoaGFzQWxwaGFDaGFubmVsKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaGRyU3VwcG9ydCkgeworICAgICAgICAvLyBQbGF0
Zm9ybSBzdXBwb3J0cyBIRFIgcGxheWJhY2sgb2YgSEVWQyBNYWluMTAgUHJvZmlsZSwgd2hpY2gg
aXMgc2lnbmFsbGVkIGJ5IERvVmkgcHJvZmlsZXMgNCwgNSwgNywgJiA4LgorICAgICAgICBzd2l0
Y2ggKHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEKSB7CisgICAgICAgIGNhc2UgNDoKKyAg
ICAgICAgY2FzZSA1OgorICAgICAgICBjYXNlIDc6CisgICAgICAgIGNhc2UgODoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgYXV0byBjb2RlY1R5cGUgPSBjb2RlY1R5cGVGb3JEb1Zp
Q29kZWNTdHJpbmcocGFyYW1ldGVycy5jb2RlY05hbWUpOworICAgIGlmICghY29kZWNUeXBlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBWVFNlbGVjdEFu
ZENyZWF0ZVZpZGVvRGVjb2Rlckluc3RhbmNlKGNvZGVjVHlwZS52YWx1ZSgpLCBrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBudWxscHRyLCBudWxscHRyKTsKKyAgICBpZiAoc3RhdHVzICE9IG5vRXJyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWNhbkxvYWRfVmlkZW9Ub29sYm94X1ZU
Q29weUhFVkNEZWNvZGVyQ2FwYWJpbGl0aWVzRGljdGlvbmFyeSgpCisgICAgICAgIHx8ICFjYW5M
b2FkX1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRl
ZFByb2ZpbGVzKCkKKyAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVERvbGJ5Vmlz
aW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzKCkKKyAgICAgICAgfHwgIWNhbkxv
YWRfVmlkZW9Ub29sYm94X2tWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2Fy
ZUFjY2VsZXJhdGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNhcGFiaWxpdGllcyA9IGFkb3B0Q0YoVlRDb3B5SEVWQ0RlY29kZXJD
YXBhYmlsaXRpZXNEaWN0aW9uYXJ5KCkpOworICAgIGlmICghY2FwYWJpbGl0aWVzKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHN1cHBvcnRlZFByb2ZpbGVzQ0YgPSAoQ0ZBcnJh
eVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVERvbGJ5Vmlz
aW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMpOworICAgIGF1dG8gc3VwcG9y
dGVkUHJvZmlsZXMgPSBDRlN0cmluZ0FycmF5VG9OdW1iZXJWZWN0b3Ioc3VwcG9ydGVkUHJvZmls
ZXNDRik7CisgICAgaWYgKCFzdXBwb3J0ZWRQcm9maWxlcykKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgYXV0byBzdXBwb3J0ZWRMZXZlbHNDRiA9IChDRkFycmF5UmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJp
bGl0eV9TdXBwb3J0ZWRMZXZlbHMpOworICAgIGF1dG8gc3VwcG9ydGVkTGV2ZWxzID0gQ0ZTdHJp
bmdBcnJheVRvTnVtYmVyVmVjdG9yKHN1cHBvcnRlZExldmVsc0NGKTsKKyAgICBpZiAoIXN1cHBv
cnRlZExldmVscykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYXV0byBpc0hhcmR3YXJl
QWNjZWxlcmF0ZWRDRiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJp
bGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVB
Y2NlbGVyYXRlZCk7CisgICAgaWYgKCFpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiB8fCBDRkdldFR5
cGVJRChpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRikgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMudmFsdWUo
KS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCkgfHwgIXN1cHBvcnRlZExl
dmVscy52YWx1ZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGluZm8uc3VwcG9ydGVkID0gdHJ1ZTsKKyAgICBpbmZv
LnNtb290aCA9IHRydWU7CisgICAgaW5mby5wb3dlckVmZmljaWVudCA9IENGQm9vbGVhbkdldFZh
bHVlKGlzSGFyZHdhcmVBY2NlbGVyYXRlZENGKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9
CiAKICNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlD
b2NvYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9NZWRpYUVu
Z2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCmluZGV4IGJjOTA1NmYzOWM4OTkzYWY2
NjMwYTg4MDE3NTQ1NTk5NjJiNWE4YjMuLjJlZTM4MjcwODQ5NGM1YjdhMzE2NzU5ZmRkYWRiODRm
MDMyYWI5ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9u
RmFjdG9yeUNvY29hLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIGNyZWF0ZU1lZGlhUGxheWVy
RGVjb2RpbmdDb25maWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBj
bwogICAgICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAgICAgICAgIGF1dG8mIGNvZGVjID0g
Y29kZWNzWzBdOwogICAgICAgICBhdXRvIHZpZGVvQ29kZWNUeXBlID0gdmlkZW9Db2RlY1R5cGVG
cm9tUkZDNDI4MVR5cGUoY29kZWMpOwotICAgICAgICBpZiAoIXZpZGVvQ29kZWNUeXBlKSB7Cisg
ICAgICAgIGlmICghdmlkZW9Db2RlY1R5cGUgJiYgIShjb2RlYy5zdGFydHNXaXRoKCJkdmgxIikg
fHwgY29kZWMuc3RhcnRzV2l0aCgiZHZoZSIpKSkgewogICAgICAgICAgICAgY2FsbGJhY2soe3sg
fSwgV1RGTW92ZShjb25maWd1cmF0aW9uKX0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC04NSw2ICs4NSwxMiBAQCB2b2lkIGNyZWF0ZU1lZGlhUGxheWVyRGVjb2RpbmdDb25m
aWd1cmF0aW9uQ29jb2EoTWVkaWFEZWNvZGluZ0NvbmZpZ3VyYXRpb24mJiBjbwogICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHt7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbil9KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoY29kZWMu
c3RhcnRzV2l0aCgiZHZoMSIpIHx8IGNvZGVjLnN0YXJ0c1dpdGgoImR2aGUiKSkgeworICAgICAg
ICAgICAgYXV0byBwYXJhbWV0ZXJzID0gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKGNvZGVjKTsK
KyAgICAgICAgICAgIGlmICghcGFyYW1ldGVycyB8fCAhdmFsaWRhdGVEb1ZpUGFyYW1ldGVycyhw
YXJhbWV0ZXJzLnZhbHVlKCksIGluZm8sIGFscGhhQ2hhbm5lbCwgaGRyU3VwcG9ydGVkKSkgewor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHt7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbil9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBpZiAoYWxwaGFDaGFubmVsIHx8IGhkclN1cHBvcnRlZCkgewogICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHt7IH0sIFdURk1vdmUoY29uZmlndXJhdGlvbil9KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA4MmVhMDBkM2ViOTVkM2Q5MGFhY2E5MTgz
YjI2MGRlMTkxZGIyMDcyLi5lYTljMzk1NjY2NzBkNzZlYTNmMzFiZjVmNDY0YmYzMGJmMjIxYjYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC01MTQyLDYgKzUxNDIsMTEg
QEAgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlclNldD4gSW50ZXJuYWxzOjpwYXJzZUhFVkNDb2RlY1Bh
cmFtZXRlcnMoY29uc3QgU3RyaW5nJiBjb2QKICAgICByZXR1cm4gV2ViQ29yZTo6cGFyc2VIRVZD
Q29kZWNQYXJhbWV0ZXJzKGNvZGVjU3RyaW5nKTsKIH0KIAorT3B0aW9uYWw8RG9WaVBhcmFtZXRl
clNldD4gSW50ZXJuYWxzOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoY29uc3QgU3RyaW5nJiBj
b2RlY1N0cmluZykKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6cGFyc2VEb1ZpQ29kZWNQYXJhbWV0
ZXJzKGNvZGVjU3RyaW5nKTsKK30KKwogYXV0byBJbnRlcm5hbHM6OmdldENvb2tpZXMoKSBjb25z
dCAtPiBWZWN0b3I8Q29va2llRGF0YT4KIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IGNvbnRleHRE
b2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZjliMzNhMjU4MmE0
NTg4NjMxMTdjOWMzZDkzOTkzMTkzMTU4YWZkOC4uYTNiNGFiYWU1NTg0Zjc1ZGJmY2RkZjkyZTQ2
MDNiYTRkZTljYTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC04MTYsNiAr
ODE2LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEhFVkNQYXJhbWV0ZXJTZXQgPSBXZWJDb3JlOjpI
RVZDUGFyYW1ldGVyU2V0OwogICAgIE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJTZXQ+IHBhcnNlSEVW
Q0NvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZGVjU3RyaW5nKTsKIAorICAgIHVzaW5n
IERvVmlQYXJhbWV0ZXJTZXQgPSBXZWJDb3JlOjpEb1ZpUGFyYW1ldGVyU2V0OworICAgIE9wdGlv
bmFsPERvVmlQYXJhbWV0ZXJTZXQ+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJp
bmcmIGNvZGVjU3RyaW5nKTsKKwogICAgIHN0cnVjdCBDb29raWVEYXRhIHsKICAgICAgICAgU3Ry
aW5nIG5hbWU7CiAgICAgICAgIFN0cmluZyB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCA1ZmY0NzFhZWE1Y2RkMDI2YzBjN2UxMTI2NzUzOTRkYWE2ZGFlMjQ3Li45
N2I0NDQ3YTQyMGY3YTk2YWI5ZWM0NjJmMDZmYzdjMDRjNjE2MGNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC0xMzYsNiArMTM2LDE1IEBAIGVudW0gQ29tcG9zaXRpbmdQ
b2xpY3kgewogICAgIHNlcXVlbmNlPHVuc2lnbmVkIHNob3J0PiBjb25zdHJhaW50RmxhZ3M7CiB9
OwogCitbCisgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9URVNUU1VQUE9SVF9FWFBPUlQsCisgICAg
SlNHZW5lcmF0ZVRvSlNPYmplY3QsCitdIGRpY3Rpb25hcnkgRG9WaVBhcmFtZXRlclNldCB7Cisg
ICAgRE9NU3RyaW5nIGNvZGVjTmFtZTsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRzdHJlYW1Qcm9m
aWxlSUQ7CisgICAgdW5zaWduZWQgc2hvcnQgYml0c3RyZWFtTGV2ZWxJRDsKK307CisKIFsKICAg
ICBFeHBvcnRNYWNybz1XRUJDT1JFX1RFU1RTVVBQT1JUX0VYUE9SVCwKICAgICBKU0dlbmVyYXRl
VG9KU09iamVjdCwKQEAgLTc4MSw2ICs3OTAsNyBAQCBlbnVtIENvbXBvc2l0aW5nUG9saWN5IHsK
ICAgICBib29sZWFuIHN1cHBvcnRzVkNQRW5jb2RlcigpOwogCiAgICAgSEVWQ1BhcmFtZXRlclNl
dD8gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKERPTVN0cmluZyBjb2RlY1BhcmFtZXRlcnMpOwor
ICAgIERvVmlQYXJhbWV0ZXJTZXQ/IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhET01TdHJpbmcg
Y29kZWNQYXJhbWV0ZXJzKTsKIAogICAgIHNlcXVlbmNlPENvb2tpZURhdGE+IGdldENvb2tpZXMo
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGM3OTMzOWJmZmU1MDdiOGRhZjNmMTYzMjIzMTlmZDMzOWUzMWVjZGIuLmJi
NjMyNzRjMmQ0YWEzM2M3M2M2OTJkODczOGMxMzNjMzY5MzQyZTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxOS0xMC0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgTWVkaWFDYXBhYmlsaXRpZXMgc3VwcG9ydCBmb3IgRG9sYnlWaXNpb24gY29kZWNz
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMTcw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogbWVkaWEv
ZG92aS1jb2RlYy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLmh0bWw6IEFkZGVkLgorCiAyMDE5LTEwLTE4ICBSdXNz
ZWxsIEVwc3RlaW4gIDxyZXBzdGVpbkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgV0sxIF0g
UkVHUkVTU0lPTiAocjI1MTI2MSk6IExheW91dCBUZXN0IGluc3BlY3Rvci9jb25zb2xlL3dlYmNv
cmUtbG9nZ2luZy5odG1sIGlzIGNvbnNpc3RlbnRseSBGYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li43OWVlYjVmZDcwY2I4MzFkNWY2OWU5MWM3ZTc4YTgyOTdiMzlmZGI1Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE2IEBACitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFy
YW1ldGVycygiYmFkLXBhcmFtZXRlciIpID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5h
bHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxIikgPT0gJ251bGwnKSBPSworRVhQRUNU
RUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aDEuMDQuMDkiKSA9PT0g
J3sgaHZjMSwgNCwgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQ
YXJhbWV0ZXJzKCJkdmgxLjA1LjEzIikgPT09ICd7IGh2YzEsIDUsIDEzIH0nKSBPSworRVhQRUNU
RUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuMDcuMDkiKSA9PT0g
J3sgaGV2MSwgNywgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQ
YXJhbWV0ZXJzKCJkdmhlLmR0ci45IikgPT09ICd7IGhldjEsIDQsIDkgfScpIE9LCitFWFBFQ1RF
RCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5zdG4uOSIpID09PSAn
eyBoZXYxLCA1LCA5IH0nKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1Bh
cmFtZXRlcnMoImR2aGUuZHRiLjkiKSA9PT0gJ3sgaGV2MSwgNywgOSB9JykgT0sKK0VYUEVDVEVE
IChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLnN0LjkiKSA9PT0gJ3sg
aGV2MSwgOCwgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJh
bWV0ZXJzKCJkdmF2LnNlLjUiKSA9PT0gJ3sgYXZjMywgOSwgNSB9JykgT0sKK0VYUEVDVEVEIChp
bnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA2LjAxIikgPT0gJ251bGwn
KSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUu
MDMuMDEiKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVj
UGFyYW1ldGVycygiZHZoMS4wOS4wMSIpID09ICdudWxsJykgT0sKK0VYUEVDVEVEIChpbnRlcm5h
bHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2LjA0LjAxIikgPT0gJ251bGwnKSBPSwor
RU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1w
YXJhbWV0ZXJzLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNjA4MDYyMWQ5ZWUxMDBhYTQ3YTFhYTg0YjZjZWVmNjVmMDU4YWRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0
ZXJzLmh0bWwKQEAgLTAsMCArMSw1MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgIGZ1bmN0aW9uIERvVmlQYXJhbWV0ZXJTZXRUb1N0cmluZyhzZXQpIHsKKyAgICAgICAg
aWYgKCFzZXQpCisgICAgICAgICAgICByZXR1cm4gYG51bGxgOworICAgICAgICByZXR1cm4gYHsg
JHtzZXQuY29kZWNOYW1lfSwgJHtzZXQuYml0c3RyZWFtUHJvZmlsZUlEIH0sICR7c2V0LmJpdHN0
cmVhbUxldmVsSUQgfSB9YDsKKyAgICB9CisgICAgZnVuY3Rpb24gaXNFcXVhbERvVmlQYXJhbWV0
ZXJTZXQoc2V0QSwgc2V0QikgeworICAgICAgICByZXR1cm4gc2V0QSAmJiBzZXRCIAorICAgICAg
ICAgICAgJiYgc2V0QS5jb2RlY05hbWUgPT09IHNldEIuY29kZWNOYW1lCisgICAgICAgICAgICAm
JiBzZXRBLmJpdHN0cmVhbVByb2ZpbGVJRCA9PT0gc2V0Qi5iaXRzdHJlYW1Qcm9maWxlSUQKKyAg
ICAgICAgICAgICYmIHNldEEuYml0c3RyZWFtTGV2ZWxJRCA9PT0gc2V0Qi5iaXRzdHJlYW1MZXZl
bElECisgICAgfQorICAgIGZ1bmN0aW9uIG1ha2VEb1ZpUGFyYW1ldGVyU2V0KGNvZGVjTmFtZSwg
Yml0c3RyZWFtUHJvZmlsZUlELCBiaXRzdHJlYW1MZXZlbElEKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIGNvZGVjTmFtZTogY29kZWNOYW1lLAorICAgICAgICAgICAgYml0
c3RyZWFtUHJvZmlsZUlEOiBiaXRzdHJlYW1Qcm9maWxlSUQsCisgICAgICAgICAgICBiaXRzdHJl
YW1MZXZlbElEOiBiaXRzdHJlYW1MZXZlbElELAorICAgICAgICB9OworICAgIH0KKyAgICBmdW5j
dGlvbiB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KHRlc3RGdW5jU3RyaW5nLCBleHBlY3Rl
ZCkKKyAgICB7CisgICAgICAgIGxldCBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOwor
ICAgICAgICBsZXQgc3VjY2VzcyA9IGlzRXF1YWxEb1ZpUGFyYW1ldGVyU2V0KG9ic2VydmVkLCBl
eHBlY3RlZCk7CisgICAgICAgIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5n
LCAnPT09JywgRG9WaVBhcmFtZXRlclNldFRvU3RyaW5nKGV4cGVjdGVkKSwgRG9WaVBhcmFtZXRl
clNldFRvU3RyaW5nKG9ic2VydmVkKSk7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdsb2FkJywgZXZlbnQgPT4geworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5w
YXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImJhZC1wYXJhbWV0ZXIiKScsIG51bGwpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aDEi
KScsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5h
bHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA0LjA5IiknLCBtYWtlRG9WaVBhcmFt
ZXRlclNldCgnaHZjMScsIDQsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRl
clNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoMS4wNS4xMyIpJywg
bWFrZURvVmlQYXJhbWV0ZXJTZXQoJ2h2YzEnLCA1LCAxMykpOworICAgICAgICB0ZXN0RXhwZWN0
ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJk
dmhlLjA3LjA5IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaGV2MScsIDcsIDkpKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVj
UGFyYW1ldGVycygiZHZoZS5kdHIuOSIpJywgbWFrZURvVmlQYXJhbWV0ZXJTZXQoJ2hldjEnLCA0
LCA5KSk7CisgICAgICAgIHRlc3RFeHBlY3RlZERvVmlQYXJhbWV0ZXJTZXQoJ2ludGVybmFscy5w
YXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuc3RuLjkiKScsIG1ha2VEb1ZpUGFyYW1ldGVy
U2V0KCdoZXYxJywgNSwgOSkpOworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0
KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLmR0Yi45IiknLCBtYWtl
RG9WaVBhcmFtZXRlclNldCgnaGV2MScsIDcsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9W
aVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5z
dC45IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaGV2MScsIDgsIDkpKTsKKyAgICAgICAgdGVz
dEV4cGVjdGVkRG9WaVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1l
dGVycygiZHZhdi5zZS41IiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnYXZjMycsIDksIDUpKTsK
KyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJz
KCJkdmgxLjA2LjAxIiknLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMu
cGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLjAzLjAxIiknLCBudWxsKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA5
LjAxIiknLCBudWxsKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCdpbnRlcm5hbHMucGFyc2VEb1Zp
Q29kZWNQYXJhbWV0ZXJzKCJkdmF2LjA0LjAxIiknLCBudWxsKTsKKworICAgICAgICBlbmRUZXN0
KCk7CisgICAgfSwgeyBvbmNlOiB0cnVlIH0pOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381441</attachid>
            <date>2019-10-21 13:37:46 -0700</date>
            <delta_ts>2019-10-21 16:47:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-203170-20191021133745.patch</filename>
            <type>text/plain</type>
            <size>25470</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA2OWFiNmY1MWM3Mzhm
ZmY1YzJmMmIyMDhiM2Q2YTJkZjg4MjI1My4uNWI5NmE4ODM4YTZjODcxMDA3ZDg0MTU5ODg3NGJl
ZDFkMzlmMzhjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE5LTEwLTE4ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZWRpYUNhcGFiaWxp
dGllcyBzdXBwb3J0IGZvciBEb2xieVZpc2lvbiBjb2RlY3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzAKKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIENhcmxzb24uCisKKyAgICAgICAgVGVzdDogbWVkaWEvZG92aS1jb2RlYy1wYXJhbWV0
ZXJzLmh0bWwKKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgcGFyc2luZyBEb2xieVZpc2lvbiAo
RG9WaSkgc3R5bGUgY29kZWMgcHJvZmlsZSBzdHJpbmdzLgorCisgICAgICAgICogcGxhdGZvcm0v
Y29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29h
L1ZpZGVvVG9vbGJveFNvZnRMaW5rLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2RlY1N0cmluZ0ZvckRvVmlDb2Rl
Y1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6cHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9m
aWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWREb1ZpUHJvZmlsZUlEKToKKyAgICAgICAg
KFdlYkNvcmU6Om1heGltdW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRCk6CisgICAgICAgIChXZWJD
b3JlOjppc1ZhbGlkUHJvZmlsZUlERm9yQ29kZWNOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlRG9WaUNvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSEVW
Q1V0aWxpdGllcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGls
aXRpZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNvZGVjU3RyaW5nVG9Db2RlY1R5cGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6Q0ZTdHJpbmdBcnJheVRvTnVtYmVyVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlRG9WaVBhcmFtZXRlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNZWRpYVBsYXllckRlY29kaW5nQ29uZmlndXJh
dGlvbkNvY29hKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnRlcm5hbHM6OnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisK
IDIwMTktMTAtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmVmYWN0b3IgQWJzdHJhY3RFdmVudExvb3Agb3V0IG9mIFdpbmRvd0V2ZW50TG9vcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsu
Y3BwCmluZGV4IDFkNTYzNjVhN2YxMzhjZjg5MzM0NmFmMzE5OGM2NDI0NjU2NzYxYjMuLmU5MzY1
MTI2MTY3ZWE1YWViYjBlOGEwZTA5OGI3ZjcwYWFiZmJlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5jcHAKQEAgLTc0
LDYgKzc0LDkgQEAgU09GVF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29y
ZSwgVmlkZW9Ub29sYm94LCBrVlRIRVZDRGVjb2RlckNhcGEKIFNPRlRfTElOS19DT05TVEFOVF9N
QVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVmKQogU09G
VF9MSU5LX0NPTlNUQU5UX01BWV9GQUlMX0ZPUl9TT1VSQ0UoV2ViQ29yZSwgVmlkZW9Ub29sYm94
LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heERlY29kZUxldmVsLCBDRlN0cmlu
Z1JlZikKIFNPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZp
ZGVvVG9vbGJveCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xl
dmVsLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVF9NQVlfRkFJTF9GT1JfU09VUkNF
KFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9T
dXBwb3J0ZWRQcm9maWxlcywgQ0ZTdHJpbmdSZWYpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZB
SUxfRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2Rl
ckNhcGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05T
VEFOVF9NQVlfRkFJTF9GT1JfU09VUkNFKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQsIENGU3RyaW5nUmVm
KQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NPVVJDRShXZWJDb3JlLCBWaWRlb1Rvb2xib3gs
IFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcywgT1NTdGF0dXMsIChD
RkFsbG9jYXRvclJlZiBhbGxvY2F0b3IsIENGRGljdGlvbmFyeVJlZiBhdHRyaWJ1dGVzLCBWVFBp
eGVsQnVmZmVyQ29uZm9ybWVyUmVmKiBjb25mb3JtZXJPdXQpLCAoYWxsb2NhdG9yLCBhdHRyaWJ1
dGVzLCBjb25mb3JtZXJPdXQpKTsKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNFKFdlYkNv
cmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lcklzQ29uZm9ybWFudFBpeGVs
QnVmZmVyLCBCb29sZWFuLCAoVlRQaXhlbEJ1ZmZlckNvbmZvcm1lclJlZiBjb25mb3JtZXIsIENW
UGl4ZWxCdWZmZXJSZWYgcGl4QnVmKSwgKGNvbmZvcm1lciwgcGl4QnVmKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb1Rvb2xib3hTb2Z0TGluay5oCmluZGV4
IGYxNTY1NDdhMzllMTI4OTYyZGMzMjZiNzBmYzNlM2Q1YTBlMWMxYzcuLjYyNTMzYWMzZDI3ZmY3
NTcwMmVmNjc2YmY2Mzk4MTYzYmI3NTBiZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1ZpZGVvVG9vbGJveFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvVmlkZW9Ub29sYm94U29mdExpbmsuaApAQCAtMTEwLDYgKzExMCwxMiBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVEhFVkNEZWNvZGVyUHJvZgogI2RlZmluZSBrVlRIRVZDRGVjb2RlclByb2ZpbGVD
YXBhYmlsaXR5X01heERlY29kZUxldmVsIGdldF9WaWRlb1Rvb2xib3hfa1ZUSEVWQ0RlY29kZXJQ
cm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCgpCiBTT0ZUX0xJTktfQ09OU1RBTlRfTUFZ
X0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVEhFVkNEZWNvZGVyUHJv
ZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCwgQ0ZTdHJpbmdSZWYpCiAjZGVmaW5lIGtW
VEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCBnZXRfVmlkZW9U
b29sYm94X2tWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCgp
CitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rv
b2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMs
IENGU3RyaW5nUmVmKQorI2RlZmluZSBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1
cHBvcnRlZFByb2ZpbGVzIGdldF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2Fw
YWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcygpCitTT0ZUX0xJTktfQ09OU1RBTlRfTUFZX0ZBSUxf
Rk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNh
cGFiaWxpdHlfU3VwcG9ydGVkTGV2ZWxzLCBDRlN0cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRMZXZlbHMgZ2V0X1ZpZGVvVG9vbGJveF9r
VlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscygpCitTT0ZUX0xJ
TktfQ09OU1RBTlRfTUFZX0ZBSUxfRk9SX0hFQURFUihXZWJDb3JlLCBWaWRlb1Rvb2xib3gsIGtW
VERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkLCBDRlN0
cmluZ1JlZikKKyNkZWZpbmUga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3
YXJlQWNjZWxlcmF0ZWQgZ2V0X1ZpZGVvVG9vbGJveF9rVlREb2xieVZpc2lvbkRlY29kZXJDYXBh
YmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCgpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFdlYkNvcmUsIFZpZGVvVG9vbGJveCwgVlRQaXhlbEJ1ZmZlckNvbmZvcm1lckNyZWF0
ZVdpdGhBdHRyaWJ1dGVzLCBPU1N0YXR1cywgKENGQWxsb2NhdG9yUmVmIGFsbG9jYXRvciwgQ0ZE
aWN0aW9uYXJ5UmVmIGF0dHJpYnV0ZXMsIFZUUGl4ZWxCdWZmZXJDb25mb3JtZXJSZWYqIGNvbmZv
cm1lck91dCksIChhbGxvY2F0b3IsIGF0dHJpYnV0ZXMsIGNvbmZvcm1lck91dCkpOwogI2RlZmlu
ZSBWVFBpeGVsQnVmZmVyQ29uZm9ybWVyQ3JlYXRlV2l0aEF0dHJpYnV0ZXMgc29mdExpbmtfVmlk
ZW9Ub29sYm94X1ZUUGl4ZWxCdWZmZXJDb25mb3JtZXJDcmVhdGVXaXRoQXR0cmlidXRlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApp
bmRleCAzYmUwNWY5Y2QwNWE5OTgzZTkyNGY4M2M0Y2RhMTNiZmRjMTI0YzEzLi4zMmI3MjIzZTlh
MTVhMDQ2NjFkNzc0NjZjMTQwYWYzNDZhN2MxMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9IRVZDVXRpbGl0aWVzLmNwcApAQCAtMjYsNiArMjYsOSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhFVkNVdGlsaXRpZXMuaCIKIAorI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJD
b252ZXJzaW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTExMCw0ICsxMTMsMTMzIEBA
IE9wdGlvbmFsPEhFVkNQYXJhbWV0ZXJTZXQ+IHBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb25z
dCBTdHJpbmcmIGNvZGVjU3RyaW5nKQogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCitzdGF0
aWMgU3RyaW5nIGNvZGVjU3RyaW5nRm9yRG9WaUNvZGVjVHlwZShjb25zdCBTdHJpbmcmIGNvZGVj
KQoreworICAgIHVzaW5nIE1hcFR5cGUgPSBIYXNoTWFwPFN0cmluZywgU3RyaW5nPjsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFwVHlwZT4gdHlwZXMgPSBzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8TWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZT4oeworICAgICAgICB7ICJkdmhlIiwgImhldjEi
IH0sCisgICAgICAgIHsgImR2aDEiLCAiaHZjMSIgfSwKKyAgICAgICAgeyAiZHZhdiIsICJhdmMz
IiB9LAorICAgICAgICB7ICJkdmExIiwgImF2YzEiIH0KKyAgICB9KTsKKworICAgIGF1dG8gZmlu
ZFJlc3VsdHMgPSB0eXBlcy5nZXQoKS5maW5kKGNvZGVjKTsKKyAgICBpZiAoZmluZFJlc3VsdHMg
PT0gdHlwZXMuZ2V0KCkuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxsU3RyaW5nKCk7CisgICAg
cmV0dXJuIGZpbmRSZXN1bHRzLT52YWx1ZTsKK30KKworc3RhdGljIE9wdGlvbmFsPHVuc2lnbmVk
IHNob3J0PiBwcm9maWxlSURGb3JBbHBoYWJldGljRG9WaVByb2ZpbGUoY29uc3QgU3RyaW5nJiBw
cm9maWxlKQoreworICAgIC8vIFNlZSBUYWJsZSA3IG9mICJEb2xieSBWaXNpb24gUHJvZmlsZXMg
YW5kIExldmVscyBWZXJzaW9uIDEuMy4yIgorICAgIHVzaW5nIE1hcFR5cGUgPSBIYXNoTWFwPFN0
cmluZywgdW5zaWduZWQgc2hvcnQ+OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYXBUeXBl
PiBtYXAgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8TWFwVHlwZTo6S2V5VmFsdWVQYWlyVHlwZT4o
eworICAgICAgICB7ICJkdmhlLmR0ciIsIDQgfSwKKyAgICAgICAgeyAiZHZoZS5zdG4iLCA1IH0s
CisgICAgICAgIHsgImR2aGUuZHRiIiwgNyB9LAorICAgICAgICB7ICJkdmhlLnN0IiwgOCB9LAor
ICAgICAgICB7ICJkdmF2LnNlIiwgOSB9CisgICAgfSk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHRz
ID0gbWFwLmdldCgpLmZpbmQocHJvZmlsZSk7CisgICAgaWYgKGZpbmRSZXN1bHRzID09IG1hcC5n
ZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4gZmlu
ZFJlc3VsdHMtPnZhbHVlOworfQorCitzdGF0aWMgYm9vbCBpc1ZhbGlkRG9WaVByb2ZpbGVJRCh1
bnNpZ25lZCBzaG9ydCBwcm9maWxlSUQpCit7CisgICAgc3dpdGNoIChwcm9maWxlSUQpIHsKKyAg
ICBjYXNlIDQ6CisgICAgY2FzZSA1OgorICAgIGNhc2UgNzoKKyAgICBjYXNlIDg6CisgICAgY2Fz
ZSA5OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorfQorCitzdGF0aWMgT3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+IG1heGlt
dW1MZXZlbElERm9yRG9WaVByb2ZpbGVJRCh1bnNpZ25lZCBzaG9ydCBwcm9maWxlSUQpCit7Cisg
ICAgLy8gU2VlIFNlY3Rpb24gNC4xIG9mICJEb2xieSBWaXNpb24gUHJvZmlsZXMgYW5kIExldmVs
cyBWZXJzaW9uIDEuMy4yIgorICAgIHN3aXRjaCAocHJvZmlsZUlEKSB7CisgICAgY2FzZSA0OiBy
ZXR1cm4gOTsKKyAgICBjYXNlIDU6IHJldHVybiAxMzsKKyAgICBjYXNlIDc6IHJldHVybiA5Owor
ICAgIGNhc2UgODogcmV0dXJuIDEzOworICAgIGNhc2UgOTogcmV0dXJuIDU7CisgICAgZGVmYXVs
dDogcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGlzVmFsaWRQ
cm9maWxlSURGb3JDb2RlY05hbWUodW5zaWduZWQgc2hvcnQgcHJvZmlsZUlELCBjb25zdCBTdHJp
bmcmIGNvZGVjTmFtZSkKK3sKKyAgICBpZiAocHJvZmlsZUlEID09IDkpCisgICAgICAgIHJldHVy
biBjb2RlY05hbWUgPT0gImF2YzEiIHx8IGNvZGVjTmFtZSA9PSAiYXZjMyI7CisgICAgcmV0dXJu
IGNvZGVjTmFtZSA9PSAiaHZjMSIgfHwgY29kZWNOYW1lID09ICJoZXYxIjsKK30KKworT3B0aW9u
YWw8RG9WaVBhcmFtZXRlclNldD4gcGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IFN0cmlu
ZyYgY29kZWNTdHJpbmcpCit7CisgICAgLy8gVGhlIGZvcm1hdCBvZiB0aGUgRG9WaSBjb2RlYyBz
dHJpbmcgaXMgc3BlY2lmaWVkIGluICJEb2xieSBWaXNpb24gUHJvZmlsZXMgYW5kIExldmVscyBW
ZXJzaW9uIDEuMy4yIgorICAgIFN0cmluZ1ZpZXcgY29kZWNWaWV3KGNvZGVjU3RyaW5nKTsKKyAg
ICBhdXRvIGNvZGVjU3BsaXQgPSBjb2RlY1ZpZXcuc3BsaXQoJy4nKTsKKyAgICBhdXRvIG5leHRF
bGVtZW50ID0gY29kZWNTcGxpdC5iZWdpbigpOworICAgIGlmIChuZXh0RWxlbWVudCA9PSBjb2Rl
Y1NwbGl0LmVuZCgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgRG9WaVBh
cmFtZXRlclNldCBwYXJhbWV0ZXJzOworCisgICAgcGFyYW1ldGVycy5jb2RlY05hbWUgPSBjb2Rl
Y1N0cmluZ0ZvckRvVmlDb2RlY1R5cGUoKCpuZXh0RWxlbWVudCkudG9TdHJpbmcoKSk7CisgICAg
aWYgKCFwYXJhbWV0ZXJzLmNvZGVjTmFtZSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KworICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIHByb2ZpbGVJRCA9ICpuZXh0RWxlbWVudDsK
KyAgICBpZiAoIXByb2ZpbGVJRC5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIGJvb2wgaXNJbnRlZ3JhbCA9IGZhbHNlOworICAgIGF1dG8gZmlyc3RDaGFyYWN0
ZXIgPSBwcm9maWxlSURbMF07CisgICAgLy8gUHJvZmlsZSBkZWZpbml0aW9uIGNhbiBlaXRoZXIg
YmUgbnVtZXJpYyBvciBhbHBoYToKKyAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT0gJzAnKSB7Cisg
ICAgICAgIHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEID0gdG9JbnRlZ3JhbFR5cGU8dWlu
dDhfdD4ocHJvZmlsZUlELCAmaXNJbnRlZ3JhbCwgMTApOworICAgICAgICBpZiAoIWlzSW50ZWdy
YWwpCisgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0gZWxzZSB7CisgICAg
ICAgIGF1dG8gYWxwaGFudW1lcmljUHJvZmlsZVN0cmluZyA9IGNvZGVjVmlldy5sZWZ0KDUgKyBw
cm9maWxlSUQubGVuZ3RoKCkpLnRvU3RyaW5nKCk7CisgICAgICAgIGF1dG8gcHJvZmlsZUlEID0g
cHJvZmlsZUlERm9yQWxwaGFiZXRpY0RvVmlQcm9maWxlKGFscGhhbnVtZXJpY1Byb2ZpbGVTdHJp
bmcpOworICAgICAgICBpZiAoIXByb2ZpbGVJRCkKKyAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgICAgIHBhcmFtZXRlcnMuYml0c3RyZWFtUHJvZmlsZUlEID0gcHJvZmlsZUlE
LnZhbHVlKCk7CisgICAgfQorCisgICAgaWYgKCFpc1ZhbGlkRG9WaVByb2ZpbGVJRChwYXJhbWV0
ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBpZiAoIWlzVmFsaWRQcm9maWxlSURGb3JDb2RlY05hbWUocGFyYW1ldGVycy5iaXRzdHJl
YW1Qcm9maWxlSUQsIHBhcmFtZXRlcnMuY29kZWNOYW1lKSkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIGlmICgrK25leHRFbGVtZW50ID09IGNvZGVjU3BsaXQuZW5kKCkpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGxldmVsSUQgPSAqbmV4dEVs
ZW1lbnQ7CisgICAgaWYgKCFsZXZlbElELmxlbmd0aCgpKQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgcGFyYW1ldGVycy5iaXRzdHJlYW1MZXZlbElEID0gdG9JbnRlZ3JhbFR5
cGU8dWludDhfdD4obGV2ZWxJRCwgJmlzSW50ZWdyYWwsIDEwKTsKKyAgICBpZiAoIWlzSW50ZWdy
YWwpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIG1heGltdW1MZXZl
bElEID0gbWF4aW11bUxldmVsSURGb3JEb1ZpUHJvZmlsZUlEKHBhcmFtZXRlcnMuYml0c3RyZWFt
UHJvZmlsZUlEKTsKKyAgICBpZiAoIW1heGltdW1MZXZlbElEIHx8IHBhcmFtZXRlcnMuYml0c3Ry
ZWFtTGV2ZWxJRCA+IG1heGltdW1MZXZlbElELnZhbHVlKCkpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gcGFyYW1ldGVyczsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSEVWQ1V0aWxpdGllcy5oCmluZGV4IGEyMDk5MmM4
NDdhNDViMzM2NjJiNjNiYjY1YjFjNmYxNjc0ZGJiNzUuLjQzZWVhODdhYjhmYTM4ODlmNTQ4NGU3
MTdjZjAyNjIzNGQxYjAwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0hFVkNVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9IRVZDVXRpbGl0aWVzLmgKQEAgLTQyLDQgKzQyLDEyIEBAIHN0cnVjdCBIRVZDUGFyYW1l
dGVyU2V0IHsKIAogV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8SEVWQ1BhcmFtZXRlclNldD4gcGFy
c2VIRVZDQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgY29kZWNTdHJpbmcpOwogCitzdHJ1
Y3QgRG9WaVBhcmFtZXRlclNldCB7CisgICAgU3RyaW5nIGNvZGVjTmFtZTsKKyAgICB1bnNpZ25l
ZCBzaG9ydCBiaXRzdHJlYW1Qcm9maWxlSUQgeyAwIH07CisgICAgdW5zaWduZWQgc2hvcnQgYml0
c3RyZWFtTGV2ZWxJRCB7IDAgfTsKK307CisKK1dFQkNPUkVfRVhQT1JUIE9wdGlvbmFsPERvVmlQ
YXJhbWV0ZXJTZXQ+IHBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZGVj
U3RyaW5nKTsKKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EuaAppbmRleCA2YjVjZjFjYjFmNjZiOWJl
YzcyZWJiY2EzZmFhOWU4MGU1NzVkMjllLi5kYTkxYzA3NWFkZWRkNTJlNGM1MDk4NTYzNjU3MmU0
OTVjZTIxMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EuaApAQCAtMzQsNiArMzQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgTWVkaWFDYXBhYmlsaXRpZXNJbmZvOwogCiBleHRlcm4g
Ym9vbCB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKEhFVkNQYXJhbWV0ZXJTZXQmLCBNZWRpYUNhcGFi
aWxpdGllc0luZm8mLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KTsKK2V4
dGVybiBib29sIHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoRG9WaVBhcmFtZXRlclNldCYsIE1lZGlh
Q2FwYWJpbGl0aWVzSW5mbyYsIGJvb2wgaGFzQWxwaGFDaGFubmVsLCBib29sIGhkclN1cHBvcnQp
OwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQppbmRleCA3YmEwNmRhMmE4OGQzY2UzYTEx
ZGNjNDYxMTdiMjQ1Y2ZmNDlkMjM1Li5mMTExZjI4NzdiOThmOWM4MzdkMzU0Y2M4MWRiYTAyOGIz
ZWU5MjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCkBAIC0zMiw4ICszMiwxMCBAQAogI2lt
cG9ydCAiSEVWQ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgi
CiAKLSNpbXBvcnQgIlZpZGVvVG9vbGJveFNvZnRMaW5rLmgiCiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaD4KKworI2ltcG9ydCAiVmlkZW9Ub29sYm94U29mdExpbmsuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMjIsNiArMTI0LDExNiBAQCBib29sIHZhbGlkYXRlSEVW
Q1BhcmFtZXRlcnMoSEVWQ1BhcmFtZXRlclNldCYgcGFyYW1ldGVycywgTWVkaWFDYXBhYmlsaXRp
ZXNJbmZvJgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgT3B0aW9uYWw8Q01WaWRlb0Nv
ZGVjVHlwZT4gY29kZWNUeXBlRm9yRG9WaUNvZGVjU3RyaW5nKGNvbnN0IFN0cmluZyYgY29kZWNT
dHJpbmcpCit7CisgICAgc3RhdGljIGF1dG8gbWFwID0gbWFrZU5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8U3RyaW5nLCBDTVZpZGVvQ29kZWNUeXBlPj4oeworICAgICAgICB7ICJhdmMxIiwga0NNVmlk
ZW9Db2RlY1R5cGVfSDI2NCB9LAorICAgICAgICB7ICJhdmMzIiwga0NNVmlkZW9Db2RlY1R5cGVf
SDI2NCB9LAorICAgICAgICB7ICJodmMxIiwga0NNVmlkZW9Db2RlY1R5cGVfSEVWQyB9LAorICAg
ICAgICB7ICJoZXYxIiwga0NNVmlkZW9Db2RlY1R5cGVfSEVWQyB9LAorICAgIH0pOworCisgICAg
YXV0byBmaW5kUmVzdWx0ID0gbWFwLmdldCgpLmZpbmQoY29kZWNTdHJpbmcpOworICAgIGlmIChm
aW5kUmVzdWx0ID09IG1hcC5nZXQoKS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4gZmluZFJlc3VsdC0+dmFsdWU7Cit9CisKK3N0YXRpYyBPcHRpb25hbDxW
ZWN0b3I8dW5zaWduZWQgc2hvcnQ+PiBDRlN0cmluZ0FycmF5VG9OdW1iZXJWZWN0b3IoQ0ZBcnJh
eVJlZiBhcnJheUNGKQoreworICAgIGlmICghYXJyYXlDRiB8fCBDRkdldFR5cGVJRChhcnJheUNG
KSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICBhdXRvIGFycmF5TlMgPSAoX19icmlkZ2UgTlNBcnJheTxOU1N0cmluZyo+KilhcnJheUNG
OworICAgIFZlY3Rvcjx1bnNpZ25lZCBzaG9ydD4gdmFsdWVzOworICAgIHZhbHVlcy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGFycmF5TlMuY291bnQpOworCisgICAgYm9vbCBhcmVBbGxWYWxpZE51
bWJlcnMgPSB0cnVlOworICAgIFthcnJheU5TIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOlsm
XSAoTlNTdHJpbmcqIHZhbHVlLCBOU1VJbnRlZ2VyLCBCT09MICpzdG9wKSB7CisgICAgICAgIGlm
ICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6TlNTdHJpbmcuY2xhc3NdKSB7CisgICAgICAgICAgICBh
cmVBbGxWYWxpZE51bWJlcnMgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChzdG9wKQorICAgICAg
ICAgICAgICAgICpzdG9wID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGJvb2wgaXNWYWxpZE51bWJlciA9IGZhbHNlOworICAgICAgICBhdXRvIG51bWVy
aWNWYWx1ZSA9IHRvSW50ZWdyYWxUeXBlPHVuc2lnbmVkIHNob3J0PihTdHJpbmcodmFsdWUpLCAm
aXNWYWxpZE51bWJlcik7CisgICAgICAgIGlmICghaXNWYWxpZE51bWJlcikgeworICAgICAgICAg
ICAgYXJlQWxsVmFsaWROdW1iZXJzID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoc3RvcCkKKyAg
ICAgICAgICAgICAgICAqc3RvcCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICB2YWx1ZXMudW5jaGVja2VkQXBwZW5kKG51bWVyaWNWYWx1ZSk7CisgICAg
fV07CisKKyAgICBpZiAoIWFyZUFsbFZhbGlkTnVtYmVycykKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4gdmFsdWVzOworfQorCitib29sIHZhbGlkYXRlRG9WaVBhcmFt
ZXRlcnMoRG9WaVBhcmFtZXRlclNldCYgcGFyYW1ldGVycywgTWVkaWFDYXBhYmlsaXRpZXNJbmZv
JiBpbmZvLCBib29sIGhhc0FscGhhQ2hhbm5lbCwgYm9vbCBoZHJTdXBwb3J0KQoreworICAgIGlm
IChoYXNBbHBoYUNoYW5uZWwpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChoZHJT
dXBwb3J0KSB7CisgICAgICAgIC8vIFBsYXRmb3JtIHN1cHBvcnRzIEhEUiBwbGF5YmFjayBvZiBI
RVZDIE1haW4xMCBQcm9maWxlLCB3aGljaCBpcyBzaWduYWxsZWQgYnkgRG9WaSBwcm9maWxlcyA0
LCA1LCA3LCAmIDguCisgICAgICAgIHN3aXRjaCAocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxl
SUQpIHsKKyAgICAgICAgY2FzZSA0OgorICAgICAgICBjYXNlIDU6CisgICAgICAgIGNhc2UgNzoK
KyAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhdXRvIGNv
ZGVjVHlwZSA9IGNvZGVjVHlwZUZvckRvVmlDb2RlY1N0cmluZyhwYXJhbWV0ZXJzLmNvZGVjTmFt
ZSk7CisgICAgaWYgKCFjb2RlY1R5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE9T
U3RhdHVzIHN0YXR1cyA9IFZUU2VsZWN0QW5kQ3JlYXRlVmlkZW9EZWNvZGVySW5zdGFuY2UoY29k
ZWNUeXBlLnZhbHVlKCksIGtDRkFsbG9jYXRvckRlZmF1bHQsIG51bGxwdHIsIG51bGxwdHIpOwor
ICAgIGlmIChzdGF0dXMgIT0gbm9FcnIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlm
ICghY2FuTG9hZF9WaWRlb1Rvb2xib3hfVlRDb3B5SEVWQ0RlY29kZXJDYXBhYmlsaXRpZXNEaWN0
aW9uYXJ5KCkKKyAgICAgICAgfHwgIWNhbkxvYWRfVmlkZW9Ub29sYm94X2tWVERvbGJ5VmlzaW9u
RGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMoKQorICAgICAgICB8fCAhY2FuTG9h
ZF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRM
ZXZlbHMoKQorICAgICAgICB8fCAhY2FuTG9hZF9WaWRlb1Rvb2xib3hfa1ZURG9sYnlWaXNpb25E
ZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY2FwYWJpbGl0aWVzID0g
YWRvcHRDRihWVENvcHlIRVZDRGVjb2RlckNhcGFiaWxpdGllc0RpY3Rpb25hcnkoKSk7CisgICAg
aWYgKCFjYXBhYmlsaXRpZXMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gc3Vw
cG9ydGVkUHJvZmlsZXNDRiA9IChDRkFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFi
aWxpdGllcy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQ
cm9maWxlcyk7CisgICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IENGU3RyaW5nQXJyYXlUb051
bWJlclZlY3RvcihzdXBwb3J0ZWRQcm9maWxlc0NGKTsKKyAgICBpZiAoIXN1cHBvcnRlZFByb2Zp
bGVzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIHN1cHBvcnRlZExldmVsc0NG
ID0gKENGQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBr
VlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X1N1cHBvcnRlZExldmVscyk7CisgICAgYXV0
byBzdXBwb3J0ZWRMZXZlbHMgPSBDRlN0cmluZ0FycmF5VG9OdW1iZXJWZWN0b3Ioc3VwcG9ydGVk
TGV2ZWxzQ0YpOworICAgIGlmICghc3VwcG9ydGVkTGV2ZWxzKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBhdXRvIGlzSGFyZHdhcmVBY2NlbGVyYXRlZENGID0gKENGQm9vbGVhblJlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVERvbGJ5VmlzaW9uRGVj
b2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKTsKKyAgICBpZiAoIWlzSGFyZHdh
cmVBY2NlbGVyYXRlZENGIHx8IENGR2V0VHlwZUlEKGlzSGFyZHdhcmVBY2NlbGVyYXRlZENGKSAh
PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KCFzdXBwb3J0ZWRQcm9maWxlcy52YWx1ZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMuYml0c3RyZWFt
UHJvZmlsZUlEKSB8fCAhc3VwcG9ydGVkTGV2ZWxzLnZhbHVlKCkuY29udGFpbnMocGFyYW1ldGVy
cy5iaXRzdHJlYW1MZXZlbElEKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW5mby5z
dXBwb3J0ZWQgPSB0cnVlOworICAgIGluZm8uc21vb3RoID0gdHJ1ZTsKKyAgICBpbmZvLnBvd2Vy
RWZmaWNpZW50ID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YpOwor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFF
bmdpbmVDb25maWd1cmF0aW9uRmFjdG9yeUNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL01lZGlhRW5naW5lQ29uZmlndXJhdGlvbkZhY3RvcnlDb2NvYS5j
cHAKaW5kZXggYmM5MDU2ZjM5Yzg5OTNhZjY2MzBhODgwMTc1NDU1OTk2MmI1YThiMy4uMmVlMzgy
NzA4NDk0YzViN2EzMTY3NTlmZGRhZGI4NGYwMzJhYjlmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvTWVkaWFFbmdpbmVDb25maWd1cmF0aW9uRmFj
dG9yeUNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9NZWRpYUVuZ2luZUNvbmZpZ3VyYXRpb25GYWN0b3J5Q29jb2EuY3BwCkBAIC03MSw3ICs3MSw3
IEBAIHZvaWQgY3JlYXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRp
YURlY29kaW5nQ29uZmlndXJhdGlvbiYmIGNvCiAgICAgICAgIGluZm8uc3VwcG9ydGVkID0gdHJ1
ZTsKICAgICAgICAgYXV0byYgY29kZWMgPSBjb2RlY3NbMF07CiAgICAgICAgIGF1dG8gdmlkZW9D
b2RlY1R5cGUgPSB2aWRlb0NvZGVjVHlwZUZyb21SRkM0MjgxVHlwZShjb2RlYyk7Ci0gICAgICAg
IGlmICghdmlkZW9Db2RlY1R5cGUpIHsKKyAgICAgICAgaWYgKCF2aWRlb0NvZGVjVHlwZSAmJiAh
KGNvZGVjLnN0YXJ0c1dpdGgoImR2aDEiKSB8fCBjb2RlYy5zdGFydHNXaXRoKCJkdmhlIikpKSB7
CiAgICAgICAgICAgICBjYWxsYmFjayh7eyB9LCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pfSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTg1LDYgKzg1LDEyIEBAIHZvaWQgY3Jl
YXRlTWVkaWFQbGF5ZXJEZWNvZGluZ0NvbmZpZ3VyYXRpb25Db2NvYShNZWRpYURlY29kaW5nQ29u
ZmlndXJhdGlvbiYmIGNvCiAgICAgICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwgV1RGTW92ZShj
b25maWd1cmF0aW9uKX0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIGlmIChjb2RlYy5zdGFydHNXaXRoKCJkdmgxIikgfHwgY29kZWMuc3Rh
cnRzV2l0aCgiZHZoZSIpKSB7CisgICAgICAgICAgICBhdXRvIHBhcmFtZXRlcnMgPSBwYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoY29kZWMpOworICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzIHx8
ICF2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKHBhcmFtZXRlcnMudmFsdWUoKSwgaW5mbywgYWxwaGFD
aGFubmVsLCBoZHJTdXBwb3J0ZWQpKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwg
V1RGTW92ZShjb25maWd1cmF0aW9uKX0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChhbHBoYUNoYW5uZWwg
fHwgaGRyU3VwcG9ydGVkKSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soe3sgfSwgV1RGTW92
ZShjb25maWd1cmF0aW9uKX0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDgyZWEwMGQzZWI5NWQzZDkwYWFjYTkxODNiMjYwZGUxOTFkYjIwNzIuLmVhOWMzOTU2NjY3MGQ3
NmVhM2YzMWJmNWY0NjRiZjMwYmYyMjFiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTUxNDIsNiArNTE0MiwxMSBAQCBPcHRpb25hbDxIRVZDUGFyYW1ldGVyU2V0PiBJ
bnRlcm5hbHM6OnBhcnNlSEVWQ0NvZGVjUGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZAogICAg
IHJldHVybiBXZWJDb3JlOjpwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoY29kZWNTdHJpbmcpOwog
fQogCitPcHRpb25hbDxEb1ZpUGFyYW1ldGVyU2V0PiBJbnRlcm5hbHM6OnBhcnNlRG9WaUNvZGVj
UGFyYW1ldGVycyhjb25zdCBTdHJpbmcmIGNvZGVjU3RyaW5nKQoreworICAgIHJldHVybiBXZWJD
b3JlOjpwYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoY29kZWNTdHJpbmcpOworfQorCiBhdXRvIElu
dGVybmFsczo6Z2V0Q29va2llcygpIGNvbnN0IC0+IFZlY3RvcjxDb29raWVEYXRhPgogewogICAg
IGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAppbmRleCBmOWIzM2EyNTgyYTQ1ODg2MzExN2M5YzNkOTM5OTMxOTMxNThhZmQ4Li5h
M2I0YWJhZTU1ODRmNzVkYmZjZGRmOTJlNDYwM2JhNGRlOWNhMmVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTgxNiw2ICs4MTYsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSEVW
Q1BhcmFtZXRlclNldCA9IFdlYkNvcmU6OkhFVkNQYXJhbWV0ZXJTZXQ7CiAgICAgT3B0aW9uYWw8
SEVWQ1BhcmFtZXRlclNldD4gcGFyc2VIRVZDQ29kZWNQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYg
Y29kZWNTdHJpbmcpOwogCisgICAgdXNpbmcgRG9WaVBhcmFtZXRlclNldCA9IFdlYkNvcmU6OkRv
VmlQYXJhbWV0ZXJTZXQ7CisgICAgT3B0aW9uYWw8RG9WaVBhcmFtZXRlclNldD4gcGFyc2VEb1Zp
Q29kZWNQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZyYgY29kZWNTdHJpbmcpOworCiAgICAgc3RydWN0
IENvb2tpZURhdGEgewogICAgICAgICBTdHJpbmcgbmFtZTsKICAgICAgICAgU3RyaW5nIHZhbHVl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDVmZjQ3MWFlYTVjZGQwMjZj
MGM3ZTExMjY3NTM5NGRhYTZkYWUyNDcuLjk3YjQ0NDdhNDIwZjdhOTZhYjllYzQ2MmYwNmZjN2Mw
NGM2MTYwY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTEzNiw2ICsx
MzYsMTUgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAgICAgc2VxdWVuY2U8dW5zaWduZWQg
c2hvcnQ+IGNvbnN0cmFpbnRGbGFnczsKIH07CiAKK1sKKyAgICBFeHBvcnRNYWNybz1XRUJDT1JF
X1RFU1RTVVBQT1JUX0VYUE9SVCwKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKK10gZGljdGlv
bmFyeSBEb1ZpUGFyYW1ldGVyU2V0IHsKKyAgICBET01TdHJpbmcgY29kZWNOYW1lOworICAgIHVu
c2lnbmVkIHNob3J0IGJpdHN0cmVhbVByb2ZpbGVJRDsKKyAgICB1bnNpZ25lZCBzaG9ydCBiaXRz
dHJlYW1MZXZlbElEOworfTsKKwogWwogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfVEVTVFNVUFBP
UlRfRVhQT1JULAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LApAQCAtNzgxLDYgKzc5MCw3IEBA
IGVudW0gQ29tcG9zaXRpbmdQb2xpY3kgewogICAgIGJvb2xlYW4gc3VwcG9ydHNWQ1BFbmNvZGVy
KCk7CiAKICAgICBIRVZDUGFyYW1ldGVyU2V0PyBwYXJzZUhFVkNDb2RlY1BhcmFtZXRlcnMoRE9N
U3RyaW5nIGNvZGVjUGFyYW1ldGVycyk7CisgICAgRG9WaVBhcmFtZXRlclNldD8gcGFyc2VEb1Zp
Q29kZWNQYXJhbWV0ZXJzKERPTVN0cmluZyBjb2RlY1BhcmFtZXRlcnMpOwogCiAgICAgc2VxdWVu
Y2U8Q29va2llRGF0YT4gZ2V0Q29va2llcygpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzc5MzM5YmZmZTUwN2I4ZGFm
M2YxNjMyMjMxOWZkMzM5ZTMxZWNkYi4uYmI2MzI3NGMyZDRhYTMzYzczYzY5MmQ4NzM4YzEzM2Mz
NjkzNDJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEwLTE4ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBNZWRpYUNhcGFiaWxpdGllcyBzdXBw
b3J0IGZvciBEb2xieVZpc2lvbiBjb2RlY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDMxNzAKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCisKKyAgICAgICAgKiBtZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMuaHRtbDog
QWRkZWQuCisKIDIwMTktMTAtMTggIFJ1c3NlbGwgRXBzdGVpbiAgPHJlcHN0ZWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBbIE1hYyBXSzEgXSBSRUdSRVNTSU9OIChyMjUxMjYxKTogTGF5b3V0IFRl
c3QgaW5zcGVjdG9yL2NvbnNvbGUvd2ViY29yZS1sb2dnaW5nLmh0bWwgaXMgY29uc2lzdGVudGx5
IEZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL2RvdmktY29kZWMtcGFyYW1l
dGVycy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRl
cnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZWViNWZkNzBjYjgzMWQ1ZjY5ZTkxYzdlNzhh
ODI5N2IzOWZkYjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9kb3ZpLWNv
ZGVjLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK0VYUEVDVEVEIChp
bnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJiYWQtcGFyYW1ldGVyIikgPT0gJ251
bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2
aDEiKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFy
YW1ldGVycygiZHZoMS4wNC4wOSIpID09PSAneyBodmMxLCA0LCA5IH0nKSBPSworRVhQRUNURUQg
KGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aDEuMDUuMTMiKSA9PT0gJ3sg
aHZjMSwgNSwgMTMgfScpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFy
YW1ldGVycygiZHZoZS4wNy4wOSIpID09PSAneyBoZXYxLCA3LCA5IH0nKSBPSworRVhQRUNURUQg
KGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuZHRyLjkiKSA9PT0gJ3sg
aGV2MSwgNCwgOSB9JykgT0sKK0VYUEVDVEVEIChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJh
bWV0ZXJzKCJkdmhlLnN0bi45IikgPT09ICd7IGhldjEsIDUsIDkgfScpIE9LCitFWFBFQ1RFRCAo
aW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5kdGIuOSIpID09PSAneyBo
ZXYxLCA3LCA5IH0nKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFt
ZXRlcnMoImR2aGUuc3QuOSIpID09PSAneyBoZXYxLCA4LCA5IH0nKSBPSworRVhQRUNURUQgKGlu
dGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2YXYuc2UuNSIpID09PSAneyBhdmMz
LCA5LCA1IH0nKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRl
cnMoImR2aDEuMDYuMDEiKSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoaW50ZXJuYWxzLnBhcnNl
RG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS4wMy4wMSIpID09ICdudWxsJykgT0sKK0VYUEVDVEVE
IChpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmgxLjA5LjAxIikgPT0gJ251
bGwnKSBPSworRVhQRUNURUQgKGludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2
YXYuMDQuMDEiKSA9PSAnbnVsbCcpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMuaHRtbCBiL0xheW91dFRlc3RzL21l
ZGlhL2RvdmktY29kZWMtcGFyYW1ldGVycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2MDgwNjIxZDllZTEw
MGFhNDdhMWFhODRiNmNlZWY2NWYwNThhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9kb3ZpLWNvZGVjLXBhcmFtZXRlcnMuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9InZpZGVvLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gRG9WaVBhcmFtZXRlclNl
dFRvU3RyaW5nKHNldCkgeworICAgICAgICBpZiAoIXNldCkKKyAgICAgICAgICAgIHJldHVybiBg
bnVsbGA7CisgICAgICAgIHJldHVybiBgeyAke3NldC5jb2RlY05hbWV9LCAke3NldC5iaXRzdHJl
YW1Qcm9maWxlSUQgfSwgJHtzZXQuYml0c3RyZWFtTGV2ZWxJRCB9IH1gOworICAgIH0KKyAgICBm
dW5jdGlvbiBpc0VxdWFsRG9WaVBhcmFtZXRlclNldChzZXRBLCBzZXRCKSB7CisgICAgICAgIHJl
dHVybiBzZXRBICYmIHNldEIgCisgICAgICAgICAgICAmJiBzZXRBLmNvZGVjTmFtZSA9PT0gc2V0
Qi5jb2RlY05hbWUKKyAgICAgICAgICAgICYmIHNldEEuYml0c3RyZWFtUHJvZmlsZUlEID09PSBz
ZXRCLmJpdHN0cmVhbVByb2ZpbGVJRAorICAgICAgICAgICAgJiYgc2V0QS5iaXRzdHJlYW1MZXZl
bElEID09PSBzZXRCLmJpdHN0cmVhbUxldmVsSUQKKyAgICB9CisgICAgZnVuY3Rpb24gbWFrZURv
VmlQYXJhbWV0ZXJTZXQoY29kZWNOYW1lLCBiaXRzdHJlYW1Qcm9maWxlSUQsIGJpdHN0cmVhbUxl
dmVsSUQpCisgICAgeworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgY29kZWNOYW1lOiBj
b2RlY05hbWUsCisgICAgICAgICAgICBiaXRzdHJlYW1Qcm9maWxlSUQ6IGJpdHN0cmVhbVByb2Zp
bGVJRCwKKyAgICAgICAgICAgIGJpdHN0cmVhbUxldmVsSUQ6IGJpdHN0cmVhbUxldmVsSUQsCisg
ICAgICAgIH07CisgICAgfQorICAgIGZ1bmN0aW9uIHRlc3RFeHBlY3RlZERvVmlQYXJhbWV0ZXJT
ZXQodGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkKQorICAgIHsKKyAgICAgICAgbGV0IG9ic2VydmVk
ID0gZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgICAgIGxldCBzdWNjZXNzID0gaXNFcXVhbERv
VmlQYXJhbWV0ZXJTZXQob2JzZXJ2ZWQsIGV4cGVjdGVkKTsKKyAgICAgICAgcmVwb3J0RXhwZWN0
ZWQoc3VjY2VzcywgdGVzdEZ1bmNTdHJpbmcsICc9PT0nLCBEb1ZpUGFyYW1ldGVyU2V0VG9TdHJp
bmcoZXhwZWN0ZWQpLCBEb1ZpUGFyYW1ldGVyU2V0VG9TdHJpbmcob2JzZXJ2ZWQpKTsKKyAgICB9
CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBldmVudCA9PiB7CisgICAgICAg
IHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiYmFkLXBh
cmFtZXRlciIpJywgbnVsbCk7CisgICAgICAgIHRlc3RFeHBlY3RlZCgnaW50ZXJuYWxzLnBhcnNl
RG9WaUNvZGVjUGFyYW1ldGVycygiZHZoMSIpJywgbnVsbCk7CisgICAgICAgIHRlc3RFeHBlY3Rl
ZERvVmlQYXJhbWV0ZXJTZXQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2
aDEuMDQuMDkiKScsIG1ha2VEb1ZpUGFyYW1ldGVyU2V0KCdodmMxJywgNCwgOSkpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQ
YXJhbWV0ZXJzKCJkdmgxLjA1LjEzIiknLCBtYWtlRG9WaVBhcmFtZXRlclNldCgnaHZjMScsIDUs
IDEzKSk7CisgICAgICAgIHRlc3RFeHBlY3RlZERvVmlQYXJhbWV0ZXJTZXQoJ2ludGVybmFscy5w
YXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUuMDcuMDkiKScsIG1ha2VEb1ZpUGFyYW1ldGVy
U2V0KCdoZXYxJywgNywgOSkpOworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0
KCdpbnRlcm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLmR0ci45IiknLCBtYWtl
RG9WaVBhcmFtZXRlclNldCgnaGV2MScsIDQsIDkpKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkRG9W
aVBhcmFtZXRlclNldCgnaW50ZXJuYWxzLnBhcnNlRG9WaUNvZGVjUGFyYW1ldGVycygiZHZoZS5z
dG4uOSIpJywgbWFrZURvVmlQYXJhbWV0ZXJTZXQoJ2hldjEnLCA1LCA5KSk7CisgICAgICAgIHRl
c3RFeHBlY3RlZERvVmlQYXJhbWV0ZXJTZXQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFt
ZXRlcnMoImR2aGUuZHRiLjkiKScsIG1ha2VEb1ZpUGFyYW1ldGVyU2V0KCdoZXYxJywgNywgOSkp
OworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRlcm5hbHMucGFyc2VE
b1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmhlLnN0LjkiKScsIG1ha2VEb1ZpUGFyYW1ldGVyU2V0KCdo
ZXYxJywgOCwgOSkpOworICAgICAgICB0ZXN0RXhwZWN0ZWREb1ZpUGFyYW1ldGVyU2V0KCdpbnRl
cm5hbHMucGFyc2VEb1ZpQ29kZWNQYXJhbWV0ZXJzKCJkdmF2LnNlLjUiKScsIG1ha2VEb1ZpUGFy
YW1ldGVyU2V0KCdhdmMzJywgOSwgNSkpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFs
cy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aDEuMDYuMDEiKScsIG51bGwpOworICAgICAg
ICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2aGUu
MDMuMDEiKScsIG51bGwpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoJ2ludGVybmFscy5wYXJzZURv
VmlDb2RlY1BhcmFtZXRlcnMoImR2aDEuMDkuMDEiKScsIG51bGwpOworICAgICAgICB0ZXN0RXhw
ZWN0ZWQoJ2ludGVybmFscy5wYXJzZURvVmlDb2RlY1BhcmFtZXRlcnMoImR2YXYuMDQuMDEiKScs
IG51bGwpOworCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9LCB7IG9uY2U6IHRydWUgfSk7Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>