<?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>224047</bug_id>
          
          <creation_ts>2021-04-01 07:14:22 -0700</creation_ts>
          <short_desc>[JSC] DUCET level-1 weighs are equal if characters are alphabets</short_desc>
          <delta_ts>2021-09-15 11:08:48 -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>JavaScriptCore</component>
          <version>Safari 14</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>macOS 10.15</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="Eben Packwood">ebenpackwood</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>7raivis</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rob</cc>
    
    <cc>saam</cc>
    
    <cc>smoley</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746015</commentid>
    <comment_count>0</comment_count>
      <attachid>424894</attachid>
    <who name="Eben Packwood">ebenpackwood</who>
    <bug_when>2021-04-01 07:14:22 -0700</bug_when>
    <thetext>Created attachment 424894
Minimal working example

Sorting certain string arrays using `localeCompare` can result in the array being sorted differently when `sort` is called multiple times successively.

It&apos;s not immediately clear what the root cause of this issue is, but it seems to be related to the presence of certain unicode strings in the array.

A minimal working example is attached. Each call to `sort` results in a different ordering of the array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747548</commentid>
    <comment_count>1</comment_count>
    <who name="Eben Packwood">ebenpackwood</who>
    <bug_when>2021-04-06 11:40:15 -0700</bug_when>
    <thetext>It appears as if the issue is that `localeCompare` does not define a total ordering for strings, as required in the ECMAScript standard (https://tc39.es/ecma262/#sec-string.prototype.localecompare).

E.g. 

```
&quot;AB - AS Foobar&quot;.localeCompare(&quot;AB - AS Pulheim KÃƒÂ¤ther&quot;) === -1;
&quot;AB - AS Pulheim KÃƒÂ¤ther&quot;.localeCompare(&quot;Abz - Baz Qux&quot;) === -1;
&quot;Abz - Baz Qux&quot;.localeCompare(&quot;AB - AS Foobar&quot;) === -1;
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1747708</commentid>
    <comment_count>2</comment_count>
    <who name="Rob">rob</who>
    <bug_when>2021-04-06 16:56:50 -0700</bug_when>
    <thetext>I was looking into this a bit with Eben and simplified the test case a bit further. It looks like when comparing pure ASCII strings, localeCompare does a case-sensitive comparison. If the strings are not pure ASCII, localeCompare does a case-insensitive comparison. The only problematic result in this snippet is the third line:

```
&quot;ABC&quot;.localeCompare(&quot;ABD Ã&quot;) === -1
&quot;ABD Ã&quot;.localeCompare(&quot;AbE&quot;) === -1
&quot;AbE&quot;.localeCompare(&quot;ABC&quot;) === -1
```</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748019</commentid>
    <comment_count>3</comment_count>
    <who name="Smoley">smoley</who>
    <bug_when>2021-04-07 12:27:56 -0700</bug_when>
    <thetext>This reproduces for me on Safari 13.1.2 as well as TOT 14.2 using the provided test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748020</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-07 12:28:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/76360173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748078</commentid>
    <comment_count>5</comment_count>
      <attachid>425441</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 14:46:32 -0700</bug_when>
    <thetext>Created attachment 425441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748084</commentid>
    <comment_count>6</comment_count>
      <attachid>425444</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 14:54:31 -0700</bug_when>
    <thetext>Created attachment 425444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748140</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 16:42:00 -0700</bug_when>
    <thetext>Script used to compute DUCET weight.


import re

data = []

level1Array = []
level2Array = []
level3Array = []
level4Array = []

for i in range(0, 128):
    data.append([0, 0, 0, 0])

with open(&quot;sorted.txt&quot;) as file:
    for line in file:
        m = re.match(&quot;^([0-9A-F]{4})  ; \\[([0-9A-F]{4})\\.([0-9A-F]{4})\\.([0-9A-F]{4})\\.([0-9A-F]{4})\\]&quot;, line)
        level1Array.append(int(m.group(2), 16))
        level2Array.append(int(m.group(3), 16))
        level3Array.append(int(m.group(4), 16))
        level4Array.append(int(m.group(5), 16))

    level1Array = list(set(level1Array))
    level2Array = list(set(level2Array))
    level3Array = list(set(level3Array))
    level4Array = list(set(level4Array))
    level1Array.sort()
    level2Array.sort()
    level3Array.sort()
    level4Array.sort()

with open(&quot;sorted.txt&quot;) as file:
    for line in file:
        m = re.match(&quot;^([0-9A-F]{4})  ; \\[([0-9A-F]{4})\\.([0-9A-F]{4})\\.([0-9A-F]{4})\\.([0-9A-F]{4})\\]&quot;, line)
        code = int(m.group(1), 16)
        level1 = int(m.group(2), 16)
        level2 = int(m.group(3), 16)
        level3 = int(m.group(4), 16)
        level4 = int(m.group(5), 16)
        # putting +1 on level1 since 0 is special meaning, and they are already
        # excluded.
        data[code] = [level1Array.index(level1) + 1, level2Array.index(level2),
                level3Array.index(level3), level4Array.index(level4)]
        print(level1)

for level in range(0, 4):
    print(&quot;level%d&quot; % (level + 1))
    result = []
    for i in range(0, 128):
        result.append(str(data[i][level]))
        if i % 8 == 7:
            result.append(&quot;,\n&quot;)
        else:
            result.append(&quot;, &quot;)
    print(&quot;&quot;.join(result))

# vim: set sw=4 ts=4 et tw=80 :</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748144</commentid>
    <comment_count>8</comment_count>
      <attachid>425454</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 16:44:17 -0700</bug_when>
    <thetext>Created attachment 425454
sorted DUCET data (ASCII only) excluding 0000 entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748146</commentid>
    <comment_count>9</comment_count>
      <attachid>425444</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 16:47:58 -0700</bug_when>
    <thetext>Comment on attachment 425444
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +            1. If we found that the result of level-1 weight comparison is equal, and characters are not eqaul, then we do level-3 weight comparison.

/not eqaul/not equal/

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:436
&gt; +//     6. Level-2 weights are alwasy 0020 except for 0000 cases. So if we include 0000 characters, we do not need to perform level-2 weight comparison.

/alwasy/always/

&gt; JSTests/stress/ducet-level-3-or-4-comparison.js:11
&gt; +shouldBe(collator.compare(&quot;ABC&quot;, &quot;abc&quot;), 1);

Can you also add `shouldBe(collator.compare(&quot;ABC&quot;, &quot;ABC&quot;), 0);` just to confirm that the equal case isn&apos;t broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748148</commentid>
    <comment_count>10</comment_count>
      <attachid>425444</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-04-07 16:53:03 -0700</bug_when>
    <thetext>Comment on attachment 425444
Patch

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

r=me too.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:444
&gt; +const uint8_t ducetLevel1Weights[128] = {

As we discussed offline, please fix the L1 weights too.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748153</commentid>
    <comment_count>11</comment_count>
      <attachid>425457</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 16:57:39 -0700</bug_when>
    <thetext>Created attachment 425457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748214</commentid>
    <comment_count>12</comment_count>
      <attachid>425444</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 22:44:36 -0700</bug_when>
    <thetext>Comment on attachment 425444
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:12
&gt;&gt; +            1. If we found that the result of level-1 weight comparison is equal, and characters are not eqaul, then we do level-3 weight comparison.
&gt; 
&gt; /not eqaul/not equal/

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:436
&gt;&gt; +//     6. Level-2 weights are alwasy 0020 except for 0000 cases. So if we include 0000 characters, we do not need to perform level-2 weight comparison.
&gt; 
&gt; /alwasy/always/

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:444
&gt;&gt; +const uint8_t ducetLevel1Weights[128] = {
&gt; 
&gt; As we discussed offline, please fix the L1 weights too.  Thanks.

Fixed. Thanks!

&gt;&gt; JSTests/stress/ducet-level-3-or-4-comparison.js:11
&gt;&gt; +shouldBe(collator.compare(&quot;ABC&quot;, &quot;abc&quot;), 1);
&gt; 
&gt; Can you also add `shouldBe(collator.compare(&quot;ABC&quot;, &quot;ABC&quot;), 0);` just to confirm that the equal case isn&apos;t broken?

Sounds nice, added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1748215</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-07 22:48:13 -0700</bug_when>
    <thetext>Committed r275653 (236289@main): &lt;https://commits.webkit.org/236289@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793764</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-15 11:08:48 -0700</bug_when>
    <thetext>*** Bug 230199 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>424894</attachid>
            <date>2021-04-01 07:14:22 -0700</date>
            <delta_ts>2021-04-01 07:14:22 -0700</delta_ts>
            <desc>Minimal working example</desc>
            <filename>sort.js</filename>
            <type>application/x-javascript</type>
            <size>314</size>
            <attacher name="Eben Packwood">ebenpackwood</attacher>
            
              <data encoding="base64">Y29uc3Qgc29ydEFuZFByaW50ID0gKGFycikgPT4gewoJYXJyLnNvcnQoKGEsIGIpID0+IGEubG9j
YWxlQ29tcGFyZShiKSk7IAoJY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoYXJyKSk7Cn07Cgpj
b25zdCBhcnIgPSBbCgkiQUIgLSBBUyBGb29iYXIiLAoJIkFCIC0gQVMgQmF6IFF1eCDDg8W4IiwK
CSJBQiAtIEFTIFB1bGhlaW0gS8OkdGhlciIsCgkiQWJ6IC0gRm9vIEJhciIsCgkiQWJ6IC0gQmF6
IFF1eCIsCl07Cgpzb3J0QW5kUHJpbnQoYXJyKTsKc29ydEFuZFByaW50KGFycik7CnNvcnRBbmRQ
cmludChhcnIpOwpzb3J0QW5kUHJpbnQoYXJyKTs=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425441</attachid>
            <date>2021-04-07 14:46:32 -0700</date>
            <delta_ts>2021-04-07 14:54:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224047-20210407144632.patch</filename>
            <type>text/plain</type>
            <size>9561</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDM2ZTAwOWUwMDJmMjkzMjU5YjM1NDFkNzI2MGFjNmJlNjIyOWQ5Li5lYjQ0YmZkZDgwNzY1NDRj
ZWNmMDQ4OTNmZDQ3YzI0YTcwZWQ1MDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERVQ0VUIGxldmVsLTEgd2VpZ2hzIGFyZSBlcXVhbCBpZiBjaGFy
YWN0ZXJzIGFyZSBhbHBoYWJldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0ludGxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OmNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKToKKyAgICAgICAgKEpT
Qzo6Y29tcGFyZUFTQ0lJV2l0aFVDQURVQ0VUTGV2ZWwzKToKKyAgICAgICAgKEpTQzo6Y29tcGFy
ZUFTQ0lJV2l0aFVDQURVQ0VUKToKKwogMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciBtb3JlIGluIGJ5
dGVjb2RlIGRpciBhbmQgSnVtcFRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCmluZGV4IDlkNTM2ZDc0YzAxOWQxOGRhNzU4MzdkNTlhYjczODc5NmVl
ZDYwMjkuLmNlYWQxMDZjMzM1ZTgzNjQwZmZhMGM1OTBjYWI2OWIyMzU2MTNhNTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC00MzIsMjcgKzQz
Miw1MyBAQCBjb25zdCBMb2NhbGVTZXQmIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIC8vICAgICAz
LiBJZiBhbiBpbnB1dCBpcyBhbiBBU0NJSSBzdHJpbmcsIG5vIG11bHRpcGxlIGNoYXJhY3RlciBj
b2xsYXRpb24gZWxlbWVudHMgZXhpc3QuIFNvIG5vIHNwZWNpYWwgaGFuZGxpbmcgaW4gVUNBIHN0
ZXAtMiBpcyByZXF1aXJlZC4gRm9yIGV4YW1wbGUsICJMwrciIGlzIG5vdCBBU0NJSS4KIC8vICAg
ICA0LiBVQ0Egc3RlcC0zIGhhbmRsZXMgMDAwMCB3ZWlnaHRlZCBjaGFyYWN0ZXJzIHNwZWNpYWxs
eS4gQW5kIEFTQ0lJIGNvbnRhaW5zIHRoZXNlIGNoYXJhY3RlcnMuIEJ1dCAwMDAwIGVsZW1lbnRz
IGFyZSB1c2VkIG9ubHkgZm9yIHJhcmUgY29udHJvbCBjaGFyYWN0ZXJzLgogLy8gICAgICAgIFdl
IGNhbiBpZ25vcmUgdGhpcyBzcGVjaWFsIGhhbmRsaW5nIGlmIEFTQ0lJIHN0cmluZ3MgZG8gbm90
IGluY2x1ZGUgY29udHJvbCBjaGFyYWN0ZXJzLgotLy8gICAgIDUuIEV4Y2VwdCAwMDAwIGNhc2Vz
LCBhbGwgY2hhcmFjdGVycycgbGV2ZWwtMSB3ZWlnaHRzIGFyZSBkaWZmZXJlbnQuIEFuZCBsZXZl
bC0yIHdlaWdodHMgYXJlIGFsd2F5cyAwMDIwLCB3aGljaCBpcyBsb3dlciB0aGFuIGFueSBsZXZl
bC0xIHdlaWdodHMuCi0vLyAgICAgICAgVGhpcyBtZWFucyB0aGF0IGJpbmFyeSBjb21wYXJpc29u
IGluIFVDQSBzdGVwLTQgZG8gbm90IG5lZWQgdG8gY2hlY2sgbGV2ZWwgMn4gd2VpZ2h0cy4KKy8v
ICAgICA1LiBMZXZlbC0xIHdlaWdodHMgYXJlIGRpZmZlcmVudCBleGNlcHQgZm9yIDAwMDAgY2Fz
ZXMgYW5kIGNhcGl0YWwgLyBsb3dlciBBU0NJSSBjaGFyYWN0ZXJzLiBBbGwgbm9uLTAwMDAgZWxl
bWVudHMgYXJlIGxhcmdlciB0aGFuIDAwMDAuCisvLyAgICAgNi4gTGV2ZWwtMiB3ZWlnaHRzIGFy
ZSBhbHdhc3kgMDAyMCBleGNlcHQgZm9yIDAwMDAgY2FzZXMuIFNvIGlmIHdlIGluY2x1ZGUgMDAw
MCBjaGFyYWN0ZXJzLCB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGxldmVsLTIgd2VpZ2h0IGNv
bXBhcmlzb24uCisvLyAgICAgNy4gSW4gYWxsIGxldmVscywgY2hhcmFjdGVycyBoYXZlIG5vbi0w
MDAwIHdlaWdodHMgaWYgaXQgZG9lcyBub3QgaGF2ZSAwMDAwIHdlaWdodCBpbiBsZXZlbC0xLgor
Ly8gICAgIDguIEluIGxldmVsLTEsIHdlaWdodHMgYXJlIHRoZSBzYW1lIG9ubHkgd2hlbiBjaGFy
YWN0ZXJzIGFyZSB0aGUgc2FtZSBsYXRpbiBsZXR0ZXJzICgnQScgdi5zLiAnYScpLiBJZiBsZXZl
bC0xIHdlaWdodCBjb21wYXJpc29uIHNheXMgRVFVQUwsIGFuZCBpZiBjaGFyYWN0ZXJzIGFyZSBu
b3QgYmluYXJ5LWVxdWFsLAorLy8gICAgICAgIHRoZW4sIHRoZSBvbmx5IGNhc2UgaXMgdGhleSBh
cmUgaW5jbHVkaW5nIHRoZSBzYW1lIGxhdGluIGxldHRlcnMgd2l0aCBkaWZmZXJlbnQgY2FwaXRh
bGl6YXRpb24gYXQgdGhlIHNhbWUgcG9zaXRpb24uIExldmVsLTMgd2VpZ2h0IGNvbXBhcmlzb24g
bXVzdCBkaXN0aW5ndWlzaCB0aGVtIHNpbmNlIGxldmVsLTMKKy8vICAgICAgICB3ZWlnaHQgaXMg
c2V0IG9ubHkgZm9yIGxhdGluIGNhcGl0YWwgbGV0dGVycy4gVGh1cywgd2UgZG8gbm90IG5lZWQg
dG8gcGVyZm9ybSBsZXZlbC00IHdlaWdodCBjb21wYXJpc29uLgogLy8KLS8vICBCYXNlZCBvbiB0
aGUgYWJvdmUgb2JzZXJ2YXRpb24sIG91ciBmYXN0IHBhdGggaGFuZGxlcyBBU0NJSSBzdHJpbmdz
IGV4Y2x1ZGluZyBjb250cm9sIGNoYXJhY3RlcnMuIFRoZSBmb2xsb3dpbmcgd2VpZ2h0IGlzIHJl
Y29tcHV0ZWQgd2VpZ2h0cyBmcm9tIGxldmVsLTEgd2VpZ2h0cy4KLWNvbnN0IHVpbnQ4X3QgZHVj
ZXRXZWlnaHRzWzEyOF0gPSB7CisvLyAgQmFzZWQgb24gdGhlIGFib3ZlIG9ic2VydmF0aW9uLCBv
dXIgZmFzdCBwYXRoIGhhbmRsZXMgQVNDSUkgc3RyaW5ncyBleGNsdWRpbmcgY29udHJvbCBjaGFy
YWN0ZXJzLiBXZSBmaXJzdCBjb21wYXJlIHN0cmluZ3Mgd2l0aCBsZXZlbC0xIHdlaWdodHMuIEFu
ZCB0aGVuLAorLy8gIGlmIHdlIGZvdW5kIHRoZXkgYXJlIHRoZSBzYW1lIGFuZCBpZiB3ZSBmb3Vu
ZCB0aGV5IGFyZSBub3QgYmluYXJ5LWVxdWFsIHN0cmluZ3MsIHRoZW4gd2UgcGVyZm9ybSBjb21w
YXJpc29uIHdpdGggbGV2ZWwtMyBhbmQgbGV2ZWwtNCB3ZWlnaHRzLgorY29uc3QgdWludDhfdCBk
dWNldExldmVsMVdlaWdodHNbMTI4XSA9IHsKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDAsIDEsIDIsIDMsIDQsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwK
KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDUsIDExLCAxNSwgMjcsIDM3LCAyOCwg
MjYsIDE0LAorICAgIDE2LCAxNywgMjMsIDMxLCA4LCA3LCAxMywgMjQsCisgICAgMzgsIDM5LCA0
MCwgNDEsIDQyLCA0MywgNDQsIDQ1LAorICAgIDQ2LCA0NywgMTAsIDksIDMyLCAzMywgMzQsIDEy
LAorICAgIDIyLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwKKyAgICA1NSwgNTYsIDU3LCA1
OCwgNTksIDYwLCA2MSwgNjIsCisgICAgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLAor
ICAgIDcxLCA3MiwgNzMsIDE4LCAyNSwgMTksIDMwLCA2LAorICAgIDI5LCA0OCwgNDksIDUwLCA1
MSwgNTIsIDUzLCA1NCwKKyAgICA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsCisgICAg
NjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLAorICAgIDcxLCA3MiwgNzMsIDIwLCAzNSwg
MjEsIDM2LCAwLAorfTsKKworLy8gTGV2ZWwgMiBhcmUgYWxsIHplcm9zLgorCitjb25zdCB1aW50
OF90IGR1Y2V0TGV2ZWwzV2VpZ2h0c1sxMjhdID0geworICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAxLCAxLCAxLCAxLCAx
LCAxLCAxLAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwgMSwgMSwg
MSwgMSwgMSwKKyAgICAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAxLCAyLCAzLCA0
LCA1LCAwLCAwLAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKLSAgICA2LCAxMiwgMTYsIDI4LCAzOCwgMjksIDI3LCAxNSwKLSAgICAxNywg
MTgsIDI0LCAzMiwgOSwgOCwgMTQsIDI1LAotICAgIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1
LCA0NiwKLSAgICA0NywgNDgsIDExLCAxMCwgMzMsIDM0LCAzNSwgMTMsCi0gICAgMjMsIDUwLCA1
MiwgNTQsIDU2LCA1OCwgNjAsIDYyLAotICAgIDY0LCA2NiwgNjgsIDcwLCA3MiwgNzQsIDc2LCA3
OCwKLSAgICA4MCwgODIsIDg0LCA4NiwgODgsIDkwLCA5MiwgOTQsCi0gICAgOTYsIDk4LCAxMDAs
IDE5LCAyNiwgMjAsIDMxLCA3LAotICAgIDMwLCA0OSwgNTEsIDUzLCA1NSwgNTcsIDU5LCA2MSwK
LSAgICA2MywgNjUsIDY3LCA2OSwgNzEsIDczLCA3NSwgNzcsCi0gICAgNzksIDgxLCA4MywgODUs
IDg3LCA4OSwgOTEsIDkzLAotICAgIDk1LCA5NywgOTksIDIxLCAzNiwgMjIsIDM3LCAwLAogfTsK
IAogY29uc3QgTG9jYWxlU2V0JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCA2MTQwYzIwZDZmZDNl
OGU4YjUyODk3NWQ2Mzg0OGZmMTgzZmNhYjcxLi5lOTNjOWJlODQ0ODFlZWY0YzNmNzVmNzYzNWQ5
ODE2ZjFlODdkYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5oCkBAIC0zNSw3ICszNSw4IEBAIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yOwogCiBu
YW1lc3BhY2UgSlNDIHsKIAotZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZHVjZXRXZWlnaHRzWzEyOF07
CitleHRlcm4gY29uc3QgdWludDhfdCBkdWNldExldmVsMVdlaWdodHNbMTI4XTsKK2V4dGVybiBj
b25zdCB1aW50OF90IGR1Y2V0TGV2ZWwzV2VpZ2h0c1sxMjhdOwogCiBlbnVtIGNsYXNzIExvY2Fs
ZU1hdGNoZXIgOiB1aW50OF90IHsKICAgICBMb29rdXAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCAyNjM5YmQwNTViYjZjMzlh
YjZjYWI3ODlmZmFhOGI2NGNkNDY0MWQ3Li4yYWRiODViNTQxMWVjNzU0ZmQ3NzliNjM2NjQwMjVi
NWIyZjk1MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmgKQEAgLTE1NCwyNyArMTU0LDQ5IEBAIFJlc3VsdFR5cGUgaW50bE9wdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPcHRpb25hbDxKU09iamVjdCY+IG9wdGlv
bnMsCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihV
Q2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSAmJiBkdWNl
dFdlaWdodHNbY2hhcmFjdGVyXTsKKyAgICByZXR1cm4gaXNBU0NJSShjaGFyYWN0ZXIpICYmIGR1
Y2V0TGV2ZWwxV2VpZ2h0c1tjaGFyYWN0ZXJdOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+CitVQ29sbGF0aW9uUmVzdWx0IGNv
bXBhcmVBU0NJSVdpdGhVQ0FEVUNFVExldmVsMyhjb25zdCBDaGFyYWN0ZXJUeXBlMSogY2hhcmFj
dGVyczEsIGNvbnN0IENoYXJhY3RlclR5cGUyKiBjaGFyYWN0ZXJzMiwgdW5zaWduZWQgbGVuZ3Ro
KQoreworICAgIGZvciAodW5zaWduZWQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8IGxlbmd0aDsg
Kytwb3NpdGlvbikgeworICAgICAgICBhdXRvIGxocyA9IGNoYXJhY3RlcnMxW3Bvc2l0aW9uXTsK
KyAgICAgICAgYXV0byByaHMgPSBjaGFyYWN0ZXJzMltwb3NpdGlvbl07CisgICAgICAgIHVpbnQ4
X3QgbGVmdFdlaWdodCA9IGR1Y2V0TGV2ZWwzV2VpZ2h0c1tsaHNdOworICAgICAgICB1aW50OF90
IHJpZ2h0V2VpZ2h0ID0gZHVjZXRMZXZlbDNXZWlnaHRzW3Joc107CisgICAgICAgIGlmIChsZWZ0
V2VpZ2h0ID09IHJpZ2h0V2VpZ2h0KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIHJl
dHVybiBsZWZ0V2VpZ2h0ID4gcmlnaHRXZWlnaHQgPyBVQ09MX0dSRUFURVIgOiBVQ09MX0xFU1M7
CisgICAgfQorICAgIHJldHVybiBVQ09MX0VRVUFMOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+CiBpbmxpbmUgVUNvbGxhdGlv
blJlc3VsdCBjb21wYXJlQVNDSUlXaXRoVUNBRFVDRVQoY29uc3QgQ2hhcmFjdGVyVHlwZTEqIGNo
YXJhY3RlcnMxLCB1bnNpZ25lZCBsZW5ndGgxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogY2hhcmFj
dGVyczIsIHVuc2lnbmVkIGxlbmd0aDIpCiB7CisgICAgYm9vbCBub3RTYW1lQ2hhcmFjdGVycyA9
IGZhbHNlOwogICAgIHVuc2lnbmVkIGNvbW1vbkxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0aDEsIGxl
bmd0aDIpOwogICAgIGZvciAodW5zaWduZWQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8IGNvbW1v
bkxlbmd0aDsgKytwb3NpdGlvbikgewogICAgICAgICBhdXRvIGxocyA9IGNoYXJhY3RlcnMxW3Bv
c2l0aW9uXTsKICAgICAgICAgYXV0byByaHMgPSBjaGFyYWN0ZXJzMltwb3NpdGlvbl07CiAgICAg
ICAgIEFTU0VSVChjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihsaHMpKTsKICAgICAgICAg
QVNTRVJUKGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKHJocykpOwotICAgICAgICB1aW50
OF90IGxlZnRXZWlnaHQgPSBkdWNldFdlaWdodHNbbGhzXTsKLSAgICAgICAgdWludDhfdCByaWdo
dFdlaWdodCA9IGR1Y2V0V2VpZ2h0c1tyaHNdOworICAgICAgICBpZiAobGhzID09IHJocykKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBub3RTYW1lQ2hhcmFjdGVycyA9IHRydWU7Cisg
ICAgICAgIHVpbnQ4X3QgbGVmdFdlaWdodCA9IGR1Y2V0TGV2ZWwxV2VpZ2h0c1tsaHNdOworICAg
ICAgICB1aW50OF90IHJpZ2h0V2VpZ2h0ID0gZHVjZXRMZXZlbDFXZWlnaHRzW3Joc107CiAgICAg
ICAgIGlmIChsZWZ0V2VpZ2h0ID09IHJpZ2h0V2VpZ2h0KQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIHJldHVybiBsZWZ0V2VpZ2h0ID4gcmlnaHRXZWlnaHQgPyBVQ09MX0dSRUFURVIg
OiBVQ09MX0xFU1M7CiAgICAgfQogCi0gICAgaWYgKGxlbmd0aDEgPT0gbGVuZ3RoMikKKyAgICBp
ZiAobGVuZ3RoMSA9PSBsZW5ndGgyKSB7CisgICAgICAgIGlmIChub3RTYW1lQ2hhcmFjdGVycykK
KyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQVNDSUlXaXRoVUNBRFVDRVRMZXZlbDMoY2hhcmFj
dGVyczEsIGNoYXJhY3RlcnMyLCBsZW5ndGgxKTsKICAgICAgICAgcmV0dXJuIFVDT0xfRVFVQUw7
CisgICAgfQogICAgIHJldHVybiBsZW5ndGgxID4gbGVuZ3RoMiA/IFVDT0xfR1JFQVRFUiA6IFVD
T0xfTEVTUzsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBhMDkwMzExMGUyYmNjYWRmMTQ3ODkyYjRlMzc1YTVhYmE2OGYzYzY1Li5h
YjU4YTc4NThhNzhkYmE2MjQ3NDgwYTMwNmRiNWFhODZlNjA3ODdiIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisy
MDIxLTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gRFVDRVQgbGV2ZWwtMSB3ZWlnaHMgYXJlIGVxdWFsIGlmIGNoYXJhY3RlcnMgYXJlIGFs
cGhhYmV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzdHJlc3MvZHVjZXQtbGV2ZWwtMy1vci00LWNvbXBhcmlzb24uanM6IEFkZGVkLgorICAgICAg
ICAoc2hvdWxkQmUpOgorCiAyMDIxLTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvc3RyZXNzL2R1Y2V0LWxldmVsLTMtb3ItNC1jb21wYXJpc29uLmpzIGIvSlNUZXN0cy9zdHJl
c3MvZHVjZXQtbGV2ZWwtMy1vci00LWNvbXBhcmlzb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU2YmQyNmE5
NzM0N2I1MWFkZWNjZjIzYWRjNTlkYjFkMTZkNDQwMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2R1Y2V0LWxldmVsLTMtb3ItNC1jb21wYXJpc29uLmpzCkBAIC0wLDAgKzEsMTQg
QEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFs
ICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBh
Y3R1YWwpOworfQorCit2YXIgY29sbGF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcignZW4tVVMnKTsK
Kworc2hvdWxkQmUoY29sbGF0b3IuY29tcGFyZSgiQUJDIiwgIkFCRCDDgyIpLCAtMSk7CitzaG91
bGRCZShjb2xsYXRvci5jb21wYXJlKCJBQkQgw4MiLCAiQWJFIiksIC0xKTsKK3Nob3VsZEJlKGNv
bGxhdG9yLmNvbXBhcmUoIkFiRSIsICJBQkMiKSwgMSk7CisKK3Nob3VsZEJlKGNvbGxhdG9yLmNv
bXBhcmUoIkFCIC0gQVMgRm9vYmFyIiwgIkFCIC0gQVMgUHVsaGVpbSBLw4PGksOCwqR0aGVyIiks
IC0xKTsKK3Nob3VsZEJlKGNvbGxhdG9yLmNvbXBhcmUoIkFCIC0gQVMgUHVsaGVpbSBLw4PGksOC
wqR0aGVyIiwgIkFieiAtIEJheiBRdXgiKSwgLTEpOworc2hvdWxkQmUoY29sbGF0b3IuY29tcGFy
ZSgiQWJ6IC0gQmF6IFF1eCIsICJBQiAtIEFTIEZvb2JhciIpLCAxKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425444</attachid>
            <date>2021-04-07 14:54:31 -0700</date>
            <delta_ts>2021-04-07 15:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224047-20210407145431.patch</filename>
            <type>text/plain</type>
            <size>10867</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDM2ZTAwOWUwMDJmMjkzMjU5YjM1NDFkNzI2MGFjNmJlNjIyOWQ5Li4wOGMxOGRkYzcxNGNjMTIz
MGFhN2NjNjkyMzhkMjIxZjQ2MjYxZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERVQ0VUIGxldmVsLTEgd2VpZ2hzIGFyZSBlcXVhbCBpZiBjaGFy
YWN0ZXJzIGFyZSBhbHBoYWJldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFTQ0lJIGNvbXBhcmlzb24gb3B0aW1pemF0aW9uIHdhcyBiYXNlZCBvbiB0
aGF0IERVQ0VUIGxldmVsLTEgd2VpZ2h0cyBhcmUgYWxsIGRpZmZlcmVudCAoZXhjZXB0IGZvciAw
MDAwIGNhc2UpLCBidXQgdGhpcyB3YXMgd3JvbmcuCisgICAgICAgIElmIHdlIGhhdmUgdGhlIHNh
bWUgbGF0aW4gbGV0dGVycyB3aXRoIGRpZmZlcmVudCBjYXBpdGFsaXphdGlvbiwgdGhlbiB0aGV5
IGhhdmUgdGhlIHNhbWUgbGV2ZWwtMSB3ZWlnaHQgKCdBJyB2LnMuICdhJykuCisgICAgICAgIElu
IHRoaXMgcGF0Y2gsCisKKyAgICAgICAgICAgIDEuIElmIHdlIGZvdW5kIHRoYXQgdGhlIHJlc3Vs
dCBvZiBsZXZlbC0xIHdlaWdodCBjb21wYXJpc29uIGlzIGVxdWFsLCBhbmQgY2hhcmFjdGVycyBh
cmUgbm90IGVxYXVsLCB0aGVuIHdlIGRvIGxldmVsLTMgd2VpZ2h0IGNvbXBhcmlzb24uCisgICAg
ICAgICAgICAgICBXZSBkbyBub3QgcGVyZm9ybSBsZXZlbC0yIHNpbmNlIHRoZXkgYXJlIGFsbCB0
aGUgc2FtZSB3ZWlnaHQgaW4gQVNDSUkgKGV4Y2x1ZGluZyBjb250cm9sIGNoYXJhY3RlcnMpIHJl
Z2lvbi4KKyAgICAgICAgICAgIDIuIFdlIGRvIG5vdCBwZXJmb3JtIGxldmVsLTQgd2VpZ2h0IGNv
bXBhcmlzb24gc2luY2UgbGV2ZWwtMSBhbmQgbGV2ZWwtMyBjb21wYXJpc29uIG11c3QgZGlzdGlu
Z3Vpc2ggdGhlIHN0cmluZ3MuIExldmVsLTEgd2VpZ2h0cyBhcmUgZXF1YWwKKyAgICAgICAgICAg
ICAgIG9ubHkgd2hlbiBjaGFyYWN0ZXJzIGFyZSB0aGUgc2FtZSBsYXRpbiBsZXR0ZXJzLiBBbmQg
bGV2ZWwtMyB3ZWlnaHQgcHV0cyBkaWZmZXJlbnQgd2VpZ2h0cyBmb3IgY2FwaXRhbCBsYXRpbiBs
ZXR0ZXJzLiBTaW5jZSB3ZSBhbHJlYWR5IGtub3cKKyAgICAgICAgICAgICAgIHRoYXQgdGhlc2Ug
c3RyaW5ncyBhcmUgZGlmZmVyZW50IHdoaWxlIHRoZXkgYXJlIGVxdWFsIGluIGxldmVsLTEgd2Vp
Z2h0IGNvbXBhcmlzb24sIHRoZSBvbmx5IGNhc2UgaXMgdGhhdCB0aGV5IGhhdmUgc2FtZSBsYXRp
biBsZXR0ZXJzIGluCisgICAgICAgICAgICAgICB0aGUgc2FtZSBwb3NpdGlvbi4gSW4gdGhhdCBj
YXNlLCBsZXZlbC0zIHdlaWdodCBtdXN0IHNheSBkaWZmZXJlbnQgcmVzdWx0cyBmb3IgdGhlc2Ug
Y2hhcmFjdGVycyBzbyB0aGF0IHdlIG5ldmVyIG1lZXQgImVxdWFsIiBzdGF0dXMgaW4KKyAgICAg
ICAgICAgICAgIGxldmVsLTMgd2VpZ2h0IGNvbXBhcmlzb24gaWYgY2hhcmFjdGVycyBhcmUgZGlm
ZmVyZW50LgorCisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
Lmg6CisgICAgICAgIChKU0M6OmNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKToKKyAgICAg
ICAgKEpTQzo6Y29tcGFyZUFTQ0lJV2l0aFVDQURVQ0VUTGV2ZWwzKToKKyAgICAgICAgKEpTQzo6
Y29tcGFyZUFTQ0lJV2l0aFVDQURVQ0VUKToKKwogMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVzZSBGaXhlZFZlY3RvciBtb3Jl
IGluIGJ5dGVjb2RlIGRpciBhbmQgSnVtcFRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDlkNTM2ZDc0YzAxOWQxOGRhNzU4MzdkNTlhYjcz
ODc5NmVlZDYwMjkuLmNlYWQxMDZjMzM1ZTgzNjQwZmZhMGM1OTBjYWI2OWIyMzU2MTNhNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC00MzIs
MjcgKzQzMiw1MyBAQCBjb25zdCBMb2NhbGVTZXQmIGludGxBdmFpbGFibGVMb2NhbGVzKCkKIC8v
ICAgICAzLiBJZiBhbiBpbnB1dCBpcyBhbiBBU0NJSSBzdHJpbmcsIG5vIG11bHRpcGxlIGNoYXJh
Y3RlciBjb2xsYXRpb24gZWxlbWVudHMgZXhpc3QuIFNvIG5vIHNwZWNpYWwgaGFuZGxpbmcgaW4g
VUNBIHN0ZXAtMiBpcyByZXF1aXJlZC4gRm9yIGV4YW1wbGUsICJMwrciIGlzIG5vdCBBU0NJSS4K
IC8vICAgICA0LiBVQ0Egc3RlcC0zIGhhbmRsZXMgMDAwMCB3ZWlnaHRlZCBjaGFyYWN0ZXJzIHNw
ZWNpYWxseS4gQW5kIEFTQ0lJIGNvbnRhaW5zIHRoZXNlIGNoYXJhY3RlcnMuIEJ1dCAwMDAwIGVs
ZW1lbnRzIGFyZSB1c2VkIG9ubHkgZm9yIHJhcmUgY29udHJvbCBjaGFyYWN0ZXJzLgogLy8gICAg
ICAgIFdlIGNhbiBpZ25vcmUgdGhpcyBzcGVjaWFsIGhhbmRsaW5nIGlmIEFTQ0lJIHN0cmluZ3Mg
ZG8gbm90IGluY2x1ZGUgY29udHJvbCBjaGFyYWN0ZXJzLgotLy8gICAgIDUuIEV4Y2VwdCAwMDAw
IGNhc2VzLCBhbGwgY2hhcmFjdGVycycgbGV2ZWwtMSB3ZWlnaHRzIGFyZSBkaWZmZXJlbnQuIEFu
ZCBsZXZlbC0yIHdlaWdodHMgYXJlIGFsd2F5cyAwMDIwLCB3aGljaCBpcyBsb3dlciB0aGFuIGFu
eSBsZXZlbC0xIHdlaWdodHMuCi0vLyAgICAgICAgVGhpcyBtZWFucyB0aGF0IGJpbmFyeSBjb21w
YXJpc29uIGluIFVDQSBzdGVwLTQgZG8gbm90IG5lZWQgdG8gY2hlY2sgbGV2ZWwgMn4gd2VpZ2h0
cy4KKy8vICAgICA1LiBMZXZlbC0xIHdlaWdodHMgYXJlIGRpZmZlcmVudCBleGNlcHQgZm9yIDAw
MDAgY2FzZXMgYW5kIGNhcGl0YWwgLyBsb3dlciBBU0NJSSBjaGFyYWN0ZXJzLiBBbGwgbm9uLTAw
MDAgZWxlbWVudHMgYXJlIGxhcmdlciB0aGFuIDAwMDAuCisvLyAgICAgNi4gTGV2ZWwtMiB3ZWln
aHRzIGFyZSBhbHdhc3kgMDAyMCBleGNlcHQgZm9yIDAwMDAgY2FzZXMuIFNvIGlmIHdlIGluY2x1
ZGUgMDAwMCBjaGFyYWN0ZXJzLCB3ZSBkbyBub3QgbmVlZCB0byBwZXJmb3JtIGxldmVsLTIgd2Vp
Z2h0IGNvbXBhcmlzb24uCisvLyAgICAgNy4gSW4gYWxsIGxldmVscywgY2hhcmFjdGVycyBoYXZl
IG5vbi0wMDAwIHdlaWdodHMgaWYgaXQgZG9lcyBub3QgaGF2ZSAwMDAwIHdlaWdodCBpbiBsZXZl
bC0xLgorLy8gICAgIDguIEluIGxldmVsLTEsIHdlaWdodHMgYXJlIHRoZSBzYW1lIG9ubHkgd2hl
biBjaGFyYWN0ZXJzIGFyZSB0aGUgc2FtZSBsYXRpbiBsZXR0ZXJzICgnQScgdi5zLiAnYScpLiBJ
ZiBsZXZlbC0xIHdlaWdodCBjb21wYXJpc29uIHNheXMgRVFVQUwsIGFuZCBpZiBjaGFyYWN0ZXJz
IGFyZSBub3QgYmluYXJ5LWVxdWFsLAorLy8gICAgICAgIHRoZW4sIHRoZSBvbmx5IGNhc2UgaXMg
dGhleSBhcmUgaW5jbHVkaW5nIHRoZSBzYW1lIGxhdGluIGxldHRlcnMgd2l0aCBkaWZmZXJlbnQg
Y2FwaXRhbGl6YXRpb24gYXQgdGhlIHNhbWUgcG9zaXRpb24uIExldmVsLTMgd2VpZ2h0IGNvbXBh
cmlzb24gbXVzdCBkaXN0aW5ndWlzaCB0aGVtIHNpbmNlIGxldmVsLTMKKy8vICAgICAgICB3ZWln
aHQgaXMgc2V0IG9ubHkgZm9yIGxhdGluIGNhcGl0YWwgbGV0dGVycy4gVGh1cywgd2UgZG8gbm90
IG5lZWQgdG8gcGVyZm9ybSBsZXZlbC00IHdlaWdodCBjb21wYXJpc29uLgogLy8KLS8vICBCYXNl
ZCBvbiB0aGUgYWJvdmUgb2JzZXJ2YXRpb24sIG91ciBmYXN0IHBhdGggaGFuZGxlcyBBU0NJSSBz
dHJpbmdzIGV4Y2x1ZGluZyBjb250cm9sIGNoYXJhY3RlcnMuIFRoZSBmb2xsb3dpbmcgd2VpZ2h0
IGlzIHJlY29tcHV0ZWQgd2VpZ2h0cyBmcm9tIGxldmVsLTEgd2VpZ2h0cy4KLWNvbnN0IHVpbnQ4
X3QgZHVjZXRXZWlnaHRzWzEyOF0gPSB7CisvLyAgQmFzZWQgb24gdGhlIGFib3ZlIG9ic2VydmF0
aW9uLCBvdXIgZmFzdCBwYXRoIGhhbmRsZXMgQVNDSUkgc3RyaW5ncyBleGNsdWRpbmcgY29udHJv
bCBjaGFyYWN0ZXJzLiBXZSBmaXJzdCBjb21wYXJlIHN0cmluZ3Mgd2l0aCBsZXZlbC0xIHdlaWdo
dHMuIEFuZCB0aGVuLAorLy8gIGlmIHdlIGZvdW5kIHRoZXkgYXJlIHRoZSBzYW1lIGFuZCBpZiB3
ZSBmb3VuZCB0aGV5IGFyZSBub3QgYmluYXJ5LWVxdWFsIHN0cmluZ3MsIHRoZW4gd2UgcGVyZm9y
bSBjb21wYXJpc29uIHdpdGggbGV2ZWwtMyBhbmQgbGV2ZWwtNCB3ZWlnaHRzLgorY29uc3QgdWlu
dDhfdCBkdWNldExldmVsMVdlaWdodHNbMTI4XSA9IHsKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgIDAsIDAsIDEsIDIsIDMsIDQsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDUsIDExLCAxNSwgMjcsIDM3
LCAyOCwgMjYsIDE0LAorICAgIDE2LCAxNywgMjMsIDMxLCA4LCA3LCAxMywgMjQsCisgICAgMzgs
IDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LAorICAgIDQ2LCA0NywgMTAsIDksIDMyLCAzMywg
MzQsIDEyLAorICAgIDIyLCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwKKyAgICA1NSwgNTYs
IDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsCisgICAgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjks
IDcwLAorICAgIDcxLCA3MiwgNzMsIDE4LCAyNSwgMTksIDMwLCA2LAorICAgIDI5LCA0OCwgNDks
IDUwLCA1MSwgNTIsIDUzLCA1NCwKKyAgICA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIs
CisgICAgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLAorICAgIDcxLCA3MiwgNzMsIDIw
LCAzNSwgMjEsIDM2LCAwLAorfTsKKworLy8gTGV2ZWwgMiBhcmUgYWxsIHplcm9zLgorCitjb25z
dCB1aW50OF90IGR1Y2V0TGV2ZWwzV2VpZ2h0c1sxMjhdID0geworICAgIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAxLCAxLCAx
LCAxLCAxLCAxLCAxLAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwg
MSwgMSwgMSwgMSwgMSwKKyAgICAxLCAxLCAxLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAxLCAy
LCAzLCA0LCA1LCAwLCAwLAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCiAgICAgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwKLSAgICA2LCAxMiwgMTYsIDI4LCAzOCwgMjksIDI3LCAxNSwKLSAg
ICAxNywgMTgsIDI0LCAzMiwgOSwgOCwgMTQsIDI1LAotICAgIDM5LCA0MCwgNDEsIDQyLCA0Mywg
NDQsIDQ1LCA0NiwKLSAgICA0NywgNDgsIDExLCAxMCwgMzMsIDM0LCAzNSwgMTMsCi0gICAgMjMs
IDUwLCA1MiwgNTQsIDU2LCA1OCwgNjAsIDYyLAotICAgIDY0LCA2NiwgNjgsIDcwLCA3MiwgNzQs
IDc2LCA3OCwKLSAgICA4MCwgODIsIDg0LCA4NiwgODgsIDkwLCA5MiwgOTQsCi0gICAgOTYsIDk4
LCAxMDAsIDE5LCAyNiwgMjAsIDMxLCA3LAotICAgIDMwLCA0OSwgNTEsIDUzLCA1NSwgNTcsIDU5
LCA2MSwKLSAgICA2MywgNjUsIDY3LCA2OSwgNzEsIDczLCA3NSwgNzcsCi0gICAgNzksIDgxLCA4
MywgODUsIDg3LCA4OSwgOTEsIDkzLAotICAgIDk1LCA5NywgOTksIDIxLCAzNiwgMjIsIDM3LCAw
LAogfTsKIAogY29uc3QgTG9jYWxlU2V0JiBpbnRsQ29sbGF0b3JBdmFpbGFibGVMb2NhbGVzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCA2MTQwYzIw
ZDZmZDNlOGU4YjUyODk3NWQ2Mzg0OGZmMTgzZmNhYjcxLi5lOTNjOWJlODQ0ODFlZWY0YzNmNzVm
NzYzNWQ5ODE2ZjFlODdkYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5oCkBAIC0zNSw3ICszNSw4IEBAIHN0cnVjdCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9y
OwogCiBuYW1lc3BhY2UgSlNDIHsKIAotZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZHVjZXRXZWlnaHRz
WzEyOF07CitleHRlcm4gY29uc3QgdWludDhfdCBkdWNldExldmVsMVdlaWdodHNbMTI4XTsKK2V4
dGVybiBjb25zdCB1aW50OF90IGR1Y2V0TGV2ZWwzV2VpZ2h0c1sxMjhdOwogCiBlbnVtIGNsYXNz
IExvY2FsZU1hdGNoZXIgOiB1aW50OF90IHsKICAgICBMb29rdXAsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCAyNjM5YmQwNTVi
YjZjMzlhYjZjYWI3ODlmZmFhOGI2NGNkNDY0MWQ3Li4yYWRiODViNTQxMWVjNzU0ZmQ3NzliNjM2
NjQwMjViNWIyZjk1MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTE1NCwyNyArMTU0LDQ5IEBAIFJlc3VsdFR5cGUgaW50
bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBPcHRpb25hbDxKU09iamVjdCY+
IG9wdGlvbnMsCiAKIEFMV0FZU19JTkxJTkUgYm9vbCBjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFy
aXNvbihVQ2hhciBjaGFyYWN0ZXIpCiB7Ci0gICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVyKSAm
JiBkdWNldFdlaWdodHNbY2hhcmFjdGVyXTsKKyAgICByZXR1cm4gaXNBU0NJSShjaGFyYWN0ZXIp
ICYmIGR1Y2V0TGV2ZWwxV2VpZ2h0c1tjaGFyYWN0ZXJdOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+CitVQ29sbGF0aW9uUmVz
dWx0IGNvbXBhcmVBU0NJSVdpdGhVQ0FEVUNFVExldmVsMyhjb25zdCBDaGFyYWN0ZXJUeXBlMSog
Y2hhcmFjdGVyczEsIGNvbnN0IENoYXJhY3RlclR5cGUyKiBjaGFyYWN0ZXJzMiwgdW5zaWduZWQg
bGVuZ3RoKQoreworICAgIGZvciAodW5zaWduZWQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8IGxl
bmd0aDsgKytwb3NpdGlvbikgeworICAgICAgICBhdXRvIGxocyA9IGNoYXJhY3RlcnMxW3Bvc2l0
aW9uXTsKKyAgICAgICAgYXV0byByaHMgPSBjaGFyYWN0ZXJzMltwb3NpdGlvbl07CisgICAgICAg
IHVpbnQ4X3QgbGVmdFdlaWdodCA9IGR1Y2V0TGV2ZWwzV2VpZ2h0c1tsaHNdOworICAgICAgICB1
aW50OF90IHJpZ2h0V2VpZ2h0ID0gZHVjZXRMZXZlbDNXZWlnaHRzW3Joc107CisgICAgICAgIGlm
IChsZWZ0V2VpZ2h0ID09IHJpZ2h0V2VpZ2h0KQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIHJldHVybiBsZWZ0V2VpZ2h0ID4gcmlnaHRXZWlnaHQgPyBVQ09MX0dSRUFURVIgOiBVQ09M
X0xFU1M7CisgICAgfQorICAgIHJldHVybiBVQ09MX0VRVUFMOwogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyYWN0ZXJUeXBlMSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTI+CiBpbmxpbmUgVUNv
bGxhdGlvblJlc3VsdCBjb21wYXJlQVNDSUlXaXRoVUNBRFVDRVQoY29uc3QgQ2hhcmFjdGVyVHlw
ZTEqIGNoYXJhY3RlcnMxLCB1bnNpZ25lZCBsZW5ndGgxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiog
Y2hhcmFjdGVyczIsIHVuc2lnbmVkIGxlbmd0aDIpCiB7CisgICAgYm9vbCBub3RTYW1lQ2hhcmFj
dGVycyA9IGZhbHNlOwogICAgIHVuc2lnbmVkIGNvbW1vbkxlbmd0aCA9IHN0ZDo6bWluKGxlbmd0
aDEsIGxlbmd0aDIpOwogICAgIGZvciAodW5zaWduZWQgcG9zaXRpb24gPSAwOyBwb3NpdGlvbiA8
IGNvbW1vbkxlbmd0aDsgKytwb3NpdGlvbikgewogICAgICAgICBhdXRvIGxocyA9IGNoYXJhY3Rl
cnMxW3Bvc2l0aW9uXTsKICAgICAgICAgYXV0byByaHMgPSBjaGFyYWN0ZXJzMltwb3NpdGlvbl07
CiAgICAgICAgIEFTU0VSVChjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihsaHMpKTsKICAg
ICAgICAgQVNTRVJUKGNhblVzZUFTQ0lJVUNBRFVDRVRDb21wYXJpc29uKHJocykpOwotICAgICAg
ICB1aW50OF90IGxlZnRXZWlnaHQgPSBkdWNldFdlaWdodHNbbGhzXTsKLSAgICAgICAgdWludDhf
dCByaWdodFdlaWdodCA9IGR1Y2V0V2VpZ2h0c1tyaHNdOworICAgICAgICBpZiAobGhzID09IHJo
cykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBub3RTYW1lQ2hhcmFjdGVycyA9IHRy
dWU7CisgICAgICAgIHVpbnQ4X3QgbGVmdFdlaWdodCA9IGR1Y2V0TGV2ZWwxV2VpZ2h0c1tsaHNd
OworICAgICAgICB1aW50OF90IHJpZ2h0V2VpZ2h0ID0gZHVjZXRMZXZlbDFXZWlnaHRzW3Joc107
CiAgICAgICAgIGlmIChsZWZ0V2VpZ2h0ID09IHJpZ2h0V2VpZ2h0KQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgIHJldHVybiBsZWZ0V2VpZ2h0ID4gcmlnaHRXZWlnaHQgPyBVQ09MX0dS
RUFURVIgOiBVQ09MX0xFU1M7CiAgICAgfQogCi0gICAgaWYgKGxlbmd0aDEgPT0gbGVuZ3RoMikK
KyAgICBpZiAobGVuZ3RoMSA9PSBsZW5ndGgyKSB7CisgICAgICAgIGlmIChub3RTYW1lQ2hhcmFj
dGVycykKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJlQVNDSUlXaXRoVUNBRFVDRVRMZXZlbDMo
Y2hhcmFjdGVyczEsIGNoYXJhY3RlcnMyLCBsZW5ndGgxKTsKICAgICAgICAgcmV0dXJuIFVDT0xf
RVFVQUw7CisgICAgfQogICAgIHJldHVybiBsZW5ndGgxID4gbGVuZ3RoMiA/IFVDT0xfR1JFQVRF
UiA6IFVDT0xfTEVTUzsKIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rl
c3RzL0NoYW5nZUxvZwppbmRleCBhMDkwMzExMGUyYmNjYWRmMTQ3ODkyYjRlMzc1YTVhYmE2OGYz
YzY1Li5hYjU4YTc4NThhNzhkYmE2MjQ3NDgwYTMwNmRiNWFhODZlNjA3ODdiIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIxLTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAg
ICAgICAgW0pTQ10gRFVDRVQgbGV2ZWwtMSB3ZWlnaHMgYXJlIGVxdWFsIGlmIGNoYXJhY3RlcnMg
YXJlIGFscGhhYmV0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzdHJlc3MvZHVjZXQtbGV2ZWwtMy1vci00LWNvbXBhcmlzb24uanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorCiAyMDIxLTA0LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gVXBkYXRlIHRlc3QyNjIKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL2R1Y2V0LWxldmVsLTMtb3ItNC1jb21wYXJpc29uLmpzIGIvSlNUZXN0
cy9zdHJlc3MvZHVjZXQtbGV2ZWwtMy1vci00LWNvbXBhcmlzb24uanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M3
MmMyOTFjYjk5OGI5YTVkMzFlMzFlOWRlZjRmMTgyNGEyYjM0NAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2R1Y2V0LWxldmVsLTMtb3ItNC1jb21wYXJpc29uLmpzCkBAIC0wLDAg
KzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorCit2YXIgY29sbGF0b3IgPSBuZXcgSW50bC5Db2xsYXRvcignZW4t
VVMnKTsKKworc2hvdWxkQmUoY29sbGF0b3IuY29tcGFyZSgiQUJDIiwgIkFCRCDDgyIpLCAtMSk7
CitzaG91bGRCZShjb2xsYXRvci5jb21wYXJlKCJBQkQgw4MiLCAiQWJFIiksIC0xKTsKK3Nob3Vs
ZEJlKGNvbGxhdG9yLmNvbXBhcmUoIkFiRSIsICJBQkMiKSwgMSk7CitzaG91bGRCZShjb2xsYXRv
ci5jb21wYXJlKCJBQkMiLCAiYWJjIiksIDEpOworCitzaG91bGRCZShjb2xsYXRvci5jb21wYXJl
KCJBQiAtIEFTIEZvb2JhciIsICJBQiAtIEFTIFB1bGhlaW0gS8ODxpLDgsKkdGhlciIpLCAtMSk7
CitzaG91bGRCZShjb2xsYXRvci5jb21wYXJlKCJBQiAtIEFTIFB1bGhlaW0gS8ODxpLDgsKkdGhl
ciIsICJBYnogLSBCYXogUXV4IiksIC0xKTsKK3Nob3VsZEJlKGNvbGxhdG9yLmNvbXBhcmUoIkFi
eiAtIEJheiBRdXgiLCAiQUIgLSBBUyBGb29iYXIiKSwgMSk7Cg==
</data>
<flag name="review"
          id="445409"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>425454</attachid>
            <date>2021-04-07 16:44:17 -0700</date>
            <delta_ts>2021-04-07 16:44:17 -0700</delta_ts>
            <desc>sorted DUCET data (ASCII only) excluding 0000 entries</desc>
            <filename>sorted.txt</filename>
            <type>text/plain</type>
            <size>4984</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">MDAwOSAgOyBbMDIwMS4wMDIwLjAwMDIuMDAwOV0gIyA8Q0hBUkFDVEVSIFRBQlVMQVRJT04+CjAw
MEEgIDsgWzAyMDIuMDAyMC4wMDAyLjAwMEFdICMgPExJTkUgRkVFRCAoTEYpPgowMDBCICA7IFsw
MjAzLjAwMjAuMDAwMi4wMDBCXSAjIDxMSU5FIFRBQlVMQVRJT04+CjAwMEMgIDsgWzAyMDQuMDAy
MC4wMDAyLjAwMENdICMgPEZPUk0gRkVFRCAoRkYpPgowMDBEICA7IFswMjA1LjAwMjAuMDAwMi4w
MDBEXSAjIDxDQVJSSUFHRSBSRVRVUk4gKENSKT4KMDAyMCAgOyBbMDIwOS4wMDIwLjAwMDIuMDAy
MF0gIyBTUEFDRQowMDIxICA7IFswMjVELjAwMjAuMDAwMi4wMDIxXSAjIEVYQ0xBTUFUSU9OIE1B
UksKMDAyMiAgOyBbMDJGMC4wMDIwLjAwMDIuMDAyMl0gIyBRVU9UQVRJT04gTUFSSwowMDIzICA7
IFswMzc5LjAwMjAuMDAwMi4wMDIzXSAjIE5VTUJFUiBTSUdOCjAwMjQgIDsgWzE1QkEuMDAyMC4w
MDAyLjAwMjRdICMgRE9MTEFSIFNJR04KMDAyNSAgOyBbMDM3QS4wMDIwLjAwMDIuMDAyNV0gIyBQ
RVJDRU5UIFNJR04KMDAyNiAgOyBbMDM3Ny4wMDIwLjAwMDIuMDAyNl0gIyBBTVBFUlNBTkQKMDAy
NyAgOyBbMDJFOS4wMDIwLjAwMDIuMDAyN10gIyBBUE9TVFJPUEhFCjAwMjggIDsgWzAyRkEuMDAy
MC4wMDAyLjAwMjhdICMgTEVGVCBQQVJFTlRIRVNJUwowMDI5ICA7IFswMkZCLjAwMjAuMDAwMi4w
MDI5XSAjIFJJR0hUIFBBUkVOVEhFU0lTCjAwMkEgIDsgWzAzNzAuMDAyMC4wMDAyLjAwMkFdICMg
QVNURVJJU0sKMDAyQiAgOyBbMDU5Ri4wMDIwLjAwMDIuMDAyQl0gIyBQTFVTIFNJR04KMDAyQyAg
OyBbMDIyMC4wMDIwLjAwMDIuMDAyQ10gIyBDT01NQQowMDJEICA7IFswMjBELjAwMjAuMDAwMi4w
MDJEXSAjIEhZUEhFTi1NSU5VUwowMDJFICA7IFswMjcyLjAwMjAuMDAwMi4wMDJFXSAjIEZVTEwg
U1RPUAowMDJGICA7IFswMzc1LjAwMjAuMDAwMi4wMDJGXSAjIFNPTElEVVMKMDAzMCAgOyBbMTVF
MS4wMDIwLjAwMDIuMDAzMF0gIyBESUdJVCBaRVJPCjAwMzEgIDsgWzE1RTIuMDAyMC4wMDAyLjAw
MzFdICMgRElHSVQgT05FCjAwMzIgIDsgWzE1RTMuMDAyMC4wMDAyLjAwMzJdICMgRElHSVQgVFdP
CjAwMzMgIDsgWzE1RTQuMDAyMC4wMDAyLjAwMzNdICMgRElHSVQgVEhSRUUKMDAzNCAgOyBbMTVF
NS4wMDIwLjAwMDIuMDAzNF0gIyBESUdJVCBGT1VSCjAwMzUgIDsgWzE1RTYuMDAyMC4wMDAyLjAw
MzVdICMgRElHSVQgRklWRQowMDM2ICA7IFsxNUU3LjAwMjAuMDAwMi4wMDM2XSAjIERJR0lUIFNJ
WAowMDM3ICA7IFsxNUU4LjAwMjAuMDAwMi4wMDM3XSAjIERJR0lUIFNFVkVOCjAwMzggIDsgWzE1
RTkuMDAyMC4wMDAyLjAwMzhdICMgRElHSVQgRUlHSFQKMDAzOSAgOyBbMTVFQS4wMDIwLjAwMDIu
MDAzOV0gIyBESUdJVCBOSU5FCjAwM0EgIDsgWzAyMzYuMDAyMC4wMDAyLjAwM0FdICMgQ09MT04K
MDAzQiAgOyBbMDIzMS4wMDIwLjAwMDIuMDAzQl0gIyBTRU1JQ09MT04KMDAzQyAgOyBbMDVBMy4w
MDIwLjAwMDIuMDAzQ10gIyBMRVNTLVRIQU4gU0lHTgowMDNEICA7IFswNUE0LjAwMjAuMDAwMi4w
MDNEXSAjIEVRVUFMUyBTSUdOCjAwM0UgIDsgWzA1QTUuMDAyMC4wMDAyLjAwM0VdICMgR1JFQVRF
Ui1USEFOIFNJR04KMDAzRiAgOyBbMDI2Mi4wMDIwLjAwMDIuMDAzRl0gIyBRVUVTVElPTiBNQVJL
CjAwNDAgIDsgWzAzNkYuMDAyMC4wMDAyLjAwNDBdICMgQ09NTUVSQ0lBTCBBVAowMDQxICA7IFsx
NUVCLjAwMjAuMDAwOC4wMDQxXSAjIExBVElOIENBUElUQUwgTEVUVEVSIEEKMDA0MiAgOyBbMTYw
MS4wMDIwLjAwMDguMDA0Ml0gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCjAwNDMgIDsgWzE2MTku
MDAyMC4wMDA4LjAwNDNdICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQwowMDQ0ICA7IFsxNjJELjAw
MjAuMDAwOC4wMDQ0XSAjIExBVElOIENBUElUQUwgTEVUVEVSIEQKMDA0NSAgOyBbMTY0OC4wMDIw
LjAwMDguMDA0NV0gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCjAwNDYgIDsgWzE2ODAuMDAyMC4w
MDA4LjAwNDZdICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgowMDQ3ICA7IFsxNjhELjAwMjAuMDAw
OC4wMDQ3XSAjIExBVElOIENBUElUQUwgTEVUVEVSIEcKMDA0OCAgOyBbMTZCMC4wMDIwLjAwMDgu
MDA0OF0gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBICjAwNDkgIDsgWzE2QzkuMDAyMC4wMDA4LjAw
NDldICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQowMDRBICA7IFsxNkUyLjAwMjAuMDAwOC4wMDRB
XSAjIExBVElOIENBUElUQUwgTEVUVEVSIEoKMDA0QiAgOyBbMTZGQi4wMDIwLjAwMDguMDA0Ql0g
IyBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCjAwNEMgIDsgWzE3MEQuMDAyMC4wMDA4LjAwNENdICMg
TEFUSU4gQ0FQSVRBTCBMRVRURVIgTAowMDREICA7IFsxNzNELjAwMjAuMDAwOC4wMDREXSAjIExB
VElOIENBUElUQUwgTEVUVEVSIE0KMDA0RSAgOyBbMTc0Qi4wMDIwLjAwMDguMDA0RV0gIyBMQVRJ
TiBDQVBJVEFMIExFVFRFUiBOCjAwNEYgIDsgWzE3NkQuMDAyMC4wMDA4LjAwNEZdICMgTEFUSU4g
Q0FQSVRBTCBMRVRURVIgTwowMDUwICA7IFsxNzkyLjAwMjAuMDAwOC4wMDUwXSAjIExBVElOIENB
UElUQUwgTEVUVEVSIFAKMDA1MSAgOyBbMTdBNy4wMDIwLjAwMDguMDA1MV0gIyBMQVRJTiBDQVBJ
VEFMIExFVFRFUiBRCjAwNTIgIDsgWzE3QjkuMDAyMC4wMDA4LjAwNTJdICMgTEFUSU4gQ0FQSVRB
TCBMRVRURVIgUgowMDUzICA7IFsxN0VGLjAwMjAuMDAwOC4wMDUzXSAjIExBVElOIENBUElUQUwg
TEVUVEVSIFMKMDA1NCAgOyBbMTgxMi4wMDIwLjAwMDguMDA1NF0gIyBMQVRJTiBDQVBJVEFMIExF
VFRFUiBUCjAwNTUgIDsgWzE4MzIuMDAyMC4wMDA4LjAwNTVdICMgTEFUSU4gQ0FQSVRBTCBMRVRU
RVIgVQowMDU2ICA7IFsxODVCLjAwMjAuMDAwOC4wMDU2XSAjIExBVElOIENBUElUQUwgTEVUVEVS
IFYKMDA1NyAgOyBbMTg2RC4wMDIwLjAwMDguMDA1N10gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBX
CjAwNTggIDsgWzE4NzcuMDAyMC4wMDA4LjAwNThdICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAow
MDU5ICA7IFsxODdDLjAwMjAuMDAwOC4wMDU5XSAjIExBVElOIENBUElUQUwgTEVUVEVSIFkKMDA1
QSAgOyBbMTg5MS4wMDIwLjAwMDguMDA1QV0gIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCjAwNUIg
IDsgWzAyRkMuMDAyMC4wMDAyLjAwNUJdICMgTEVGVCBTUVVBUkUgQlJBQ0tFVAowMDVDICA7IFsw
Mzc2LjAwMjAuMDAwMi4wMDVDXSAjIFJFVkVSU0UgU09MSURVUwowMDVEICA7IFswMkZELjAwMjAu
MDAwMi4wMDVEXSAjIFJJR0hUIFNRVUFSRSBCUkFDS0VUCjAwNUUgIDsgWzA0MTUuMDAyMC4wMDAy
LjAwNUVdICMgQ0lSQ1VNRkxFWCBBQ0NFTlQKMDA1RiAgOyBbMDIwQi4wMDIwLjAwMDIuMDA1Rl0g
IyBMT1cgTElORQowMDYwICA7IFswNDEyLjAwMjAuMDAwMi4wMDYwXSAjIEdSQVZFIEFDQ0VOVAow
MDYxICA7IFsxNUVCLjAwMjAuMDAwMi4wMDYxXSAjIExBVElOIFNNQUxMIExFVFRFUiBBCjAwNjIg
IDsgWzE2MDEuMDAyMC4wMDAyLjAwNjJdICMgTEFUSU4gU01BTEwgTEVUVEVSIEIKMDA2MyAgOyBb
MTYxOS4wMDIwLjAwMDIuMDA2M10gIyBMQVRJTiBTTUFMTCBMRVRURVIgQwowMDY0ICA7IFsxNjJE
LjAwMjAuMDAwMi4wMDY0XSAjIExBVElOIFNNQUxMIExFVFRFUiBECjAwNjUgIDsgWzE2NDguMDAy
MC4wMDAyLjAwNjVdICMgTEFUSU4gU01BTEwgTEVUVEVSIEUKMDA2NiAgOyBbMTY4MC4wMDIwLjAw
MDIuMDA2Nl0gIyBMQVRJTiBTTUFMTCBMRVRURVIgRgowMDY3ICA7IFsxNjhELjAwMjAuMDAwMi4w
MDY3XSAjIExBVElOIFNNQUxMIExFVFRFUiBHCjAwNjggIDsgWzE2QjAuMDAyMC4wMDAyLjAwNjhd
ICMgTEFUSU4gU01BTEwgTEVUVEVSIEgKMDA2OSAgOyBbMTZDOS4wMDIwLjAwMDIuMDA2OV0gIyBM
QVRJTiBTTUFMTCBMRVRURVIgSQowMDZBICA7IFsxNkUyLjAwMjAuMDAwMi4wMDZBXSAjIExBVElO
IFNNQUxMIExFVFRFUiBKCjAwNkIgIDsgWzE2RkIuMDAyMC4wMDAyLjAwNkJdICMgTEFUSU4gU01B
TEwgTEVUVEVSIEsKMDA2QyAgOyBbMTcwRC4wMDIwLjAwMDIuMDA2Q10gIyBMQVRJTiBTTUFMTCBM
RVRURVIgTAowMDZEICA7IFsxNzNELjAwMjAuMDAwMi4wMDZEXSAjIExBVElOIFNNQUxMIExFVFRF
UiBNCjAwNkUgIDsgWzE3NEIuMDAyMC4wMDAyLjAwNkVdICMgTEFUSU4gU01BTEwgTEVUVEVSIE4K
MDA2RiAgOyBbMTc2RC4wMDIwLjAwMDIuMDA2Rl0gIyBMQVRJTiBTTUFMTCBMRVRURVIgTwowMDcw
ICA7IFsxNzkyLjAwMjAuMDAwMi4wMDcwXSAjIExBVElOIFNNQUxMIExFVFRFUiBQCjAwNzEgIDsg
WzE3QTcuMDAyMC4wMDAyLjAwNzFdICMgTEFUSU4gU01BTEwgTEVUVEVSIFEKMDA3MiAgOyBbMTdC
OS4wMDIwLjAwMDIuMDA3Ml0gIyBMQVRJTiBTTUFMTCBMRVRURVIgUgowMDczICA7IFsxN0VGLjAw
MjAuMDAwMi4wMDczXSAjIExBVElOIFNNQUxMIExFVFRFUiBTCjAwNzQgIDsgWzE4MTIuMDAyMC4w
MDAyLjAwNzRdICMgTEFUSU4gU01BTEwgTEVUVEVSIFQKMDA3NSAgOyBbMTgzMi4wMDIwLjAwMDIu
MDA3NV0gIyBMQVRJTiBTTUFMTCBMRVRURVIgVQowMDc2ICA7IFsxODVCLjAwMjAuMDAwMi4wMDc2
XSAjIExBVElOIFNNQUxMIExFVFRFUiBWCjAwNzcgIDsgWzE4NkQuMDAyMC4wMDAyLjAwNzddICMg
TEFUSU4gU01BTEwgTEVUVEVSIFcKMDA3OCAgOyBbMTg3Ny4wMDIwLjAwMDIuMDA3OF0gIyBMQVRJ
TiBTTUFMTCBMRVRURVIgWAowMDc5ICA7IFsxODdDLjAwMjAuMDAwMi4wMDc5XSAjIExBVElOIFNN
QUxMIExFVFRFUiBZCjAwN0EgIDsgWzE4OTEuMDAyMC4wMDAyLjAwN0FdICMgTEFUSU4gU01BTEwg
TEVUVEVSIFoKMDA3QiAgOyBbMDJGRS4wMDIwLjAwMDIuMDA3Ql0gIyBMRUZUIENVUkxZIEJSQUNL
RVQKMDA3QyAgOyBbMDVBNy4wMDIwLjAwMDIuMDA3Q10gIyBWRVJUSUNBTCBMSU5FCjAwN0QgIDsg
WzAyRkYuMDAyMC4wMDAyLjAwN0RdICMgUklHSFQgQ1VSTFkgQlJBQ0tFVAowMDdFICA7IFswNUE5
LjAwMjAuMDAwMi4wMDdFXSAjIFRJTERFCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425457</attachid>
            <date>2021-04-07 16:57:39 -0700</date>
            <delta_ts>2021-04-07 16:57:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224047-20210407165738.patch</filename>
            <type>text/plain</type>
            <size>10799</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MDM2ZTAwOWUwMDJmMjkzMjU5YjM1NDFkNzI2MGFjNmJlNjIyOWQ5Li44Mzg3ZjY3MDE5NDkzNTgy
ZGNhNTUwZjdmNjFjMDRlYzdjMTViNmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIERVQ0VUIGxldmVsLTEgd2VpZ2hzIGFyZSBlcXVhbCBpZiBjaGFy
YWN0ZXJzIGFyZSBhbHBoYWJldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpIGFu
ZCBNYXJrIExhbS4KKworICAgICAgICBBU0NJSSBjb21wYXJpc29uIG9wdGltaXphdGlvbiB3YXMg
YmFzZWQgb24gdGhhdCBEVUNFVCBsZXZlbC0xIHdlaWdodHMgYXJlIGFsbCBkaWZmZXJlbnQgKGV4
Y2VwdCBmb3IgMDAwMCBjYXNlKSwgYnV0IHRoaXMgd2FzIHdyb25nLgorICAgICAgICBJZiB3ZSBo
YXZlIHRoZSBzYW1lIGxhdGluIGxldHRlcnMgd2l0aCBkaWZmZXJlbnQgY2FwaXRhbGl6YXRpb24s
IHRoZW4gdGhleSBoYXZlIHRoZSBzYW1lIGxldmVsLTEgd2VpZ2h0ICgnQScgdi5zLiAnYScpLgor
ICAgICAgICBJbiB0aGlzIHBhdGNoLAorCisgICAgICAgICAgICAxLiBJZiB3ZSBmb3VuZCB0aGF0
IHRoZSByZXN1bHQgb2YgbGV2ZWwtMSB3ZWlnaHQgY29tcGFyaXNvbiBpcyBlcXVhbCwgYW5kIGNo
YXJhY3RlcnMgYXJlIG5vdCBlcXVhbCwgdGhlbiB3ZSBkbyBsZXZlbC0zIHdlaWdodCBjb21wYXJp
c29uLgorICAgICAgICAgICAgICAgV2UgZG8gbm90IHBlcmZvcm0gbGV2ZWwtMiBzaW5jZSB0aGV5
IGFyZSBhbGwgdGhlIHNhbWUgd2VpZ2h0IGluIEFTQ0lJIChleGNsdWRpbmcgY29udHJvbCBjaGFy
YWN0ZXJzKSByZWdpb24uCisgICAgICAgICAgICAyLiBXZSBkbyBub3QgcGVyZm9ybSBsZXZlbC00
IHdlaWdodCBjb21wYXJpc29uIHNpbmNlIGxldmVsLTEgYW5kIGxldmVsLTMgY29tcGFyaXNvbiBt
dXN0IGRpc3Rpbmd1aXNoIHRoZSBzdHJpbmdzLiBMZXZlbC0xIHdlaWdodHMgYXJlIGVxdWFsCisg
ICAgICAgICAgICAgICBvbmx5IHdoZW4gY2hhcmFjdGVycyBhcmUgdGhlIHNhbWUgbGF0aW4gbGV0
dGVycy4gQW5kIGxldmVsLTMgd2VpZ2h0IHB1dHMgZGlmZmVyZW50IHdlaWdodHMgZm9yIGNhcGl0
YWwgbGF0aW4gbGV0dGVycy4gU2luY2Ugd2UgYWxyZWFkeSBrbm93CisgICAgICAgICAgICAgICB0
aGF0IHRoZXNlIHN0cmluZ3MgYXJlIGRpZmZlcmVudCB3aGlsZSB0aGV5IGFyZSBlcXVhbCBpbiBs
ZXZlbC0xIHdlaWdodCBjb21wYXJpc29uLCB0aGUgb25seSBjYXNlIGlzIHRoYXQgdGhleSBoYXZl
IHNhbWUgbGF0aW4gbGV0dGVycyBpbgorICAgICAgICAgICAgICAgdGhlIHNhbWUgcG9zaXRpb24u
IEluIHRoYXQgY2FzZSwgbGV2ZWwtMyB3ZWlnaHQgbXVzdCBzYXkgZGlmZmVyZW50IHJlc3VsdHMg
Zm9yIHRoZXNlIGNoYXJhY3RlcnMgc28gdGhhdCB3ZSBuZXZlciBtZWV0ICJlcXVhbCIgc3RhdHVz
IGluCisgICAgICAgICAgICAgICBsZXZlbC0zIHdlaWdodCBjb21wYXJpc29uIGlmIGNoYXJhY3Rl
cnMgYXJlIGRpZmZlcmVudC4KKworICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6Cisg
ICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNv
bik6CisgICAgICAgIChKU0M6OmNvbXBhcmVBU0NJSVdpdGhVQ0FEVUNFVExldmVsMyk6CisgICAg
ICAgIChKU0M6OmNvbXBhcmVBU0NJSVdpdGhVQ0FEVUNFVCk6CisKIDIwMjEtMDQtMDcgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVc2UgRml4ZWRW
ZWN0b3IgbW9yZSBpbiBieXRlY29kZSBkaXIgYW5kIEp1bXBUYWJsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA5ZDUzNmQ3NGMwMTlkMThkYTc1
ODM3ZDU5YWI3Mzg3OTZlZWQ2MDI5Li5kNWFjY2UwMzQ2ZTllZWYwMmMzMWNjMzFjMWMzNDRhYTdj
NTAzYzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cApAQCAtNDMyLDExICs0MzIsMTYgQEAgY29uc3QgTG9jYWxlU2V0JiBpbnRsQXZhaWxhYmxlTG9j
YWxlcygpCiAvLyAgICAgMy4gSWYgYW4gaW5wdXQgaXMgYW4gQVNDSUkgc3RyaW5nLCBubyBtdWx0
aXBsZSBjaGFyYWN0ZXIgY29sbGF0aW9uIGVsZW1lbnRzIGV4aXN0LiBTbyBubyBzcGVjaWFsIGhh
bmRsaW5nIGluIFVDQSBzdGVwLTIgaXMgcmVxdWlyZWQuIEZvciBleGFtcGxlLCAiTMK3IiBpcyBu
b3QgQVNDSUkuCiAvLyAgICAgNC4gVUNBIHN0ZXAtMyBoYW5kbGVzIDAwMDAgd2VpZ2h0ZWQgY2hh
cmFjdGVycyBzcGVjaWFsbHkuIEFuZCBBU0NJSSBjb250YWlucyB0aGVzZSBjaGFyYWN0ZXJzLiBC
dXQgMDAwMCBlbGVtZW50cyBhcmUgdXNlZCBvbmx5IGZvciByYXJlIGNvbnRyb2wgY2hhcmFjdGVy
cy4KIC8vICAgICAgICBXZSBjYW4gaWdub3JlIHRoaXMgc3BlY2lhbCBoYW5kbGluZyBpZiBBU0NJ
SSBzdHJpbmdzIGRvIG5vdCBpbmNsdWRlIGNvbnRyb2wgY2hhcmFjdGVycy4KLS8vICAgICA1LiBF
eGNlcHQgMDAwMCBjYXNlcywgYWxsIGNoYXJhY3RlcnMnIGxldmVsLTEgd2VpZ2h0cyBhcmUgZGlm
ZmVyZW50LiBBbmQgbGV2ZWwtMiB3ZWlnaHRzIGFyZSBhbHdheXMgMDAyMCwgd2hpY2ggaXMgbG93
ZXIgdGhhbiBhbnkgbGV2ZWwtMSB3ZWlnaHRzLgotLy8gICAgICAgIFRoaXMgbWVhbnMgdGhhdCBi
aW5hcnkgY29tcGFyaXNvbiBpbiBVQ0Egc3RlcC00IGRvIG5vdCBuZWVkIHRvIGNoZWNrIGxldmVs
IDJ+IHdlaWdodHMuCisvLyAgICAgNS4gTGV2ZWwtMSB3ZWlnaHRzIGFyZSBkaWZmZXJlbnQgZXhj
ZXB0IGZvciAwMDAwIGNhc2VzIGFuZCBjYXBpdGFsIC8gbG93ZXIgQVNDSUkgY2hhcmFjdGVycy4g
QWxsIG5vbi0wMDAwIGVsZW1lbnRzIGFyZSBsYXJnZXIgdGhhbiAwMDAwLgorLy8gICAgIDYuIExl
dmVsLTIgd2VpZ2h0cyBhcmUgYWx3YXlzIDAwMjAgZXhjZXB0IGZvciAwMDAwIGNhc2VzLiBTbyBp
ZiB3ZSBpbmNsdWRlIDAwMDAgY2hhcmFjdGVycywgd2UgZG8gbm90IG5lZWQgdG8gcGVyZm9ybSBs
ZXZlbC0yIHdlaWdodCBjb21wYXJpc29uLgorLy8gICAgIDcuIEluIGFsbCBsZXZlbHMsIGNoYXJh
Y3RlcnMgaGF2ZSBub24tMDAwMCB3ZWlnaHRzIGlmIGl0IGRvZXMgbm90IGhhdmUgMDAwMCB3ZWln
aHQgaW4gbGV2ZWwtMS4KKy8vICAgICA4LiBJbiBsZXZlbC0xLCB3ZWlnaHRzIGFyZSB0aGUgc2Ft
ZSBvbmx5IHdoZW4gY2hhcmFjdGVycyBhcmUgdGhlIHNhbWUgbGF0aW4gbGV0dGVycyAoJ0EnIHYu
cy4gJ2EnKS4gSWYgbGV2ZWwtMSB3ZWlnaHQgY29tcGFyaXNvbiBzYXlzIEVRVUFMLCBhbmQgaWYg
Y2hhcmFjdGVycyBhcmUgbm90IGJpbmFyeS1lcXVhbCwKKy8vICAgICAgICB0aGVuLCB0aGUgb25s
eSBjYXNlIGlzIHRoZXkgYXJlIGluY2x1ZGluZyB0aGUgc2FtZSBsYXRpbiBsZXR0ZXJzIHdpdGgg
ZGlmZmVyZW50IGNhcGl0YWxpemF0aW9uIGF0IHRoZSBzYW1lIHBvc2l0aW9uLiBMZXZlbC0zIHdl
aWdodCBjb21wYXJpc29uIG11c3QgZGlzdGluZ3Vpc2ggdGhlbSBzaW5jZSBsZXZlbC0zCisvLyAg
ICAgICAgd2VpZ2h0IGlzIHNldCBvbmx5IGZvciBsYXRpbiBjYXBpdGFsIGxldHRlcnMuIFRodXMs
IHdlIGRvIG5vdCBuZWVkIHRvIHBlcmZvcm0gbGV2ZWwtNCB3ZWlnaHQgY29tcGFyaXNvbi4KIC8v
Ci0vLyAgQmFzZWQgb24gdGhlIGFib3ZlIG9ic2VydmF0aW9uLCBvdXIgZmFzdCBwYXRoIGhhbmRs
ZXMgQVNDSUkgc3RyaW5ncyBleGNsdWRpbmcgY29udHJvbCBjaGFyYWN0ZXJzLiBUaGUgZm9sbG93
aW5nIHdlaWdodCBpcyByZWNvbXB1dGVkIHdlaWdodHMgZnJvbSBsZXZlbC0xIHdlaWdodHMuCi1j
b25zdCB1aW50OF90IGR1Y2V0V2VpZ2h0c1sxMjhdID0geworLy8gIEJhc2VkIG9uIHRoZSBhYm92
ZSBvYnNlcnZhdGlvbiwgb3VyIGZhc3QgcGF0aCBoYW5kbGVzIEFTQ0lJIHN0cmluZ3MgZXhjbHVk
aW5nIGNvbnRyb2wgY2hhcmFjdGVycy4gV2UgZmlyc3QgY29tcGFyZSBzdHJpbmdzIHdpdGggbGV2
ZWwtMSB3ZWlnaHRzLiBBbmQgdGhlbiwKKy8vICBpZiB3ZSBmb3VuZCB0aGV5IGFyZSB0aGUgc2Ft
ZSBhbmQgaWYgd2UgZm91bmQgdGhleSBhcmUgbm90IGJpbmFyeS1lcXVhbCBzdHJpbmdzLCB0aGVu
IHdlIHBlcmZvcm0gY29tcGFyaXNvbiB3aXRoIGxldmVsLTMgYW5kIGxldmVsLTQgd2VpZ2h0cy4K
K2NvbnN0IHVpbnQ4X3QgZHVjZXRMZXZlbDFXZWlnaHRzWzEyOF0gPSB7CiAgICAgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwKICAgICAwLCAxLCAyLCAzLCA0LCA1LCAwLCAwLAogICAgIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsCkBAIC00NDUsMTQgKzQ1MCwzNSBAQCBjb25zdCB1aW50OF90IGR1Y2V0
V2VpZ2h0c1sxMjhdID0gewogICAgIDE3LCAxOCwgMjQsIDMyLCA5LCA4LCAxNCwgMjUsCiAgICAg
MzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LAogICAgIDQ3LCA0OCwgMTEsIDEwLCAzMywg
MzQsIDM1LCAxMywKLSAgICAyMywgNTAsIDUyLCA1NCwgNTYsIDU4LCA2MCwgNjIsCi0gICAgNjQs
IDY2LCA2OCwgNzAsIDcyLCA3NCwgNzYsIDc4LAotICAgIDgwLCA4MiwgODQsIDg2LCA4OCwgOTAs
IDkyLCA5NCwKLSAgICA5NiwgOTgsIDEwMCwgMTksIDI2LCAyMCwgMzEsIDcsCi0gICAgMzAsIDQ5
LCA1MSwgNTMsIDU1LCA1NywgNTksIDYxLAotICAgIDYzLCA2NSwgNjcsIDY5LCA3MSwgNzMsIDc1
LCA3NywKLSAgICA3OSwgODEsIDgzLCA4NSwgODcsIDg5LCA5MSwgOTMsCi0gICAgOTUsIDk3LCA5
OSwgMjEsIDM2LCAyMiwgMzcsIDAsCisgICAgMjMsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1
LAorICAgIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywKKyAgICA2NCwgNjUsIDY2LCA2
NywgNjgsIDY5LCA3MCwgNzEsCisgICAgNzIsIDczLCA3NCwgMTksIDI2LCAyMCwgMzEsIDcsCisg
ICAgMzAsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LAorICAgIDU2LCA1NywgNTgsIDU5LCA2
MCwgNjEsIDYyLCA2MywKKyAgICA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsCisgICAg
NzIsIDczLCA3NCwgMjEsIDM2LCAyMiwgMzcsIDAsCit9OworCisvLyBMZXZlbCAyIGFyZSBhbGwg
emVyb3MuCisKK2NvbnN0IHVpbnQ4X3QgZHVjZXRMZXZlbDNXZWlnaHRzWzEyOF0gPSB7CisgICAg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAg
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAg
ICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisg
ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAor
ICAgIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwK
KyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAorICAgIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAs
CisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwKIH07CiAKIGNvbnN0IExvY2FsZVNldCYgaW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxlcygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggNjE0MGMy
MGQ2ZmQzZThlOGI1Mjg5NzVkNjM4NDhmZjE4M2ZjYWI3MS4uZTkzYzliZTg0NDgxZWVmNGMzZjc1
Zjc2MzVkOTgxNmYxZTg3ZGE5NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuaApAQCAtMzUsNyArMzUsOCBAQCBzdHJ1Y3QgVUZpZWxkUG9zaXRpb25JdGVyYXRv
cjsKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWV4dGVybiBjb25zdCB1aW50OF90IGR1Y2V0V2VpZ2h0
c1sxMjhdOworZXh0ZXJuIGNvbnN0IHVpbnQ4X3QgZHVjZXRMZXZlbDFXZWlnaHRzWzEyOF07Citl
eHRlcm4gY29uc3QgdWludDhfdCBkdWNldExldmVsM1dlaWdodHNbMTI4XTsKIAogZW51bSBjbGFz
cyBMb2NhbGVNYXRjaGVyIDogdWludDhfdCB7CiAgICAgTG9va3VwLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggMjYzOWJkMDU1
YmI2YzM5YWI2Y2FiNzg5ZmZhYThiNjRjZDQ2NDFkNy4uMmFkYjg1YjU0MTFlYzc1NGZkNzc5YjYz
NjY0MDI1YjViMmY5NTFkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0xNTQsMjcgKzE1NCw0OSBAQCBSZXN1bHRUeXBlIGlu
dGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT3B0aW9uYWw8SlNPYmplY3Qm
PiBvcHRpb25zLAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBh
cmlzb24oVUNoYXIgY2hhcmFjdGVyKQogewotICAgIHJldHVybiBpc0FTQ0lJKGNoYXJhY3Rlcikg
JiYgZHVjZXRXZWlnaHRzW2NoYXJhY3Rlcl07CisgICAgcmV0dXJuIGlzQVNDSUkoY2hhcmFjdGVy
KSAmJiBkdWNldExldmVsMVdlaWdodHNbY2hhcmFjdGVyXTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGUyPgorVUNvbGxhdGlvblJl
c3VsdCBjb21wYXJlQVNDSUlXaXRoVUNBRFVDRVRMZXZlbDMoY29uc3QgQ2hhcmFjdGVyVHlwZTEq
IGNoYXJhY3RlcnMxLCBjb25zdCBDaGFyYWN0ZXJUeXBlMiogY2hhcmFjdGVyczIsIHVuc2lnbmVk
IGxlbmd0aCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIHBvc2l0aW9uID0gMDsgcG9zaXRpb24gPCBs
ZW5ndGg7ICsrcG9zaXRpb24pIHsKKyAgICAgICAgYXV0byBsaHMgPSBjaGFyYWN0ZXJzMVtwb3Np
dGlvbl07CisgICAgICAgIGF1dG8gcmhzID0gY2hhcmFjdGVyczJbcG9zaXRpb25dOworICAgICAg
ICB1aW50OF90IGxlZnRXZWlnaHQgPSBkdWNldExldmVsM1dlaWdodHNbbGhzXTsKKyAgICAgICAg
dWludDhfdCByaWdodFdlaWdodCA9IGR1Y2V0TGV2ZWwzV2VpZ2h0c1tyaHNdOworICAgICAgICBp
ZiAobGVmdFdlaWdodCA9PSByaWdodFdlaWdodCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICByZXR1cm4gbGVmdFdlaWdodCA+IHJpZ2h0V2VpZ2h0ID8gVUNPTF9HUkVBVEVSIDogVUNP
TF9MRVNTOworICAgIH0KKyAgICByZXR1cm4gVUNPTF9FUVVBTDsKIH0KIAogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGUyPgogaW5saW5lIFVD
b2xsYXRpb25SZXN1bHQgY29tcGFyZUFTQ0lJV2l0aFVDQURVQ0VUKGNvbnN0IENoYXJhY3RlclR5
cGUxKiBjaGFyYWN0ZXJzMSwgdW5zaWduZWQgbGVuZ3RoMSwgY29uc3QgQ2hhcmFjdGVyVHlwZTIq
IGNoYXJhY3RlcnMyLCB1bnNpZ25lZCBsZW5ndGgyKQogeworICAgIGJvb2wgbm90U2FtZUNoYXJh
Y3RlcnMgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBjb21tb25MZW5ndGggPSBzdGQ6Om1pbihsZW5n
dGgxLCBsZW5ndGgyKTsKICAgICBmb3IgKHVuc2lnbmVkIHBvc2l0aW9uID0gMDsgcG9zaXRpb24g
PCBjb21tb25MZW5ndGg7ICsrcG9zaXRpb24pIHsKICAgICAgICAgYXV0byBsaHMgPSBjaGFyYWN0
ZXJzMVtwb3NpdGlvbl07CiAgICAgICAgIGF1dG8gcmhzID0gY2hhcmFjdGVyczJbcG9zaXRpb25d
OwogICAgICAgICBBU1NFUlQoY2FuVXNlQVNDSUlVQ0FEVUNFVENvbXBhcmlzb24obGhzKSk7CiAg
ICAgICAgIEFTU0VSVChjYW5Vc2VBU0NJSVVDQURVQ0VUQ29tcGFyaXNvbihyaHMpKTsKLSAgICAg
ICAgdWludDhfdCBsZWZ0V2VpZ2h0ID0gZHVjZXRXZWlnaHRzW2xoc107Ci0gICAgICAgIHVpbnQ4
X3QgcmlnaHRXZWlnaHQgPSBkdWNldFdlaWdodHNbcmhzXTsKKyAgICAgICAgaWYgKGxocyA9PSBy
aHMpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgbm90U2FtZUNoYXJhY3RlcnMgPSB0
cnVlOworICAgICAgICB1aW50OF90IGxlZnRXZWlnaHQgPSBkdWNldExldmVsMVdlaWdodHNbbGhz
XTsKKyAgICAgICAgdWludDhfdCByaWdodFdlaWdodCA9IGR1Y2V0TGV2ZWwxV2VpZ2h0c1tyaHNd
OwogICAgICAgICBpZiAobGVmdFdlaWdodCA9PSByaWdodFdlaWdodCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICByZXR1cm4gbGVmdFdlaWdodCA+IHJpZ2h0V2VpZ2h0ID8gVUNPTF9H
UkVBVEVSIDogVUNPTF9MRVNTOwogICAgIH0KIAotICAgIGlmIChsZW5ndGgxID09IGxlbmd0aDIp
CisgICAgaWYgKGxlbmd0aDEgPT0gbGVuZ3RoMikgeworICAgICAgICBpZiAobm90U2FtZUNoYXJh
Y3RlcnMpCisgICAgICAgICAgICByZXR1cm4gY29tcGFyZUFTQ0lJV2l0aFVDQURVQ0VUTGV2ZWwz
KGNoYXJhY3RlcnMxLCBjaGFyYWN0ZXJzMiwgbGVuZ3RoMSk7CiAgICAgICAgIHJldHVybiBVQ09M
X0VRVUFMOworICAgIH0KICAgICByZXR1cm4gbGVuZ3RoMSA+IGxlbmd0aDIgPyBVQ09MX0dSRUFU
RVIgOiBVQ09MX0xFU1M7CiB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTA5MDMxMTBlMmJjY2FkZjE0Nzg5MmI0ZTM3NWE1YWJhNjhm
M2M2NS4uYjJjOTYxNTYxOWJjNWFjNjQwNTk5MDNkMWU3YzI3MWUxZjVhOTczZSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAyMS0wNC0wNyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIERVQ0VUIGxldmVsLTEgd2VpZ2hzIGFyZSBlcXVhbCBpZiBjaGFyYWN0ZXJz
IGFyZSBhbHBoYWJldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpIGFuZCBNYXJr
IExhbS4KKworICAgICAgICAqIHN0cmVzcy9kdWNldC1sZXZlbC0zLW9yLTQtY29tcGFyaXNvbi5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisKIDIwMjEtMDQtMDcgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgdGVzdDI2Mgpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZHVjZXQtbGV2ZWwtMy1vci00LWNvbXBhcmlzb24u
anMgYi9KU1Rlc3RzL3N0cmVzcy9kdWNldC1sZXZlbC0zLW9yLTQtY29tcGFyaXNvbi5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNDJiM2I1N2FlZTRhNmU4NDlmMTljYjJjMWQ1Y2RmMWVjZmJmOGM5Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZHVjZXQtbGV2ZWwtMy1vci00LWNvbXBhcmlzb24u
anMKQEAgLTAsMCArMSwxNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK3ZhciBjb2xsYXRvciA9IG5ldyBJbnRsLkNv
bGxhdG9yKCdlbi1VUycpOworCitzaG91bGRCZShjb2xsYXRvci5jb21wYXJlKCJBQkMiLCAiQUJE
IMODIiksIC0xKTsKK3Nob3VsZEJlKGNvbGxhdG9yLmNvbXBhcmUoIkFCRCDDgyIsICJBYkUiKSwg
LTEpOworc2hvdWxkQmUoY29sbGF0b3IuY29tcGFyZSgiQWJFIiwgIkFCQyIpLCAxKTsKK3Nob3Vs
ZEJlKGNvbGxhdG9yLmNvbXBhcmUoIkFCQyIsICJhYmMiKSwgMSk7CitzaG91bGRCZShjb2xsYXRv
ci5jb21wYXJlKCJBQkMiLCAiQUJDIiksIDApOworc2hvdWxkQmUoY29sbGF0b3IuY29tcGFyZSgi
YWJjIiwgImFiYyIpLCAwKTsKKworc2hvdWxkQmUoY29sbGF0b3IuY29tcGFyZSgiQUIgLSBBUyBG
b29iYXIiLCAiQUIgLSBBUyBQdWxoZWltIEvDg8aSw4LCpHRoZXIiKSwgLTEpOworc2hvdWxkQmUo
Y29sbGF0b3IuY29tcGFyZSgiQUIgLSBBUyBQdWxoZWltIEvDg8aSw4LCpHRoZXIiLCAiQWJ6IC0g
QmF6IFF1eCIpLCAtMSk7CitzaG91bGRCZShjb2xsYXRvci5jb21wYXJlKCJBYnogLSBCYXogUXV4
IiwgIkFCIC0gQVMgRm9vYmFyIiksIDEpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>