<?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>213826</bug_id>
          
          <creation_ts>2020-06-30 21:42:31 -0700</creation_ts>
          <short_desc>MIMETypeRegistry::getExtensionsForMIMEType() needs to handle wildcard MIME types</short_desc>
          <delta_ts>2020-07-02 20:20:00 -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>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213912</see_also>
          <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>
          
          <blocked>213347</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1667823</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-30 21:42:31 -0700</bug_when>
    <thetext>For example for MIMEType = &quot;image/*&quot;, MIMETypeRegistry::getExtensionsForMIMEType() should return all the extensions of all image files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667828</commentid>
    <comment_count>1</comment_count>
      <attachid>403263</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-06-30 21:53:59 -0700</bug_when>
    <thetext>Created attachment 403263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667999</commentid>
    <comment_count>2</comment_count>
      <attachid>403263</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-01 10:38:12 -0700</bug_when>
    <thetext>Comment on attachment 403263
Patch

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

Saying r=me, but really concerned that this is all untested.

&gt; Source/WebCore/ChangeLog:3
&gt; +        MIMETypeRegistry::getExtensionsForMIMEType() needs to handle wildcard MIME types

Where are the tests?

I think this requires a lot more tests. I am simply guessing that maybe this code works.

&gt; Source/WebCore/platform/MIMETypeRegistry.h:60
&gt; +    WEBCORE_EXPORT static Vector&lt;String&gt; getExtensionsForMIMEType(const String&amp; type);

All the &quot;get&quot; in the function names in this class annoy me since that’s not WebKit coding style, but not new.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:39
&gt; +        HashMap&lt;String, HashSet&lt;String&gt;&gt; extensionsForMIMETypeMap;

Seems like we could use a shorter name for this, in the context here.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:41
&gt; +        auto addExtensionForMIMEType = [&amp;](const String&amp; type, const String&amp; extension) {

Seems like we could use a shorter name for this, maybe just &quot;add&quot;.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:44
&gt; +            auto addResult = extensionsForMIMETypeMap.ensure(type, []() {
&gt; +                return HashSet&lt;String&gt;();
&gt; +            });

Doesn’t seem like we need to use ensure here. I think this is the same as calling add({ }) and not necessarily more efficient. Can be written as this one-liner, I think.

    extensionsForMIMETypeMap.add(type, { }).iterator-&gt;value.add(extension);

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:48
&gt; +        auto addExtensionsForMIMEType = [&amp;](const String&amp; type, const CFArrayRef&amp; extensions) {

Why &quot;const CArrayRef&amp;&quot;? Just CFArrayRef.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:49
&gt; +            auto wildcardMIMEType = makeString(type.split(&apos;/&apos;).first(), &quot;/*&quot;_s);

String::split().first() is an especially inefficient implementation of &quot;get the part before the first slash&quot;. We can be much more efficient by using StringView::split or StringView::find/StringView::left.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:51
&gt; +            for (CFIndex i = 0, count = CFArrayGetCount(extensions); i &lt; count; i++) {

Seems like an Objective-C for loop would be nicer and likely also more efficient. We keep having to cast back and forth between CF and NS if we use that, but we already have to cast to convert CFTypeRef to CFStringRef, so it’s not so bad.

And now I see, looking at the old code, that we used to do that. I think it would be better.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:53
&gt; +                CFStringRef extension = reinterpret_cast&lt;CFStringRef&gt;(CFArrayGetValueAtIndex(extensions, i));

Why reinterpret_cast here and static_cast below?

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:59
&gt; +                // Add extension to itsmimeType, for example add &quot;png&quot; to &quot;image/png&quot;

Typo: &quot;itsmimeType&quot;.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:64
&gt; +        RetainPtr&lt;CFArrayRef&gt; allUTIs = adoptCF(_UTCopyDeclaredTypeIdentifiers());

auto

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:66
&gt; +        for (CFIndex i = 0, count = CFArrayGetCount(allUTIs.get()); i &lt; count; ++i) {

Same thought about Objective-C for loop.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:87
&gt; +    auto iter = extensionsForMIMETypeMap().find(type);

Why &quot;iter&quot;? Lets use a word instead of an abbreviation.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:89
&gt; +        extensions.appendRange(iter-&gt;value.begin(), iter-&gt;value.end());

Isn’t there a more idiomatic way to make a Vector from a HashSet?

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:101
&gt; +    if (type.endsWith(&apos;*&apos;))

This seems strangely broad. Why is it right to check only &quot;ends with *&quot;? Is it really valid to return this result for, say, &quot;text/*&quot;? Seems like a bad idea to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668125</commentid>
    <comment_count>3</comment_count>
      <attachid>403263</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-01 19:33:25 -0700</bug_when>
    <thetext>Comment on attachment 403263
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        MIMETypeRegistry::getExtensionsForMIMEType() needs to handle wildcard MIME types
&gt; 
&gt; Where are the tests?
&gt; 
&gt; I think this requires a lot more tests. I am simply guessing that maybe this code works.

This work is towards webkit.org/b/213347. I will include tests there.

&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.h:60
&gt;&gt; +    WEBCORE_EXPORT static Vector&lt;String&gt; getExtensionsForMIMEType(const String&amp; type);
&gt; 
&gt; All the &quot;get&quot; in the function names in this class annoy me since that’s not WebKit coding style, but not new.

I will change all names in a separate patch.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:39
&gt;&gt; +        HashMap&lt;String, HashSet&lt;String&gt;&gt; extensionsForMIMETypeMap;
&gt; 
&gt; Seems like we could use a shorter name for this, in the context here.

I renamed it to &apos;map&apos;

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:41
&gt;&gt; +        auto addExtensionForMIMEType = [&amp;](const String&amp; type, const String&amp; extension) {
&gt; 
&gt; Seems like we could use a shorter name for this, maybe just &quot;add&quot;.

I renamed it to &apos;addExtension&apos;.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:44
&gt;&gt; +            });
&gt; 
&gt; Doesn’t seem like we need to use ensure here. I think this is the same as calling add({ }) and not necessarily more efficient. Can be written as this one-liner, I think.
&gt; 
&gt;     extensionsForMIMETypeMap.add(type, { }).iterator-&gt;value.add(extension);

I changed it as suggested. The only reason for using ensure was I wanted to save constructing the HashSet.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:48
&gt;&gt; +        auto addExtensionsForMIMEType = [&amp;](const String&amp; type, const CFArrayRef&amp; extensions) {
&gt; 
&gt; Why &quot;const CArrayRef&amp;&quot;? Just CFArrayRef.

This was changed to NSArray&lt;NSString *&gt; *.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:49
&gt;&gt; +            auto wildcardMIMEType = makeString(type.split(&apos;/&apos;).first(), &quot;/*&quot;_s);
&gt; 
&gt; String::split().first() is an especially inefficient implementation of &quot;get the part before the first slash&quot;. We can be much more efficient by using StringView::split or StringView::find/StringView::left.

I changed this to be

    size_t pos = type.reverseFind(&apos;/&apos;);
    auto wildcardMIMEType = makeString(type.left(pos), &quot;/*&quot;_s);

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:51
&gt;&gt; +            for (CFIndex i = 0, count = CFArrayGetCount(extensions); i &lt; count; i++) {
&gt; 
&gt; Seems like an Objective-C for loop would be nicer and likely also more efficient. We keep having to cast back and forth between CF and NS if we use that, but we already have to cast to convert CFTypeRef to CFStringRef, so it’s not so bad.
&gt; 
&gt; And now I see, looking at the old code, that we used to do that. I think it would be better.

Done.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:53
&gt;&gt; +                CFStringRef extension = reinterpret_cast&lt;CFStringRef&gt;(CFArrayGetValueAtIndex(extensions, i));
&gt; 
&gt; Why reinterpret_cast here and static_cast below?

Ater converting &apos;extensions&apos; and &apos;allUTIs&apos; to be of type NSArray&lt;NSString *&gt; *, no casting is needed.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:59
&gt;&gt; +                // Add extension to itsmimeType, for example add &quot;png&quot; to &quot;image/png&quot;
&gt; 
&gt; Typo: &quot;itsmimeType&quot;.

Fixed.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:64
&gt;&gt; +        RetainPtr&lt;CFArrayRef&gt; allUTIs = adoptCF(_UTCopyDeclaredTypeIdentifiers());
&gt; 
&gt; auto

Fixed.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:66
&gt;&gt; +        for (CFIndex i = 0, count = CFArrayGetCount(allUTIs.get()); i &lt; count; ++i) {
&gt; 
&gt; Same thought about Objective-C for loop.

Fixed.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:87
&gt;&gt; +    auto iter = extensionsForMIMETypeMap().find(type);
&gt; 
&gt; Why &quot;iter&quot;? Lets use a word instead of an abbreviation.

Fixed.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:89
&gt;&gt; +        extensions.appendRange(iter-&gt;value.begin(), iter-&gt;value.end());
&gt; 
&gt; Isn’t there a more idiomatic way to make a Vector from a HashSet?

I am not aware of one.

&gt;&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:101
&gt;&gt; +    if (type.endsWith(&apos;*&apos;))
&gt; 
&gt; This seems strangely broad. Why is it right to check only &quot;ends with *&quot;? Is it really valid to return this result for, say, &quot;text/*&quot;? Seems like a bad idea to me.

I do not see why it is bad. And why should we treat text/* different from image/*? According to https://tools.ietf.org/html/rfc7231#section-5.3.2: &quot;type/*&quot; indicating all subtypes of that type. This would translate &quot;text/*&quot; to { text/css, text/csv, text/html, text/php, text/plain, text/xml }. So &quot;text/*&quot; is just a short writing for this list.

But actually I wanted to delete this function and replace it with extensionsForWildcardMIMEType() since the later can handle all MIME types. But I was not sure whether NSURLFileTypeMappings.extensionsForMIMEType() would return the same list of extensions as extensionsForWildcardMIMEType() would return for a MIMEType.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668126</commentid>
    <comment_count>4</comment_count>
      <attachid>403338</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-01 19:37:24 -0700</bug_when>
    <thetext>Created attachment 403338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668144</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-01 22:02:22 -0700</bug_when>
    <thetext>Committed r263832: &lt;https://trac.webkit.org/changeset/263832&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403338.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668145</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-01 22:03:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/65018418&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668262</commentid>
    <comment_count>7</comment_count>
      <attachid>403338</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-02 09:12:54 -0700</bug_when>
    <thetext>Comment on attachment 403338
Patch

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

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:49
&gt; +            auto wildcardMIMEType = makeString(type.left(pos), &quot;/*&quot;_s);

This creates/destroys a String for the result of String::left. If we used StringView::left instead, then we would not do that additional unneeded memory allocation.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:53
&gt; +                if (!extension)
&gt; +                    continue;

An NSArray can’t contain a nil, so this is dead code and is not needed.

&gt; Source/WebCore/platform/cocoa/MIMETypeRegistryCocoa.mm:62
&gt; +        auto allUTIs = adoptNS((__bridge NSArray&lt;NSString *&gt; *)_UTCopyDeclaredTypeIdentifiers());

This will work for now but is poor coding style and won’t work correctly if we switch to ARC. It’s not correct to adopt a CF object using adoptNS. Instead we need to do adoptCF, and do the cast where allUTIs is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668420</commentid>
    <comment_count>8</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 17:03:17 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668421</commentid>
    <comment_count>9</comment_count>
      <attachid>403418</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 17:03:18 -0700</bug_when>
    <thetext>Created attachment 403418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668441</commentid>
    <comment_count>10</comment_count>
      <attachid>403263</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 18:03:02 -0700</bug_when>
    <thetext>Comment on attachment 403263
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/MIMETypeRegistry.h:60
&gt;&gt;&gt; +    WEBCORE_EXPORT static Vector&lt;String&gt; getExtensionsForMIMEType(const String&amp; type);
&gt;&gt; 
&gt;&gt; All the &quot;get&quot; in the function names in this class annoy me since that’s not WebKit coding style, but not new.
&gt; 
&gt; I will change all names in a separate patch.

I filed bug 213912 to address this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668456</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-02 19:16:23 -0700</bug_when>
    <thetext>/Volumes/Data/worker/Commit-Queue/build/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668460</commentid>
    <comment_count>12</comment_count>
      <attachid>403432</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-07-02 19:30:31 -0700</bug_when>
    <thetext>Created attachment 403432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668468</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-02 20:19:59 -0700</bug_when>
    <thetext>Committed r263880: &lt;https://trac.webkit.org/changeset/263880&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403432.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403263</attachid>
            <date>2020-06-30 21:53:59 -0700</date>
            <delta_ts>2020-07-01 19:37:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213826-20200630215359.patch</filename>
            <type>text/plain</type>
            <size>12343</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzNzg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRkYjAxYjA4NWM4MzFh
OGY2ZDFkZjY3MTVkYjQ4YWYwYWRiODMzYS4uMWMxNzU3YTFmMDMwZjAxYmI1OTFmOTE5Y2YwZjVi
ZDEyMDIzZWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA2LTMwICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgbmVlZHMgdG8gaGFuZGxlIHdp
bGRjYXJkIE1JTUUgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMzgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZvciBDb2NvYSBwbGF0Zm9ybXMsIGVudW1lcmF0ZSB0aGUgVVRJcyBvZiB0aGUg
c3lzdGVtLiBHZXQgdGhlIE1JTUVUeXBlCisgICAgICAgIGFuZCB0aGUgZXh0ZW5zaW9ucyBvZiB0
aGUgZWFjaCBVVEkuIEFkZCB0aGUgcGFpcnMgdG8gYSBzdGF0aWMgSGFzaE1hcDoKKworICAgICAg
ICAgICAgeyBNSU1FVHlwZSwgZXh0ZW5zaW9uIH0KKyAgICAgICAgICAgIHsgVHlwZShNSU1FVHlw
ZSkvKiwgZXh0ZW5zaW9uIH0KKworICAgICAgICBDaGFuZ2UgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0
RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgc3VjaCB0aGF0IGl0IGNhbGxzCisgICAgICAgIGV4dGVu
c2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKCkgaWYgdGhlIE1JTUVUeXBlIGNvbnRhaW5zICIqIiBh
dCB0aGUgZW5kLgorCisgICAgICAgICogcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpl
eHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0cnlQbGF5U3RhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZSk6CisgICAg
ICAgICogcGxhdGZvcm0veGRnL01JTUVUeXBlUmVnaXN0cnlYZGcuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKToKKwogMjAy
MC0wNi0zMCAgQW5kcmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ29kZSBjbGVhbnVwIGluIEFjY2Vzc2liaWxpdHlNZW51TGlzdC5jcHAgYW5kIEFYSXNvbGF0
ZWRUcmVlLmguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE2MTk4ZDE0MWY0OWRiNTdjNDBmN2NkNjk4ZGQ3MDMxODFh
NjFhOTUuLjM2Y2M0YWI0ZDhiN2UzOTk2NGIxNmJhYmU1ZjEzY2RjOTQwNjA2ZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDYtMzAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3Vo
YWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNp
b25zRm9yTUlNRVR5cGUoKSBuZWVkcyB0byBoYW5kbGUgd2lsZGNhcmQgTUlNRSB0eXBlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODI2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBleHRl
bnNpb25zRm9yTUlNRVR5cGUoKSB3aXRoIE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNG
b3JNSU1FVHlwZSgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5l
bFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxsb3dl
ZEZpbGVFeHRlbnNpb25zXSk6CisKIDIwMjAtMDYtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9o
c2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU2V2ZXJhbCBrZXkgZXZlbnQgdGVzdHMgaW4gZmFz
dC9ldmVudHMvaW9zIGFyZSBmYWlsaW5nIGFmdGVyIDxyZGFyOi8vcHJvYmxlbS82MjE5NzExNj4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuaAppbmRleCA5OTZlZTc4
NGVkZTJhZGIwMWExNTUwZTJmZTUwZDUwNjQzYjNmYTNmLi5lNWU3YWExMzA2NDViY2QzN2FmNmFm
YzI1OTRjYWFhYjQ2YWNlMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
SU1FVHlwZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVS
ZWdpc3RyeS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5z
aW9uKTsKIAogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0eWxlIHNheXMgd2Ugc2hvdWxk
IG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBvZiB0aGVzZSBmdW5jdGlvbnMu
Ci0gICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25z
dCBTdHJpbmcmIHR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5n
PiBnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKTsKICAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBl
KGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFN0cmluZyBn
ZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKICAg
ICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0TWVkaWFNSU1FVHlwZXNGb3JFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBleHRlbnNpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCmluZGV4IDJiM2ZlMDU1ODRmOTY0ZTA5
OTc2ODQ2YWExMjk4MDc2ZWE0YmUxNTAuLjI4Y2RjNWU4MTA5MzA5NmIzYjljNDhlOGZmYTUyZGRh
NWZkMTI3MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVU
eXBlUmVnaXN0cnlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9N
SU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0KQEAgLTI3LDExICsyNyw3MCBAQAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAKKyNpbXBvcnQgPHBhbC9zcGkv
Y29jb2EvQ29yZVNlcnZpY2VzU1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL05TVVJMRmls
ZVR5cGVNYXBwaW5nc1NQSS5oPgogI2ltcG9ydCA8d3RmL2NvY29hL1ZlY3RvckNvY29hLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0
cmluZz4+JiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKQoreworICAgIHN0YXRpYyBhdXRvIGV4
dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCA9IG1ha2VOZXZlckRlc3Ryb3llZChbXSB7CisgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBIYXNoU2V0PFN0cmluZz4+IGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cDsKKworICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlID0gWyZdKGNvbnN0IFN0
cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24pIHsKKyAgICAgICAgICAgIGF1dG8g
YWRkUmVzdWx0ID0gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmVuc3VyZSh0eXBlLCBbXSgpIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gSGFzaFNldDxTdHJpbmc+KCk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuYWRkKGV4dGVuc2lvbik7
CisgICAgICAgIH07CisKKyAgICAgICAgYXV0byBhZGRFeHRlbnNpb25zRm9yTUlNRVR5cGUgPSBb
Jl0oY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBDRkFycmF5UmVmJiBleHRlbnNpb25zKSB7Cisg
ICAgICAgICAgICBhdXRvIHdpbGRjYXJkTUlNRVR5cGUgPSBtYWtlU3RyaW5nKHR5cGUuc3BsaXQo
Jy8nKS5maXJzdCgpLCAiLyoiX3MpOworCisgICAgICAgICAgICBmb3IgKENGSW5kZXggaSA9IDAs
IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnMpOyBpIDwgY291bnQ7IGkrKykgewor
CisgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uID0gcmVpbnRlcnByZXRfY2Fz
dDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChleHRlbnNpb25zLCBpKSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCisgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byB3aWxkY2FyZE1JTUVU
eXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdlLyoiCisgICAgICAgICAgICAgICAg
YWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUod2lsZGNhcmRNSU1FVHlwZSwgZXh0ZW5zaW9uKTsKKyAg
ICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0c21pbWVUeXBlLCBmb3IgZXhhbXBs
ZSBhZGQgInBuZyIgdG8gImltYWdlL3BuZyIKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25G
b3JNSU1FVHlwZSh0eXBlLCBleHRlbnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9Owor
CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBhbGxVVElzID0gYWRvcHRDRihfVVRDb3B5
RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSk7CisKKyAgICAgICAgZm9yIChDRkluZGV4IGkgPSAw
LCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhbGxVVElzLmdldCgpKTsgaSA8IGNvdW50OyArK2kp
IHsKKyAgICAgICAgICAgIGF1dG8gdXRpID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoYWxsVVRJcy5nZXQoKSwgaSkpOworICAgICAgICAgICAgYXV0byB0
eXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFn
Q2xhc3NNSU1FVHlwZSkpOworICAgICAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihVVFR5cGVD
b3B5QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24pKTsK
KyAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucyB8fCAhQ0ZBcnJheUdldENvdW50KGV4dGVuc2lv
bnMuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYWRkRXh0
ZW5zaW9uc0Zvck1JTUVUeXBlKHR5cGUuZ2V0KCksIGV4dGVuc2lvbnMuZ2V0KCkpOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKKyAgICB9KCkp
OworCisgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKK30KKworc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IGV4dGVuc2lvbnNGb3JXaWxkY2FyZE1JTUVUeXBlKGNvbnN0IFN0cmluZyYg
dHlwZSkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25zOworCisgICAgYXV0byBpdGVy
ID0gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlciAh
PSBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAoKS5lbmQoKSkKKyAgICAgICAgZXh0ZW5zaW9ucy5h
cHBlbmRSYW5nZShpdGVyLT52YWx1ZS5iZWdpbigpLCBpdGVyLT52YWx1ZS5lbmQoKSk7CisKKyAg
ICByZXR1cm4gZXh0ZW5zaW9uczsKK30KKwogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldE1J
TUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIHJldHVy
biBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gTUlNRVR5cGVGb3JFeHRl
bnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uXTsKQEAgLTM5LDYgKzk4LDggQEAgU3RyaW5nIE1J
TUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uKQogCiBWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25z
Rm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogeworICAgIGlmICh0eXBlLmVuZHNXaXRo
KCcqJykpCisgICAgICAgIHJldHVybiBleHRlbnNpb25zRm9yV2lsZGNhcmRNSU1FVHlwZSh0eXBl
KTsKICAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJpbmc+KFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdz
IHNoYXJlZE1hcHBpbmdzXSBleHRlbnNpb25zRm9yTUlNRVR5cGU6dHlwZV0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lz
dHJ5UGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcGxheXN0YXRpb24v
TUlNRVR5cGVSZWdpc3RyeVBsYXlTdGF0aW9uLmNwcAppbmRleCBmMzcyY2UzMDA1ZjY3Zjg3ZTM4
NDkwNTFiMTY1MzJkM2QwYTQ2YTU0Li5mYjk4MzFmZWVhM2MyZDEyMWQ2ZTRlNGExNzA0NWJiNjFi
OGU3NDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5c3RhdGlvbi9N
SU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0cnlQbGF5U3RhdGlvbi5jcHAKQEAgLTgwLDQg
KzgwLDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25G
b3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlCiAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNG
b3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURf
WUVUKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3Bw
CmluZGV4IGEwNDQ5ODJhMDhlOTBkODAxOWZmMTRjZjJiMDMzYmJkNTUyZTIxMTIuLmQzOGQxY2E5
YWVmMGZiOTNmZGVmY2QxZjc3OTkwMTNiMmFlNTU3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9NSU1FVHlwZVJlZ2lzdHJ5V2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKQEAgLTExNCw0ICsxMTQs
MTAgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1J
TUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKQor
eworICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgcmV0dXJuIHsgfTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veGRnL01JTUVUeXBlUmVn
aXN0cnlYZGcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veGRnL01JTUVUeXBlUmVnaXN0
cnlYZGcuY3BwCmluZGV4IGZjOTExOTBiZTY4ZGY1ZDVlMzRlMGY3YTVhMzg1NDMzZTgzODgwZjMu
LmYzYjQ4MzczMmY3OWRjYjA2NDQyZTg5NDMyNGVmMjRlZTQ4NTdhNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ZGcvTUlNRVR5cGVSZWdpc3RyeVhkZy5jcHAKQEAgLTY2
LDQgKzY2LDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlCiAgICAgcmV0dXJuIHJldHVyblZh
bHVlOwogfQogCitWZWN0b3I8U3RyaW5nPiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25z
Rm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVE
X1lFVCgpOworICAgIHJldHVybiB7IH07Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCmluZGV4
IGQ5MDBmOWU4ZDY3NTQxY2I4YzI5ZWQ0MjhhMWU5YjAwOGIxNDg4MjMuLjlmMjMzNTBkMjk2ODBi
YzdiNjQ2NzU3ZTA1ZDY0YWRjZmMzYzQ0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS09wZW5QYW5lbFBhcmFtZXRlcnMubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQpAQCAtMjUs
NjAgKzI1LDEyIEBACiAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tPcGVuUGFuZWxQ
YXJhbWV0ZXJzSW50ZXJuYWwuaCIKLSNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQ29yZVNlcnZpY2Vz
U1BJLmg+CisjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KIAogI2lmIFBMQVRG
T1JNKE1BQykKIAogI2ltcG9ydCAiV0tOU0FycmF5LmgiCiAKLXN0YXRpYyBOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgTlNTZXQ8TlNTdHJpbmcgKj4gKj4gKmV4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cCgpCi17Ci0gICAgc3RhdGljIGF1dG8gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwID0gbWFrZU5l
dmVyRGVzdHJveWVkKFtdIHsKLSAgICAgICAgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwotICAgICAgICBh
dXRvIGFsbFVUSXMgPSBhZG9wdENGKF9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpKTsK
LQotICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlID0gXihOU1N0cmluZyAqbWlt
ZVR5cGUsIE5TU3RyaW5nICpleHRlbnNpb24pIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9u
c0Zvck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSkKLSAgICAgICAgICAgICAgICBleHRlbnNp
b25zRm9yTUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdID0gW05TTXV0YWJsZVNldCBzZXRdOwot
ICAgICAgICAgICAgW2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKVttaW1lVHlwZV0gYWRk
T2JqZWN0OmV4dGVuc2lvbl07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYXV0byBhZGRFeHRlbnNp
b25zRm9yTUlNRVR5cGUgPSBeKE5TU3RyaW5nICptaW1lVHlwZSwgTlNBcnJheTxOU1N0cmluZyAq
PiAqZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgYXV0byB3aWxkY2FyZE1JTUVUeXBlID0gW1tt
aW1lVHlwZSBjb21wb25lbnRzU2VwYXJhdGVkQnlTdHJpbmc6QCIvIl1bMF0gc3RyaW5nQnlBcHBl
bmRpbmdTdHJpbmc6QCIvKiJdOwotCi0gICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNp
b24gaW4gZXh0ZW5zaW9ucykgewotICAgICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQotICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5z
aW9uIHRvIHdpbGRjYXJkTUlNRVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2Uv
KiIKLSAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb25Gb3JNSU1FVHlwZSh3aWxkY2FyZE1JTUVU
eXBlLCBleHRlbnNpb24pOwotICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gaXRz
bWltZVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvcG5nIgotICAgICAgICAg
ICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKG1pbWVUeXBlLCBleHRlbnNpb24pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMCwgY291
bnQgPSBDRkFycmF5R2V0Q291bnQoYWxsVVRJcy5nZXQoKSk7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBhdXRvIHV0aSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KGFsbFVUSXMuZ2V0KCksIGkpKTsKLSAgICAgICAgICAgIGF1dG8gbWltZVR5
cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLCBrVVRUYWdD
bGFzc01JTUVUeXBlKSk7Ci0gICAgICAgICAgICBpZiAoIW1pbWVUeXBlKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgYXV0byBleHRlbnNpb25zID0gYWRvcHRDRihVVFR5
cGVDb3B5QWxsVGFnc1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24p
KTsKLSAgICAgICAgICAgIGFkZEV4dGVuc2lvbnNGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJp
bmcgKiltaW1lVHlwZS5nZXQoKSwgKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKilleHRl
bnNpb25zLmdldCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEFkZCBhZGRpdGlvbmFsIG1p
bWUgdHlwZXMgd2hpY2ggX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkgbWF5IG5vdCBy
ZXR1cm4uCi0gICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKEAiaW1hZ2Uvd2VicCIsIEAi
d2VicCIpOwotCi0gICAgICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXA7Ci0gICAg
fSgpKTsKLQotICAgIHJldHVybiBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAuZ2V0KCkuZ2V0KCk7
Ci19Ci0KLXN0YXRpYyBOU1NldDxOU1N0cmluZyAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKE5T
U3RyaW5nICptaW1ldHlwZSkKLXsKLSAgICByZXR1cm4gW2V4dGVuc2lvbnNGb3JNSU1FVHlwZU1h
cCgpIG9iamVjdEZvcktleTptaW1ldHlwZV07Ci19Ci0KIEBpbXBsZW1lbnRhdGlvbiBXS09wZW5Q
YW5lbFBhcmFtZXRlcnMKIAogLSAoQk9PTClhbGxvd3NNdWx0aXBsZVNlbGVjdGlvbgpAQCAtMTIy
LDcgKzc0LDggQEAgc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5
cGUoTlNTdHJpbmcgKm1pbWV0eXBlKQogCiAgICAgW2FjY2VwdGVkTUlNRVR5cGVzIGVudW1lcmF0
ZU9iamVjdHNVc2luZ0Jsb2NrOl4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU1VJbnRlZ2VyIGluZGV4
LCBCT09MKiBzdG9wKSB7CiAgICAgICAgIEFTU0VSVChbbWltZVR5cGUgY29udGFpbnNTdHJpbmc6
QCIvIl0pOwotICAgICAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIHVuaW9uU2V0OmV4dGVuc2lv
bnNGb3JNSU1FVHlwZShtaW1lVHlwZSldOworICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBBUEk6
OkFycmF5OjpjcmVhdGVTdHJpbmdBcnJheShXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRF
eHRlbnNpb25zRm9yTUlNRVR5cGUobWltZVR5cGUpKTsKKyAgICAgICAgW2FsbG93ZWRGaWxlRXh0
ZW5zaW9ucyBhZGRPYmplY3RzRnJvbUFycmF5OndyYXBwZXIoZXh0ZW5zaW9ucyldOwogICAgIH1d
OwogCiAgICAgYXV0byBhZGRpdGlvbmFsQWxsb3dlZEZpbGVFeHRlbnNpb25zID0gYWRvcHROUyhb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403338</attachid>
            <date>2020-07-01 19:37:24 -0700</date>
            <delta_ts>2020-07-02 17:03:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213826-20200701193723.patch</filename>
            <type>text/plain</type>
            <size>11571</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDIwLTA3LTAxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgbmVlZHMgdG8gaGFuZGxlIHdpbGRj
YXJkIE1JTUUgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIFdvcmtpbmcgdG93YXJkcyB3ZWJraXQub3JnL2IvMjEzMzQ3LCBpdCBuZWVkcyB0byBiZSBw
b3NzaWJsZSBmb3IgV2ViQ29yZQorICAgICAgICB0byBnZXQgdGhlIGZpbGUgZXh0ZW5zaW9ucyBm
b3Igd2lsZGNhcmQgTUlNRSB0eXBlcywgZS5nLiAiaW1hZ2UvKiIgb3IgInZpZGVvLyoiLgorCisg
ICAgICAgIEZvciBDb2NvYSBwbGF0Zm9ybXMsIHdlIHdpbGwgZW51bWVyYXRlIHRoZSBVVElzIG9m
IHRoZSBzeXN0ZW0uIEdldCB0aGUKKyAgICAgICAgTUlNRVR5cGUgYW5kIHRoZSBleHRlbnNpb25z
IG9mIGVhY2ggVVRJLiBBZGQgdGhlIGZvbGxvd2luZyBwYWlycyB0byBhCisgICAgICAgIHNpbmds
ZXRvbiBIYXNoTWFwOgorCisgICAgICAgICAgICB7IE1JTUVUeXBlLCBleHRlbnNpb24gfQorICAg
ICAgICAgICAgeyBUeXBlKE1JTUVUeXBlKS8qLCBleHRlbnNpb24gfQorCisgICAgICAgIENoYW5n
ZSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoKSBzdWNoIHRoYXQg
aXQgY2FsbHMKKyAgICAgICAgZXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoKSBpZiB0aGUg
TUlNRVR5cGUgZW5kcyB3aXRoICIqIi4KKworICAgICAgICAqIHBsYXRmb3JtL01JTUVUeXBlUmVn
aXN0cnkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjpleHRlbnNpb25zRm9yTUlNRVR5cGVNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6ZXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9wbGF5c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1J
TUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlN
RVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL3hkZy9NSU1FVHlwZVJlZ2lzdHJ5WGRnLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1F
VHlwZSk6CisKIDIwMjAtMDctMDEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBXZWJLaXQgYnVpbGQgYWZ0ZXIgPHJkYXI6Ly9wcm9ibGVt
LzY0Mjg4MTkxPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3Ry
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0
cnkuaAkocmV2aXNpb24gMjYzODIxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5
cGVSZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uKTsKIAogICAgIC8vIEZJWE1FOiBXZWJLaXQgY29kaW5nIHN0
eWxlIHNheXMgd2Ugc2hvdWxkIG5vdCBoYXZlIHRoZSB3b3JkICJnZXQiIGluIHRoZSBuYW1lcyBv
ZiB0aGVzZSBmdW5jdGlvbnMuCi0gICAgc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldEV4dGVuc2lv
bnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5n
JiB0eXBlKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgU3RyaW5nIGdldFByZWZlcnJlZEV4
dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIFN0cmluZyBnZXRNZWRpYU1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmlu
ZyYgZXh0ZW5zaW9uKTsKICAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0TWVkaWFNSU1FVHlw
ZXNGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5t
bQkocmV2aXNpb24gMjYzODIxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlN
RVR5cGVSZWdpc3RyeUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMSArMjcsNjcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgogCisjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0NvcmVTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8cGFsL3NwaS9j
b2NvYS9OU1VSTEZpbGVUeXBlTWFwcGluZ3NTUEkuaD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0
b3JDb2NvYS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBIYXNoTWFwPFN0cmlu
ZywgSGFzaFNldDxTdHJpbmc+PiYgZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkKK3sKKyAgICBz
dGF0aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2ZXJEZXN0cm95ZWQo
W10geworICAgICAgICBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJpbmc+PiBtYXA7CisKKyAg
ICAgICAgYXV0byBhZGRFeHRlbnNpb24gPSBbJl0oY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBT
dHJpbmcmIGV4dGVuc2lvbikgeworICAgICAgICAgICAgbWFwLmFkZCh0eXBlLCBIYXNoU2V0PFN0
cmluZz4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChleHRlbnNpb24pOworICAgICAgICB9OworCisg
ICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9ucyA9IFsmXShjb25zdCBTdHJpbmcmIHR5cGUsIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKmV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIHNpemVfdCBwb3MgPSB0
eXBlLnJldmVyc2VGaW5kKCcvJyk7CisKKyAgICAgICAgICAgIEFTU0VSVChwb3MgIT0gbm90Rm91
bmQpOworICAgICAgICAgICAgYXV0byB3aWxkY2FyZE1JTUVUeXBlID0gbWFrZVN0cmluZyh0eXBl
LmxlZnQocG9zKSwgIi8qIl9zKTsKKworICAgICAgICAgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5z
aW9uIGluIGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWV4dGVuc2lvbikKKyAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAvLyBBZGQgZXh0
ZW5zaW9uIHRvIHdpbGRjYXJkTUlNRVR5cGUsIGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1h
Z2UvKiIKKyAgICAgICAgICAgICAgICBhZGRFeHRlbnNpb24od2lsZGNhcmRNSU1FVHlwZSwgZXh0
ZW5zaW9uKTsKKyAgICAgICAgICAgICAgICAvLyBBZGQgZXh0ZW5zaW9uIHRvIGl0cyBtaW1lVHlw
ZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS9wbmciCisgICAgICAgICAgICAgICAg
YWRkRXh0ZW5zaW9uKHR5cGUsIGV4dGVuc2lvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisKKyAgICAgICAgYXV0byBhbGxVVElzID0gYWRvcHROUygoX19icmlkZ2UgTlNBcnJheTxOU1N0
cmluZyAqPiAqKV9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpKTsKKworICAgICAgICBm
b3IgKE5TU3RyaW5nICp1dGkgaW4gYWxsVVRJcy5nZXQoKSkgeworICAgICAgICAgICAgYXV0byB0
eXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2JyaWRnZSBD
RlN0cmluZ1JlZil1dGksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKKyAgICAgICAgICAgIGlmICgh
dHlwZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGF1dG8gZXh0ZW5z
aW9ucyA9IGFkb3B0Q0YoVVRUeXBlQ29weUFsbFRhZ3NXaXRoQ2xhc3MoKF9fYnJpZGdlIENGU3Ry
aW5nUmVmKXV0aSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOworICAgICAgICAgICAg
aWYgKCFleHRlbnNpb25zIHx8ICFDRkFycmF5R2V0Q291bnQoZXh0ZW5zaW9ucy5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBhZGRFeHRlbnNpb25zKHR5cGUu
Z2V0KCksIChfX2JyaWRnZSBOU0FycmF5PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9ucy5nZXQoKSk7
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKSk7CisKKyAgICByZXR1
cm4gZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwOworfQorCitzdGF0aWMgVmVjdG9yPFN0cmluZz4g
ZXh0ZW5zaW9uc0ZvcldpbGRjYXJkTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQoreworICAg
IFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbnM7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gZXh0ZW5z
aW9uc0Zvck1JTUVUeXBlTWFwKCkuZmluZCh0eXBlKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gZXh0
ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkuZW5kKCkpCisgICAgICAgIGV4dGVuc2lvbnMuYXBwZW5k
UmFuZ2UoaXRlcmF0b3ItPnZhbHVlLmJlZ2luKCksIGl0ZXJhdG9yLT52YWx1ZS5lbmQoKSk7CisK
KyAgICByZXR1cm4gZXh0ZW5zaW9uczsKK30KKwogU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6Omdl
dE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uKQogewogICAgIHJl
dHVybiBbW05TVVJMRmlsZVR5cGVNYXBwaW5ncyBzaGFyZWRNYXBwaW5nc10gTUlNRVR5cGVGb3JF
eHRlbnNpb246KE5TU3RyaW5nICopZXh0ZW5zaW9uXTsKQEAgLTM5LDYgKzk1LDggQEAgU3RyaW5n
IE1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRQogCiBWZWN0b3I8U3RyaW5nPiBNSU1F
VHlwZVJlZ2lzdHJ5OjpnZXRFeHRlbnNpb25zRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiB0eXBl
KQogeworICAgIGlmICh0eXBlLmVuZHNXaXRoKCcqJykpCisgICAgICAgIHJldHVybiBleHRlbnNp
b25zRm9yV2lsZGNhcmRNSU1FVHlwZSh0eXBlKTsKICAgICByZXR1cm4gbWFrZVZlY3RvcjxTdHJp
bmc+KFtbTlNVUkxGaWxlVHlwZU1hcHBpbmdzIHNoYXJlZE1hcHBpbmdzXSBleHRlbnNpb25zRm9y
TUlNRVR5cGU6dHlwZV0pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9wbGF5
c3RhdGlvbi9NSU1FVHlwZVJlZ2lzdHJ5UGxheVN0YXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3BsYXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0cnlQbGF5U3Rh
dGlvbi5jcHAJKHJldmlzaW9uIDI2MzgyMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Bs
YXlzdGF0aW9uL01JTUVUeXBlUmVnaXN0cnlQbGF5U3RhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgwLDQgKzgwLDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRF
eHQKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAorVmVjdG9yPFN0cmluZz4gTUlNRVR5
cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpCit7Cisg
ICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICByZXR1cm4geyB9OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
TUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL01JTUVUeXBlUmVnaXN0cnlXaW4uY3BwCShyZXZpc2lvbiAyNjM4MjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTUlNRVR5cGVSZWdpc3RyeVdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNCw0ICsxMTQsMTAgQEAgYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0Fw
cGxpY2F0aW9uUGx1ZwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorVmVjdG9yPFN0cmluZz4gTUlN
RVR5cGVSZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYpCit7
CisgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICByZXR1cm4geyB9OworfQor
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ZGcvTUlNRVR5cGVSZWdpc3RyeVhk
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veGRnL01JTUVUeXBl
UmVnaXN0cnlYZGcuY3BwCShyZXZpc2lvbiAyNjM4MjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS94ZGcvTUlNRVR5cGVSZWdpc3RyeVhkZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDQg
KzY2LDEwIEBAIFN0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHQKICAgICBy
ZXR1cm4gcmV0dXJuVmFsdWU7CiB9CiAKK1ZlY3RvcjxTdHJpbmc+IE1JTUVUeXBlUmVnaXN0cnk6
OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VSVF9O
T1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgcmV0dXJuIHsgfTsKK30KKwogfQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MzgyMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDctMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8
c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KKworICAgICAgICBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRF
eHRlbnNpb25zRm9yTUlNRVR5cGUoKSBuZWVkcyB0byBoYW5kbGUgd2lsZGNhcmQgTUlNRSB0eXBl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzODI2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmVwbGFjZSBl
eHRlbnNpb25zRm9yTUlNRVR5cGUoKSB3aXRoIE1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lv
bnNGb3JNSU1FVHlwZSgpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS09wZW5Q
YW5lbFBhcmFtZXRlcnMubW06CisgICAgICAgICgtW1dLT3BlblBhbmVsUGFyYW1ldGVycyBfYWxs
b3dlZEZpbGVFeHRlbnNpb25zXSk6CisKIDIwMjAtMDctMDEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWxsb3cgdGhlIFdlYkNvbnRlbnQgc2Fu
ZGJveCB0byBjaGVjayB0aGUgJ2h3LnByb2R1Y3QnIHN5c2N0bApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLT3BlblBhbmVsUGFyYW1ldGVycy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzLm1tCShyZXZpc2lvbiAyNjM4MjEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tPcGVuUGFuZWxQYXJhbWV0ZXJzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2MCAr
MjUsMTIgQEAKIAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS09wZW5QYW5lbFBhcmFt
ZXRlcnNJbnRlcm5hbC5oIgotI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9Db3JlU2VydmljZXNTUEku
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTUlNRVR5cGVSZWdpc3RyeS5oPgogCiAjaWYgUExBVEZPUk0o
TUFDKQogCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKIAotc3RhdGljIE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1NldDxOU1N0cmluZyAqPiAqPiAqZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkK
LXsKLSAgICBzdGF0aWMgYXV0byBleHRlbnNpb25zRm9yTUlNRVR5cGVNYXAgPSBtYWtlTmV2ZXJE
ZXN0cm95ZWQoW10gewotICAgICAgICBhdXRvIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcCA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGF1dG8g
YWxsVVRJcyA9IGFkb3B0Q0YoX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkpOwotCi0g
ICAgICAgIGF1dG8gYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUgPSBeKE5TU3RyaW5nICptaW1lVHlw
ZSwgTlNTdHJpbmcgKmV4dGVuc2lvbikgewotICAgICAgICAgICAgaWYgKCFleHRlbnNpb25zRm9y
TUlNRVR5cGVNYXAuZ2V0KClbbWltZVR5cGVdKQotICAgICAgICAgICAgICAgIGV4dGVuc2lvbnNG
b3JNSU1FVHlwZU1hcC5nZXQoKVttaW1lVHlwZV0gPSBbTlNNdXRhYmxlU2V0IHNldF07Ci0gICAg
ICAgICAgICBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwLmdldCgpW21pbWVUeXBlXSBhZGRPYmpl
Y3Q6ZXh0ZW5zaW9uXTsKLSAgICAgICAgfTsKLQotICAgICAgICBhdXRvIGFkZEV4dGVuc2lvbnNG
b3JNSU1FVHlwZSA9IF4oTlNTdHJpbmcgKm1pbWVUeXBlLCBOU0FycmF5PE5TU3RyaW5nICo+ICpl
eHRlbnNpb25zKSB7Ci0gICAgICAgICAgICBhdXRvIHdpbGRjYXJkTUlNRVR5cGUgPSBbW21pbWVU
eXBlIGNvbXBvbmVudHNTZXBhcmF0ZWRCeVN0cmluZzpAIi8iXVswXSBzdHJpbmdCeUFwcGVuZGlu
Z1N0cmluZzpAIi8qIl07Ci0KLSAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbiBp
biBleHRlbnNpb25zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24g
dG8gd2lsZGNhcmRNSU1FVHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS8qIgot
ICAgICAgICAgICAgICAgIGFkZEV4dGVuc2lvbkZvck1JTUVUeXBlKHdpbGRjYXJkTUlNRVR5cGUs
IGV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byBpdHNtaW1l
VHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS9wbmciCi0gICAgICAgICAgICAg
ICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUobWltZVR5cGUsIGV4dGVuc2lvbik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwLCBjb3VudCA9
IENGQXJyYXlHZXRDb3VudChhbGxVVElzLmdldCgpKTsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAg
ICAgICAgIGF1dG8gdXRpID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgoYWxsVVRJcy5nZXQoKSwgaSkpOwotICAgICAgICAgICAgYXV0byBtaW1lVHlwZSA9
IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNz
TUlNRVR5cGUpKTsKLSAgICAgICAgICAgIGlmICghbWltZVR5cGUpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBhdXRvIGV4dGVuc2lvbnMgPSBhZG9wdENGKFVUVHlwZUNv
cHlBbGxUYWdzV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbikpOwot
ICAgICAgICAgICAgYWRkRXh0ZW5zaW9uc0Zvck1JTUVUeXBlKChfX2JyaWRnZSBOU1N0cmluZyAq
KW1pbWVUeXBlLmdldCgpLCAoX19icmlkZ2UgTlNBcnJheTxOU1N0cmluZyAqPiAqKWV4dGVuc2lv
bnMuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQWRkIGFkZGl0aW9uYWwgbWltZSB0
eXBlcyB3aGljaCBfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSBtYXkgbm90IHJldHVy
bi4KLSAgICAgICAgYWRkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoQCJpbWFnZS93ZWJwIiwgQCJ3ZWJw
Iik7Ci0KLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcDsKLSAgICB9KCkp
OwotCi0gICAgcmV0dXJuIGV4dGVuc2lvbnNGb3JNSU1FVHlwZU1hcC5nZXQoKS5nZXQoKTsKLX0K
LQotc3RhdGljIE5TU2V0PE5TU3RyaW5nICo+ICpleHRlbnNpb25zRm9yTUlNRVR5cGUoTlNTdHJp
bmcgKm1pbWV0eXBlKQotewotICAgIHJldHVybiBbZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKCkg
b2JqZWN0Rm9yS2V5Om1pbWV0eXBlXTsKLX0KLQogQGltcGxlbWVudGF0aW9uIFdLT3BlblBhbmVs
UGFyYW1ldGVycwogCiAtIChCT09MKWFsbG93c011bHRpcGxlU2VsZWN0aW9uCkBAIC0xMjIsNyAr
NzQsOCBAQCAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopX2FsbG93ZWRGaWxlRXh0CiAKICAgICBb
YWNjZXB0ZWRNSU1FVHlwZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6XihOU1N0cmluZyAq
bWltZVR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wqIHN0b3ApIHsKICAgICAgICAgQVNTRVJU
KFttaW1lVHlwZSBjb250YWluc1N0cmluZzpAIi8iXSk7Ci0gICAgICAgIFthbGxvd2VkRmlsZUV4
dGVuc2lvbnMgdW5pb25TZXQ6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlKG1pbWVUeXBlKV07CisgICAg
ICAgIGF1dG8gZXh0ZW5zaW9ucyA9IEFQSTo6QXJyYXk6OmNyZWF0ZVN0cmluZ0FycmF5KFdlYkNv
cmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldEV4dGVuc2lvbnNGb3JNSU1FVHlwZShtaW1lVHlwZSkp
OworICAgICAgICBbYWxsb3dlZEZpbGVFeHRlbnNpb25zIGFkZE9iamVjdHNGcm9tQXJyYXk6d3Jh
cHBlcihleHRlbnNpb25zKV07CiAgICAgfV07CiAKICAgICBhdXRvIGFkZGl0aW9uYWxBbGxvd2Vk
RmlsZUV4dGVuc2lvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403418</attachid>
            <date>2020-07-02 17:03:18 -0700</date>
            <delta_ts>2020-07-02 19:30:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213826-20200702170318.patch</filename>
            <type>text/plain</type>
            <size>2241</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg3NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA3LTAyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgbmVlZHMgdG8gaGFuZGxlIHdpbGRj
YXJkIE1JTUUgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzgyNgorCisgICAgICAgIEFkZHJlc3NpbmcgcG9zdCBjb21taXQgcmV2aWV3IGNv
bW1lbnRzIGZvciByMjYzODMyLgorCisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVS
ZWdpc3RyeUNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBl
TWFwKToKKwogMjAyMC0wNy0wMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNjAyNzYpOiBtZW51IGl0ZW1zIGluIGZvb3RlciBv
ZiBodHRwczovL3NhbG8uYWkgYXJlIGludmlzaWJsZSB1bnRpbCB5b3UgaG92ZXIgb3IgcmVzaXpl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5
cGVSZWdpc3RyeUNvY29hLm1tCShyZXZpc2lvbiAyNjM4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9NSU1FVHlwZVJlZ2lzdHJ5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDEyICs0Niw5IEBAIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgSGFzaFNldDxTdHJpbmc+PiYK
ICAgICAgICAgICAgIHNpemVfdCBwb3MgPSB0eXBlLnJldmVyc2VGaW5kKCcvJyk7CiAKICAgICAg
ICAgICAgIEFTU0VSVChwb3MgIT0gbm90Rm91bmQpOwotICAgICAgICAgICAgYXV0byB3aWxkY2Fy
ZE1JTUVUeXBlID0gbWFrZVN0cmluZyh0eXBlLmxlZnQocG9zKSwgIi8qIl9zKTsKKyAgICAgICAg
ICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9IG1ha2VTdHJpbmcoU3RyaW5nVmlldyh0eXBlKS5s
ZWZ0KHBvcyksICIvKiJfcyk7CiAKICAgICAgICAgICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lv
biBpbiBleHRlbnNpb25zKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFleHRlbnNpb24pCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVu
c2lvbiB0byB3aWxkY2FyZE1JTUVUeXBlLCBmb3IgZXhhbXBsZSBhZGQgInBuZyIgdG8gImltYWdl
LyoiCiAgICAgICAgICAgICAgICAgYWRkRXh0ZW5zaW9uKHdpbGRjYXJkTUlNRVR5cGUsIGV4dGVu
c2lvbik7CiAgICAgICAgICAgICAgICAgLy8gQWRkIGV4dGVuc2lvbiB0byBpdHMgbWltZVR5cGUs
IGZvciBleGFtcGxlIGFkZCAicG5nIiB0byAiaW1hZ2UvcG5nIgpAQCAtNTksOSArNTYsOSBAQCBz
dGF0aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4mCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH07CiAKLSAgICAgICAgYXV0byBhbGxVVElzID0gYWRvcHROUygoX19icmlkZ2UgTlNB
cnJheTxOU1N0cmluZyAqPiAqKV9VVENvcHlEZWNsYXJlZFR5cGVJZGVudGlmaWVycygpKTsKKyAg
ICAgICAgYXV0byBhbGxVVElzID0gYWRvcHRDRihfVVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmll
cnMoKSk7CiAKLSAgICAgICAgZm9yIChOU1N0cmluZyAqdXRpIGluIGFsbFVUSXMuZ2V0KCkpIHsK
KyAgICAgICAgZm9yIChOU1N0cmluZyAqdXRpIGluIChfX2JyaWRnZSBOU0FycmF5PE5TU3RyaW5n
ICo+ICopYWxsVVRJcy5nZXQoKSkgewogICAgICAgICAgICAgYXV0byB0eXBlID0gYWRvcHRDRihV
VFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKChfX2JyaWRnZSBDRlN0cmluZ1JlZil1dGks
IGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKICAgICAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403432</attachid>
            <date>2020-07-02 19:30:31 -0700</date>
            <delta_ts>2020-07-02 20:20:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213826-20200702193030.patch</filename>
            <type>text/plain</type>
            <size>2221</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA3LTAyICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0RXh0ZW5zaW9uc0Zvck1JTUVUeXBlKCkgbmVlZHMgdG8gaGFuZGxlIHdpbGRj
YXJkIE1JTUUgdHlwZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzgyNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAg
ICAgIEFkZHJlc3NpbmcgcG9zdCBjb21taXQgcmV2aWV3IGNvbW1lbnRzIGZvciByMjYzODMyLgor
CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6ZXh0ZW5zaW9uc0Zvck1JTUVUeXBlTWFwKToKKwogMjAyMC0wNy0wMiAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgR2FtZUNvbnRyb2xs
ZXIuZnJhbWV3b3JrIHNvZnQgbGlua2luZyByZWZhY3RvcmluZwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5cGVSZWdpc3RyeUNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01JTUVUeXBlUmVnaXN0cnlDb2NvYS5tbQko
cmV2aXNpb24gMjYzODc5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTUlNRVR5
cGVSZWdpc3RyeUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsOSBAQCBzdGF0
aWMgSGFzaE1hcDxTdHJpbmcsIEhhc2hTZXQ8U3RyaW5nPj4mCiAgICAgICAgICAgICBzaXplX3Qg
cG9zID0gdHlwZS5yZXZlcnNlRmluZCgnLycpOwogCiAgICAgICAgICAgICBBU1NFUlQocG9zICE9
IG5vdEZvdW5kKTsKLSAgICAgICAgICAgIGF1dG8gd2lsZGNhcmRNSU1FVHlwZSA9IG1ha2VTdHJp
bmcodHlwZS5sZWZ0KHBvcyksICIvKiJfcyk7CisgICAgICAgICAgICBhdXRvIHdpbGRjYXJkTUlN
RVR5cGUgPSBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcodHlwZSkubGVmdChwb3MpLCAiLyoiX3MpOwog
CiAgICAgICAgICAgICBmb3IgKE5TU3RyaW5nICpleHRlbnNpb24gaW4gZXh0ZW5zaW9ucykgewot
ICAgICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQogICAgICAgICAgICAgICAgIC8vIEFkZCBleHRlbnNpb24gdG8gd2lsZGNhcmRNSU1F
VHlwZSwgZm9yIGV4YW1wbGUgYWRkICJwbmciIHRvICJpbWFnZS8qIgogICAgICAgICAgICAgICAg
IGFkZEV4dGVuc2lvbih3aWxkY2FyZE1JTUVUeXBlLCBleHRlbnNpb24pOwogICAgICAgICAgICAg
ICAgIC8vIEFkZCBleHRlbnNpb24gdG8gaXRzIG1pbWVUeXBlLCBmb3IgZXhhbXBsZSBhZGQgInBu
ZyIgdG8gImltYWdlL3BuZyIKQEAgLTU5LDkgKzU2LDkgQEAgc3RhdGljIEhhc2hNYXA8U3RyaW5n
LCBIYXNoU2V0PFN0cmluZz4+JgogICAgICAgICAgICAgfQogICAgICAgICB9OwogCi0gICAgICAg
IGF1dG8gYWxsVVRJcyA9IGFkb3B0TlMoKF9fYnJpZGdlIE5TQXJyYXk8TlNTdHJpbmcgKj4gKilf
VVRDb3B5RGVjbGFyZWRUeXBlSWRlbnRpZmllcnMoKSk7CisgICAgICAgIGF1dG8gYWxsVVRJcyA9
IGFkb3B0Q0YoX1VUQ29weURlY2xhcmVkVHlwZUlkZW50aWZpZXJzKCkpOwogCi0gICAgICAgIGZv
ciAoTlNTdHJpbmcgKnV0aSBpbiBhbGxVVElzLmdldCgpKSB7CisgICAgICAgIGZvciAoTlNTdHJp
bmcgKnV0aSBpbiAoX19icmlkZ2UgTlNBcnJheTxOU1N0cmluZyAqPiAqKWFsbFVUSXMuZ2V0KCkp
IHsKICAgICAgICAgICAgIGF1dG8gdHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRh
Z1dpdGhDbGFzcygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpdXRpLCBrVVRUYWdDbGFzc01JTUVUeXBl
KSk7CiAgICAgICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICAgICAgY29udGludWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>