<?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>192335</bug_id>
          
          <creation_ts>2018-12-03 15:00:14 -0800</creation_ts>
          <short_desc>CS Painting API should support multiple worklets.</short_desc>
          <delta_ts>2019-04-25 09:23:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=197283</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>190217</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Justin Michaud">justin_michaud</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1484543</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-12-03 15:00:14 -0800</bug_when>
    <thetext>CS Painting API should support multiple worklets. Right now, they are just overridden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485915</commentid>
    <comment_count>1</comment_count>
      <attachid>356779</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-12-06 19:48:44 -0800</bug_when>
    <thetext>Created attachment 356779
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486061</commentid>
    <comment_count>2</comment_count>
      <attachid>356779</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-12-07 11:07:45 -0800</bug_when>
    <thetext>Comment on attachment 356779
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:1732
&gt; +        if (document().paintWorkletGlobalScope(name)) {
&gt; +            auto&amp; paintWorklet = *document().paintWorkletGlobalScope(name);
&gt; +            auto locker = holdLock(paintWorklet.paintDefinitionLock());
&gt; +            if (auto* registration = paintWorklet.paintDefinitionMap().get(name)) {
&gt; +                for (auto&amp; property : registration-&gt;inputProperties)
&gt; +                    state.style()-&gt;addCustomPaintWatchProperty(property);
&gt; +            }
&gt;          }

What happens if there isn&apos;t a worklet global scope with this name? Should we throw an error/ASSERT?

&gt; Source/WebCore/dom/Document.cpp:8522
&gt; +PaintWorkletGlobalScope* Document::paintWorkletGlobalScope(const String&amp; name)

I wonder if this should be paintWorkletGlobalScopeForName/WithName? or maybe I&apos;ve just been looking at ObjC too much recently.

&gt; Source/WebCore/worklets/Worklet.cpp:55
&gt; +    auto locker = holdLock(context-&gt;paintDefinitionLock());
&gt; +    for (auto&amp; name : context-&gt;paintDefinitionMap().keys())
&gt; +        document.setPaintWorkletGlobalScope(name, makeRef(context.get()));

Should we check that the name doesn&apos;t already exist?

&gt; LayoutTests/fast/css-custom-paint/multiple-worklets.html:4
&gt; +&lt;meta name=&quot;assert&quot; content=&quot;test hidpi scaling&quot;&gt;

Is this correct?

&gt; LayoutTests/fast/css-custom-paint/multiple-worklets.html:40
&gt; +&lt;script id=&quot;code1&quot; type=&quot;text/worklet&quot;&gt;
&gt; +registerPaint(&apos;my-paint&apos;, class {
&gt; +  paint(ctx, geom, properties) {
&gt; +    ctx.fillStyle = &apos;purple&apos;;
&gt; +    ctx.fillRect(0, 0, geom.width, geom.height);
&gt; +  }
&gt; +});
&gt; +&lt;/script&gt;
&gt; +
&gt; +&lt;script id=&quot;code2&quot; type=&quot;text/worklet&quot;&gt;
&gt; +registerPaint(&apos;my-paint2&apos;, class {
&gt; +  paint(ctx, geom, properties) {
&gt; +    ctx.fillStyle = &apos;green&apos;;
&gt; +    ctx.fillRect(0, 0, geom.width, geom.height);
&gt; +  }
&gt; +});
&gt; +&lt;/script&gt;

I&apos;m not sure how this test exercises they are isolated scopes. Could you try to write to a global variable in one, and then read the value in the other? (or something on a built-in prototype)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486257</commentid>
    <comment_count>3</comment_count>
      <attachid>356779</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-12-07 17:45:10 -0800</bug_when>
    <thetext>Comment on attachment 356779
Patch

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

&gt; Source/WebCore/css/StyleResolver.cpp:1726
&gt; +        if (document().paintWorkletGlobalScope(name)) {
&gt; +            auto&amp; paintWorklet = *document().paintWorkletGlobalScope(name);

Two hash lookups here. Should be:

if (auto* workout = document().paintWorkletGlobalScope(name))
  auto&amp; paintWorklet = *worklet.

&gt; Source/WebCore/dom/Document.cpp:2567
&gt; +    for (auto&amp; scope : m_paintWorkletGlobalScopes.values()) {

No braces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486634</commentid>
    <comment_count>4</comment_count>
      <attachid>356973</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-12-10 11:28:06 -0800</bug_when>
    <thetext>Created attachment 356973
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486781</commentid>
    <comment_count>5</comment_count>
      <attachid>356973</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-12-10 15:52:29 -0800</bug_when>
    <thetext>Comment on attachment 356973
Patch

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

&gt; LayoutTests/fast/css-custom-paint/multiple-worklets-isolation.html:29
&gt; +    console.log(&quot;Paint 1: &quot; + typeof(shouldOnlyBeInCode1));

Did you want to leave this in?

&gt; LayoutTests/fast/css-custom-paint/multiple-worklets-isolation.html:34
&gt; +    if (typeof(shouldOnlyBeInCode1) == &apos;function&apos;) {
&gt; +      ctx.fillStyle = &apos;green&apos;;
&gt; +    } else {
&gt; +      ctx.fillStyle = &apos;red&apos;;
&gt; +    }

ctx.fillStyle = (typeof(shouldOnlyBeInCode1) == &apos;function&apos;) ? &apos;green&apos; : &apos;red&apos;;

&gt; LayoutTests/fast/css-custom-paint/multiple-worklets-isolation.html:43
&gt; +    if (typeof(shouldOnlyBeInCode1) == &apos;undefined&apos;) {

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486817</commentid>
    <comment_count>6</comment_count>
      <attachid>357018</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-12-10 16:46:15 -0800</bug_when>
    <thetext>Created attachment 357018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486866</commentid>
    <comment_count>7</comment_count>
      <attachid>357018</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-10 19:55:56 -0800</bug_when>
    <thetext>Comment on attachment 357018
Patch

Clearing flags on attachment: 357018

Committed r239067: &lt;https://trac.webkit.org/changeset/239067&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486867</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-10 19:55:58 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486868</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-10 19:56:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/46617313&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356779</attachid>
            <date>2018-12-06 19:48:44 -0800</date>
            <delta_ts>2018-12-10 11:28:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192335-20181206194839.patch</filename>
            <type>text/plain</type>
            <size>10693</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTJkOTQ2ZDZlZjAyZjZj
YzJlMGZmODU5NmRhZTExOWE1NjBlMDNkYy4uNWE3ZjJmNmFhNDM4MDM5NzBiYjI2OWJhN2YxYTAx
M2ZiMTVlNTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE4LTEyLTA2ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDUyBQYWlu
dGluZyBBUEkgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgd29ya2xldHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IG1hcCB0byBzdXBw
b3J0IHNlcGFyYXRlIHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlcyAob25lIGZvciBlYWNoIHdv
cmtsZXQpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13
b3JrbGV0cy5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhaW50SW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNz
cy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpwYWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGRvbS9Eb2N1
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhaW50V29ya2xldEdsb2JhbFNj
b3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrbGV0cy9Xb3JrbGV0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXQ6OmFkZE1vZHVsZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xl
dEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6
cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKwogMjAxOC0xMi0wNiAgQWRyaWFuIFBlcmV6IGRlIENh
c3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnRlbnQgRXh0ZW5zaW9uczog
TWlzYyBmaXhlcyB0byBkZWJ1Z2dpbmcgLyBwZXJmIHRlc3RpbmcgY29kZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCA3OTY4NDZlNjQ3MWY1N2U0OWMxZjVi
ZjlmNmY3NjI2OThiYmZjMTUyLi44MTFjMWY2OTQ4YzM5MmExODM4OGY5YWUxZjdhZjVkZTRiNDBh
NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcApAQCAtNTEs
NyArNTEsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6aW1hZ2UoUmVuZGVy
RWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogewogICAgIGlmIChzaXplLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byogc2VsZWN0ZWRHbG9iYWxT
Y29wZSA9IHJlbmRlckVsZW1lbnQuZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZSgp
OworICAgIGF1dG8qIHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50
KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUobV9uYW1lKTsKICAgICBpZiAoIXNlbGVjdGVkR2xv
YmFsU2NvcGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTG9jaygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2YTFjZTQ5ZDBjNDA3OWY5OTBhYjBmOTk4
YmU2NTU3MjUyNmUwMGU4Li4xM2ZjYmJlODNhM2UyYWYzODg0YTVkNWY3ZmE1MGEwZDMxNDExODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzIwLDEzICsxNzIwLDE1
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKLSAgICBpZiAoaXM8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KSAm
JiBkb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgImRvY3VtZW50IHBhaW50IHJlZ2lzdHJhdGlvbiBtYXAi
IGZyb20gdGhlIHNwZWMsIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQuCi0gICAgICAgIGF1dG8mIHBh
aW50V29ya2xldCA9ICpkb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnRXb3JrbGV0LnBhaW50RGVmaW5pdGlvbkxv
Y2soKSk7Ci0gICAgICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBwYWludFdvcmtsZXQucGFp
bnREZWZpbml0aW9uTWFwKCkuZ2V0KGRvd25jYXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVl
VG9BcHBseSkubmFtZSgpKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHJl
Z2lzdHJhdGlvbi0+aW5wdXRQcm9wZXJ0aWVzKQotICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgaWYgKGlzPENT
U1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkpIHsKKyAgICAgICAgYXV0byYgbmFtZSA9
IGRvd25jYXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkubmFtZSgpOworICAg
ICAgICBpZiAoZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZShuYW1lKSkgeworICAg
ICAgICAgICAgYXV0byYgcGFpbnRXb3JrbGV0ID0gKmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUobmFtZSk7CisgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50
V29ya2xldC5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgaWYgKGF1dG8qIHJl
Z2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5wYWludERlZmluaXRpb25NYXAoKS5nZXQobmFtZSkp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9uLT5p
bnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxlKCktPmFkZEN1
c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGUzMzRhZGJlYWVi
MDJhZGQ4YTMwNTgyOWM5YjZmMmVlYjRlNWZhZTIuLmI2ODE2NzYyNzIzMTllNTk3ODFlMTYxMmFi
ZmYzOGZlZjc1Yzg3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjU2NCwxMCArMjU2
NCwxMCBAQCB2b2lkIERvY3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBpZiAobV9wYWludFdvcmtsZXRHbG9i
YWxTY29wZSkgewotICAgICAgICBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlLT5wcmVwYXJlRm9y
RGVzdHJ1Y3Rpb24oKTsKLSAgICAgICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZSA9IG51bGxw
dHI7CisgICAgZm9yIChhdXRvJiBzY29wZSA6IG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVzLnZh
bHVlcygpKSB7CisgICAgICAgIHNjb3BlLT5wcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKICAgICB9
CisgICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZXMuY2xlYXIoKTsKICNlbmRpZgogCiAgICAg
bV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKQEAgLTg1MTksOSArODUxOSwxNSBA
QCBXb3JrbGV0JiBEb2N1bWVudDo6ZW5zdXJlUGFpbnRXb3JrbGV0KCkKICAgICByZXR1cm4gKm1f
cGFpbnRXb3JrbGV0OwogfQogCi12b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmtsZXRHbG9iYWxT
Y29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCitQYWludFdvcmtsZXRH
bG9iYWxTY29wZSogRG9jdW1lbnQ6OnBhaW50V29ya2xldEdsb2JhbFNjb3BlKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKIHsKLSAgICBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlID0gV1RGTW92ZShzY29w
ZSk7CisgICAgcmV0dXJuIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVzLmdldChuYW1lKTsKK30K
Kwordm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoY29uc3QgU3RyaW5n
JiBuYW1lLCBSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCit7CisgICAgYXV0
byBhZGRSZXN1bHQgPSBtX3BhaW50V29ya2xldEdsb2JhbFNjb3Blcy5hZGQobmFtZSwgV1RGTW92
ZShzY29wZSkpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNWI1ZmY0OWI3ZjEzNmM2NzIyNDVmZTVi
YjkyNGZhZmQ4YWUzNGUwYi4uNzg1Njc3NGM5Y2I4ZWNmYzE4N2NjMjU2Njg1OTc5OTA3YmVjOGMw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1MjIsOCArMTUyMiw4IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIFdvcmtsZXQmIGVuc3VyZVBhaW50V29y
a2xldCgpOwotICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3BlKiBwYWludFdvcmtsZXRHbG9iYWxT
Y29wZSgpIHsgcmV0dXJuIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuZ2V0KCk7IH0KLSAgICB2
b2lkIHNldFBhaW50V29ya2xldEdsb2JhbFNjb3BlKFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29w
ZT4mJik7CisgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUqIHBhaW50V29ya2xldEdsb2JhbFNj
b3BlKGNvbnN0IFN0cmluZyYgbmFtZSk7CisgICAgdm9pZCBzZXRQYWludFdvcmtsZXRHbG9iYWxT
Y29wZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4mJik7
CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0QXNSdW5uaW5nVXNlclNjcmlwdHMoKSB7IG1faXNSdW5u
aW5nVXNlclNjcmlwdHMgPSB0cnVlOyB9CkBAIC0yMDcyLDcgKzIwNzIsNyBAQCBwcml2YXRlOgog
CiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAgICAgUmVmUHRyPFdvcmtsZXQ+IG1fcGFp
bnRXb3JrbGV0OwotICAgIFJlZlB0cjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4gbV9wYWludFdv
cmtsZXRHbG9iYWxTY29wZTsKKyAgICBIYXNoTWFwPFN0cmluZywgUmVmPFBhaW50V29ya2xldEds
b2JhbFNjb3BlPj4gbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZXM7CiAjZW5kaWYKIAogICAgIGJv
b2wgbV9pc1J1bm5pbmdVc2VyU2NyaXB0cyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dv
cmtsZXQuY3BwCmluZGV4IDM4ZjJjNTg5NmYyY2JkOWZmODZjZDU4MDAxMjE5ZTE4OTQ0Njc3NzIu
LjMxNjQ1NzljZDdlNGEzNTAzMWJhYjU1ODg5ZDA4MzFmYmRkYzZjMzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXQuY3BwCkBAIC00OSw5ICs0OSwxMCBAQCB2b2lkIFdvcmtsZXQ6OmFkZE1v
ZHVsZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMKQogICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKICAgICBhdXRv
IGNvbnRleHQgPSBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKGRvY3VtZW50LCBTY3Jp
cHRTb3VyY2VDb2RlKG1vZHVsZVVSTCkpOwogICAgIGNvbnRleHQtPmV2YWx1YXRlKCk7Ci0gICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBzdG9yZSBtdWx0aXBsZSBnbG9iYWwgc2NvcGVzIGFuZCBjaG9v
c2UgYmV0d2VlbiB0aGVtCi0gICAgLy8gVGhpcyB3aWxsIG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkg
aWYgbXVsdGlwbGUgbW9kdWxlcyBhcmUgYWRkZWQuCi0gICAgZG9jdW1lbnQuc2V0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUoV1RGTW92ZShjb250ZXh0KSk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGNvbnRleHQtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgZm9yIChhdXRvJiBu
YW1lIDogY29udGV4dC0+cGFpbnREZWZpbml0aW9uTWFwKCkua2V5cygpKQorICAgICAgICBkb2N1
bWVudC5zZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZShuYW1lLCBtYWtlUmVmKGNvbnRleHQuZ2V0
KCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggM2M1NjE5NjgwM2UxYmNiNDJhODll
MjAxODc3MjhmZTZhNjk0MTA4ZS4uNzIzNDAzMTU3MGZlMzA1ZThlOTM0Yzc1YTU3ZDY2ZDQ4N2Uy
ODg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUu
Y3BwCkBAIC03NCw3ICs3NCw4IEBAIFdvcmtsZXRHbG9iYWxTY29wZTo6fldvcmtsZXRHbG9iYWxT
Y29wZSgpCiAKIHZvaWQgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24o
KQogewotICAgIEFTU0VSVChtX3NjcmlwdCk7CisgICAgaWYgKCFtX3NjcmlwdCkKKyAgICAgICAg
cmV0dXJuOwogICAgIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAgICAgcmVtb3ZlUmVqZWN0ZWRQ
cm9taXNlVHJhY2tlcigpOwogICAgIHJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NTY1YWI4MWEzNmYzNDAwNjdlNWZhZTcwNjlkOWQxNWExNzFlMDA4Mi4uYzBlYzVhNWRmNTU5MzRm
ODBiNmQ4MjhjODQwOGIyMjRlNmFkZTNjMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTEy
LTA2ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAg
ICBDUyBQYWludGluZyBBUEkgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgd29ya2xldHMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMzUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzLWN1
c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMuaHRtbDogQWRkZWQu
CisKIDIwMTgtMTItMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gV0tXZWJWaWV3IHNob3VsZCBtYXRjaCBVSVRleHRWaWV3IGJlaGF2aW9y
IHdoZW4gZWRpdGluZyB0ZXh0IHdpdGggYW4gUlRMIGtleWJvYXJkCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0
cy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5MGU4ODBiMWQyZThiNGU4N2FiNGZiYjU1NWY4
MWIxOGVjNTU1Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGRpdiBpZD0icGFpbnQiIHN0eWxlPSJ3aWR0aDogMTUwcHg7IGhl
aWdodDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsiID48L2Rpdj4KKzxkaXYgaWQ9
InBhaW50MiIgc3R5bGU9IndpZHRoOiAxNTBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47IiA+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1OTZkZjQ1
Njk2NmM3ZmJlMGU4ODhhNmE5NWVlZjNmODNmYWM0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMuaHRtbApAQCAt
MCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4
cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJhdXRob3Ii
IHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtp
dC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJ0ZXN0IGhpZHBpIHNjYWxpbmci
PgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5v
cmcvY3NzLXBhaW50LWFwaS0xLyI+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3Jv
dW5kLWltYWdlOiBwYWludChteS1wYWludDIpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWln
aHQ6IDE1MHB4OworICB9CisKKyAgI3BhaW50MiB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFp
bnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9
Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJwYWludCI+PC9kaXY+Cis8ZGl2IGlkPSJwYWludDIiPjwv
ZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlMSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK3JlZ2lzdGVy
UGFpbnQoJ215LXBhaW50JywgY2xhc3MgeworICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMp
IHsKKyAgICBjdHguZmlsbFN0eWxlID0gJ3B1cnBsZSc7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAs
IGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgfQorfSk7Cis8L3NjcmlwdD4KKworPHNjcmlw
dCBpZD0iY29kZTIiIHR5cGU9InRleHQvd29ya2xldCI+CityZWdpc3RlclBhaW50KCdteS1wYWlu
dDInLCBjbGFzcyB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGN0eC5m
aWxsU3R5bGUgPSAnZ3JlZW4nOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBn
ZW9tLmhlaWdodCk7CisgIH0KK30pOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitpbXBvcnRXb3Jr
bGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlMScpLnRl
eHRDb250ZW50KTsKK2ltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2NvZGUyJykudGV4dENvbnRlbnQpOworcGFpbnQuc3R5bGUuYmFja2dyb3Vu
ZEltYWdlID0gInBhaW50KG15LXBhaW50KSI7CitwYWludDIuc3R5bGUuYmFja2dyb3VuZEltYWdl
ID0gInBhaW50KG15LXBhaW50MikiOworPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356973</attachid>
            <date>2018-12-10 11:28:06 -0800</date>
            <delta_ts>2018-12-10 16:46:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192335-20181210112805.patch</filename>
            <type>text/plain</type>
            <size>23061</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUxNDZiODhhMjFjNDcy
YTFlYzgzNWZiZWFlMmQ3YzIyNWRlMDZhNC4uZGM1ZjQ1ZTdlMGMwNzM0M2IxZDlhNjE1Yzc3ODI0
NzY5NDU0NmQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTEyLTEwICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDUyBQYWlu
dGluZyBBUEkgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgd29ya2xldHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgbmV3IG1hcCB0byBzdXBw
b3J0IHNlcGFyYXRlIHBhaW50IHdvcmtsZXQgZ2xvYmFsIHNjb3BlcyAob25lIGZvciBlYWNoIHdv
cmtsZXQpLiBBbHNvCisgICAgICAgIGFkZHMgc29tZSB0ZXN0cyBhbmQgYSBmaXggZm9yIGEgcmVw
YWludCBidWcgdGhhdCB0aGlzIG9uY292ZXJlZCwgd2hlcmUgY2hhbmdpbmcgYSBjdXN0b20gcHJv
cGVydHkgcmVxdWlyZWQKKyAgICAgICAgZm9yIHBhaW50IHdvdWxkIG5vdCB0cmlnZ2VyIGEgcmVw
YWludCBpZiB0aGVyZSBoYWQgbm90IGJlZW4gYSB2YWxpZCB2YWx1ZSBzZXQgYmVmb3JlLgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy5odG1s
CisKKyAgICAgICAgKiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1BhaW50SW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpw
YWludFdvcmtsZXRHbG9iYWxTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhaW50V29ya2xldEdsb2JhbFNjb3BlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y2hhbmdlZEN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnR5KToKKyAgICAgICAgKiB3
b3JrbGV0cy9Xb3JrbGV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtsZXQ6OmFkZE1vZHVs
ZSk6CisgICAgICAgICogd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKToKKwog
MjAxOC0xMi0wNyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ1NTIFBhaW50aW5nIEFQSSBjb2RlIGNsZWFudXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKaW5kZXggNzk2ODQ2ZTY0NzFmNTdlNDljMWY1YmY5ZjZm
NzYyNjk4YmJmYzE1Mi4uOGNhNmU1ZTIwYzU0ZTc2YzFlNjk2ZWEyOGJlZDQ0MDEyMTI0MTNlYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKQEAgLTUxLDcgKzUx
LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NQYWludEltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1l
bnQmIHJlbmRlckVsZW1lbnQsIGNvbnN0IEZsb2EKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIGF1dG8qIHNlbGVjdGVkR2xvYmFsU2NvcGUg
PSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKKyAg
ICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLnBh
aW50V29ya2xldEdsb2JhbFNjb3BlRm9yTmFtZShtX25hbWUpOwogICAgIGlmICghc2VsZWN0ZWRH
bG9iYWxTY29wZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhzZWxlY3RlZEdsb2JhbFNjb3BlLT5wYWludERlZmluaXRpb25Mb2NrKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDZhMWNlNDlkMGM0MDc5Zjk5MGFiMGY5
OThiZTY1NTcyNTI2ZTAwZTguLmVjZmE0YzU2MGZhYzNjYzBkMmUwNGIzOWY3NWUyMTYzZTc5NDMx
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTE3MjAsMTMgKzE3MjAs
MTQgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQs
IENTU1ZhbHVlKiB2YWx1ZSwgQXBwbHlDYXNjYWQKICAgICAgICAgc3RhdGUuc3R5bGUoKS0+c2V0
SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKIAogI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQotICAgIGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KCp2YWx1ZVRvQXBwbHkp
ICYmIGRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKSkgewotICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgdXNlIHRoZSAiZG9jdW1lbnQgcGFpbnQgcmVnaXN0cmF0aW9uIG1h
cCIgZnJvbSB0aGUgc3BlYywgb25jZSBpdCBpcyBpbXBsZW1lbnRlZC4KLSAgICAgICAgYXV0byYg
cGFpbnRXb3JrbGV0ID0gKmRvY3VtZW50KCkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKTsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludFdvcmtsZXQucGFpbnREZWZpbml0aW9u
TG9jaygpKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC5w
YWludERlZmluaXRpb25NYXAoKS5nZXQoZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFs
dWVUb0FwcGx5KS5uYW1lKCkpKSB7Ci0gICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDog
cmVnaXN0cmF0aW9uLT5pbnB1dFByb3BlcnRpZXMpCi0gICAgICAgICAgICAgICAgc3RhdGUuc3R5
bGUoKS0+YWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICBpZiAoaXM8
Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KSkgeworICAgICAgICBhdXRvJiBuYW1l
ID0gZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KS5uYW1lKCk7Cisg
ICAgICAgIGlmIChhdXRvKiBwYWludFdvcmtsZXQgPSBkb2N1bWVudCgpLnBhaW50V29ya2xldEds
b2JhbFNjb3BlRm9yTmFtZShuYW1lKSkgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhwYWludFdvcmtsZXQtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgICAgICBp
ZiAoYXV0byogcmVnaXN0cmF0aW9uID0gcGFpbnRXb3JrbGV0LT5wYWludERlZmluaXRpb25NYXAo
KS5nZXQobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVn
aXN0cmF0aW9uLT5pbnB1dFByb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLnN0
eWxlKCktPmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGUzMzRhZGJlYWViMDJhZGQ4YTMwNTgyOWM5YjZmMmVlYjRlNWZhZTIuLmZiZDU5ODFiNTRlMjQ1
MzZiZjMxOTZkYzg1NTc0Y2IzYmM5ZDViNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
MjU2NCwxMCArMjU2NCw5IEBAIHZvaWQgRG9jdW1lbnQ6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigp
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQotICAgIGlmIChtX3BhaW50
V29ya2xldEdsb2JhbFNjb3BlKSB7Ci0gICAgICAgIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUt
PnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwotICAgICAgICBtX3BhaW50V29ya2xldEdsb2JhbFNj
b3BlID0gbnVsbHB0cjsKLSAgICB9CisgICAgZm9yIChhdXRvJiBzY29wZSA6IG1fcGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVzLnZhbHVlcygpKQorICAgICAgICBzY29wZS0+cHJlcGFyZUZvckRlc3Ry
dWN0aW9uKCk7CisgICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29wZXMuY2xlYXIoKTsKICNlbmRp
ZgogCiAgICAgbV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKQEAgLTg1MTksOSAr
ODUxOCwxNSBAQCBXb3JrbGV0JiBEb2N1bWVudDo6ZW5zdXJlUGFpbnRXb3JrbGV0KCkKICAgICBy
ZXR1cm4gKm1fcGFpbnRXb3JrbGV0OwogfQogCi12b2lkIERvY3VtZW50OjpzZXRQYWludFdvcmts
ZXRHbG9iYWxTY29wZShSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYgc2NvcGUpCitQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZSogRG9jdW1lbnQ6OnBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9y
TmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIG1fcGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGVzLmdldChuYW1lKTsKK30KKwordm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPFBhaW50V29ya2xldEds
b2JhbFNjb3BlPiYmIHNjb3BlKQogewotICAgIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUgPSBX
VEZNb3ZlKHNjb3BlKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGVzLmFkZChuYW1lLCBXVEZNb3ZlKHNjb3BlKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRS
ZXN1bHQsIGFkZFJlc3VsdCk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCA1
YjVmZjQ5YjdmMTM2YzY3MjI0NWZlNWJiOTI0ZmFmZDhhZTM0ZTBiLi5jYTZhNzZkNmQzNGRkYjAy
ZjllYWUzMjIyNDk4ZjI2ZDE0OWZiNmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTUyMiw4
ICsxNTIyLDggQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENTU19QQUlOVElOR19BUEkpCiAgICAg
V29ya2xldCYgZW5zdXJlUGFpbnRXb3JrbGV0KCk7Ci0gICAgUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGUqIHBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkgeyByZXR1cm4gbV9wYWludFdvcmtsZXRHbG9i
YWxTY29wZS5nZXQoKTsgfQotICAgIHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoUmVm
PFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKKyAgICBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZSogcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFtZSk7Cisg
ICAgdm9pZCBzZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUoY29uc3QgU3RyaW5nJiBu
YW1lLCBSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+JiYpOwogI2VuZGlmCiAKICAgICB2b2lk
IHNldEFzUnVubmluZ1VzZXJTY3JpcHRzKCkgeyBtX2lzUnVubmluZ1VzZXJTY3JpcHRzID0gdHJ1
ZTsgfQpAQCAtMjA3Miw3ICsyMDcyLDcgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShDU1NfUEFJ
TlRJTkdfQVBJKQogICAgIFJlZlB0cjxXb3JrbGV0PiBtX3BhaW50V29ya2xldDsKLSAgICBSZWZQ
dHI8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+IG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxQYWludFdvcmtsZXRHbG9iYWxTY29wZT4+IG1fcGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGVzOwogI2VuZGlmCiAKICAgICBib29sIG1faXNSdW5uaW5nVXNlclNj
cmlwdHMgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAKaW5kZXggZGYzOWNiMjM4NDVlNzNiZjUxYWMyYjA2MWNmNzljOTM1ZjM1Yjk0
YS4uNTUyYWFmY2Q0Mzk0ZWY4MzQ2OThhNDE1Y2NjZWQ2N2QyODEzY2MyZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC05ODksOSArOTg5
LDExIEBAIGlubGluZSBzdGF0aWMgYm9vbCBjaGFuZ2VkQ3VzdG9tUGFpbnRXYXRjaGVkUHJvcGVy
dHkoY29uc3QgUmVuZGVyU3R5bGUmIGEsIGNvbnN0CiAgICAgICAgICAgICBmb3IgKGF1dG8mIG5h
bWUgOiAqd2F0Y2hQcm9wZXJ0aWVzTWFwKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZUE7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUI7Ci0g
ICAgICAgICAgICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHlOYW1lKG5hbWUpICYmIGEuZ2V0Q3Vz
dG9tUHJvcGVydHkobmFtZSkgJiYgYi5nZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSkgewotICAgICAg
ICAgICAgICAgICAgICB2YWx1ZUEgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKmEu
Z2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOwotICAgICAgICAgICAgICAgICAgICB2YWx1ZUIgPSBD
U1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKmIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkp
OworICAgICAgICAgICAgICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShuYW1lKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoYS5nZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlQSA9IENTU0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgq
YS5nZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChiLmdl
dEN1c3RvbVByb3BlcnR5KG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0g
Q1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpiLmdldEN1c3RvbVByb3BlcnR5KG5hbWUp
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUpOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXByb3BlcnR5SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9Xb3JrbGV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQuY3BwCmluZGV4
IDM4ZjJjNTg5NmYyY2JkOWZmODZjZDU4MDAxMjE5ZTE4OTQ0Njc3NzIuLmYzYjlhZjZkZmFlZDdl
ODY2ZmM2MDhkZTZiMjg3NzQxNmY5NTI1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXQu
Y3BwCkBAIC00OSw5ICs0OSwxMCBAQCB2b2lkIFdvcmtsZXQ6OmFkZE1vZHVsZShEb2N1bWVudCYg
ZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbW9kdWxlVVJMKQogICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTExMzYKICAgICBhdXRvIGNvbnRleHQgPSBQYWlu
dFdvcmtsZXRHbG9iYWxTY29wZTo6Y3JlYXRlKGRvY3VtZW50LCBTY3JpcHRTb3VyY2VDb2RlKG1v
ZHVsZVVSTCkpOwogICAgIGNvbnRleHQtPmV2YWx1YXRlKCk7Ci0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzdG9yZSBtdWx0aXBsZSBnbG9iYWwgc2NvcGVzIGFuZCBjaG9vc2UgYmV0d2VlbiB0aGVt
Ci0gICAgLy8gVGhpcyB3aWxsIG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkgaWYgbXVsdGlwbGUgbW9k
dWxlcyBhcmUgYWRkZWQuCi0gICAgZG9jdW1lbnQuc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUo
V1RGTW92ZShjb250ZXh0KSk7CisKKyAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvbnRleHQt
PnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgZm9yIChhdXRvJiBuYW1lIDogY29udGV4dC0+
cGFpbnREZWZpbml0aW9uTWFwKCkua2V5cygpKQorICAgICAgICBkb2N1bWVudC5zZXRQYWludFdv
cmtsZXRHbG9iYWxTY29wZUZvck5hbWUobmFtZSwgbWFrZVJlZihjb250ZXh0LmdldCgpKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9X
b3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDNjNTYxOTY4MDNlMWJjYjQyYTg5ZTIwMTg3NzI4
ZmU2YTY5NDEwOGUuLjcyMzQwMzE1NzBmZTMwNWU4ZTkzNGM3NWE1N2Q2NmQ0ODdlMjg4NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAt
NzQsNyArNzQsOCBAQCBXb3JrbGV0R2xvYmFsU2NvcGU6On5Xb3JrbGV0R2xvYmFsU2NvcGUoKQog
CiB2b2lkIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCkKIHsKLSAg
ICBBU1NFUlQobV9zY3JpcHQpOworICAgIGlmICghbV9zY3JpcHQpCisgICAgICAgIHJldHVybjsK
ICAgICBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogICAgIHJlbW92ZVJlamVjdGVkUHJvbWlzZVRy
YWNrZXIoKTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0NDBiNGU1
NjQzYjMxZWI2MTNhNWY5NDIwNTcwOGQ5NTk1OTA1ZDkuLjkzNGI2MTVmMGNiZDQyZmVlNTM0ZTc4
NmE2MGQzNzM1NDAxOGU0ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0xMi0xMCAgSnVz
dGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CisKKyAgICAgICAgQ1MgUGFp
bnRpbmcgQVBJIHNob3VsZCBzdXBwb3J0IG11bHRpcGxlIHdvcmtsZXRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyMzM1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0
b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2RlbGF5LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1
c3RvbS1wYWludC9kZWxheS1yZXBhaW50LWV4cGVjdGVkLnR4dDogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQu
CisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2RlbGF5LXJlcGFpbnQuaHRtbDogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWlu
dC5odG1sLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS5odG1sOiBDb3Bp
ZWQgZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50
Lmh0bWwuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L211bHRpcGxlLXdvcmtsZXRz
LWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9t
dWx0aXBsZS13b3JrbGV0cy5odG1sOiBBZGRlZC4KKwogMjAxOC0xMi0wNyAgVHJ1aXR0IFNhdmVs
bCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjT1MgRGVidWcgXSBMYXlvdXQg
VGVzdCB3ZWJnbC8yLjAuMC9jb25mb3JtYW5jZTIvdGV4dHVyZXMvbWlzYy90ZXgtdW5wYWNrLXBh
cmFtcy5odG1sIGlzIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQKaW5k
ZXggYzQxMGNlMzI5NmY1YTcwYzE3MmQ1M2JiZmI3ZTQzNDRkMDQ2NWYwMy4uNzYxNmI2NDRhZmVj
YzJkM2VkMThiMjk0ZGI5ZjE4OTM2MTE1NThiZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50
eHQKQEAgLTEsOCArMSw0IEBACiAocmVwYWludCByZWN0cwotICAocmVjdCAwIDAgODAwIDYwMCkK
LSAgKHJlY3QgMCAwIDE1MCAxNTApCi0gIChyZWN0IDggOCA3ODQgMTUwKQotICAocmVjdCAwIDAg
ODAwIDE2NikKICAgKHJlY3QgMCAwIDgwMCA2MDApCiAgIChyZWN0IDggOCAxNTAgMTUwKQogICAo
cmVjdCA4IDggMTUwIDE1MCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRtbAppbmRleCAzYTMyNmE1YTNlM2EwNTY5ZjE1MTVh
YzhiMjRjNzMzMjg0YzQ4Mzg4Li5kOTVlODhlYzllZmJmMjJlMmFlNWRlNmUzMTY5YjY2NjQ1N2Mw
ZjQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0
ZS1yZXBhaW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2Fu
aW1hdGUtcmVwYWludC5odG1sCkBAIC0yMiwzNCArMjIsMzIgQEAKIDwvc2NyaXB0PgogCiA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3
aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgd2luZG93LnRlc3RSdW5uZXIuZHVtcEFzVGV4dChmYWxz
ZSk7Ci0gICAgd2luZG93LmludGVybmFscy5zdGFydFRyYWNraW5nUmVwYWludHMoKTsKLSAgfQot
ICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb2RlJykudGV4dENvbnRlbnQpOwotCi0gIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQg
cmV0dXJucyBhIHByb21pc2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgotICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWlu
dCcpLnN0eWxlLnNldFByb3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOwotICB9LCA1MDAp
OwotCi0gIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlcGFpbnRSZWN0cyA9ICJO
byB0ZXN0IHJ1bm5lciI7CisgIGZ1bmN0aW9uIG9ubG9hZCgpIHsKICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIgJiYgd2luZG93LmludGVybmFscykgeworICAgICAgd2luZG93LnRlc3RSdW5uZXIu
ZHVtcEFzVGV4dChmYWxzZSk7CiAgICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdS
ZXBhaW50cygpOworICAgIH0KKyAgICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOwogCi0gICAgICAvLyBm
b3JjZSBhIHN0eWxlIHJlY2FsYy4KLSAgICAgIHZhciBkdW1teSA9IGRvY3VtZW50LmJvZHkub2Zm
c2V0VG9wOwotCi0gICAgICByZXBhaW50UmVjdHMgPSB3aW5kb3cuaW50ZXJuYWxzLnJlcGFpbnRS
ZWN0c0FzVGV4dCgpOworICAgIC8vIEZJWE1FOiBPbmNlIGltcG9ydFdvcmtsZXQgcmV0dXJucyBh
IHByb21pc2UsIHRoZXNlIHNldFRpbWVvdXRzIHNob3VsZCBnbyBhd2F5LgorICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CisgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFpbnQnKS5z
dHlsZS5zZXRQcm9wZXJ0eSgnLS1teS1wcm9wJywgJ2dvb2RieWUnKTsKKyAgICB9LCA1MDApOwog
Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKCk7Ci0gICAgfQor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICB2YXIgcmVwYWludFJlY3RzID0gIk5v
IHRlc3QgcnVubmVyIjsKKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAgIC8vIGZvcmNlIGEgc3R5bGUgcmVjYWxjLgorICAgICAgICB2YXIg
ZHVtbXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAgcmVwYWludFJlY3RzID0g
d2luZG93LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKyAgICAgICAgd2luZG93Lmlu
dGVybmFscy5zdG9wVHJhY2tpbmdSZXBhaW50cygpOworICAgICAgfQogCi0gICAgdmFyIHByZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOwotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocHJlKTsKLSAgICBwcmUuaW5uZXJIVE1MID0gcmVwYWludFJlY3RzOwotICB9LCAxMDAw
KTsKKyAgICAgIHZhciBwcmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJlKTsKKyAgICAgIHByZS5pbm5lckhUTUwgPSBy
ZXBhaW50UmVjdHM7CisgICAgfSwgMTAwMCk7CisgIH0KIDwvc2NyaXB0PgogCiA8c3R5bGU+CkBA
IC02MSw2ICs1OSw2IEBACiAgIH0KIDwvc3R5bGU+CiAKLTxib2R5PgorPGJvZHkgb25sb2FkPSJv
bmxvYWQoKSI+CiAgIDxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KIDwvYm9keT4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2RlbGF5LWV4cGVjdGVkLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDA0OGNkNjBjZGZhNjU0MmU0Njk1NTkwZTU4Y2U5OGZhMmQzMzAwYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8ZGl2IGlkPSJwYWlu
dCIgc3R5bGU9IndpZHRoOiAxNTBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47IiA+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvZGVsYXktcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1j
dXN0b20tcGFpbnQvZGVsYXktcmVwYWludC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzYxNmI2
NDRhZmVjYzJkM2VkMThiMjk0ZGI5ZjE4OTM2MTE1NThiZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxheS1yZXBhaW50LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDcgQEAKKyhyZXBhaW50IHJlY3RzCisgIChyZWN0IDAgMCA4MDAgNjAwKQor
ICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAxNTApCisgIChyZWN0IDggOCAx
NTAgMTUwKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvZGVsYXktcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50
L2RlbGF5LXJlcGFpbnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODk5OTlmMTFiODZiM2UyNzhkMDkyOWVh
ZGY1NzY2NzMwYTU0Y2VkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2RlbGF5LXJlcGFpbnQuaHRtbApAQCAtMCwwICsxLDY1IEBACis8IURPQ1RZ
UEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGlu
Z0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGlu
IE1pY2hhdWQiIGhyZWY9Im1haWx0bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRh
IG5hbWU9ImFzc2VydCIgY29udGVudD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIHJlcGFpbnQg
d2hlbiBtb2R1bGVzIGFyZSBhZGRlZCwgYW5kIGNvcnJlY3RseSB3YXRjaCBwcm9wZXJ0aWVzIj4K
KzxsaW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3Jn
L2Nzcy1wYWludC1hcGktMS8iPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5q
cyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+Cisg
IGNsYXNzIE15UGFpbnQgeworICAgIHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1
cm4gWyctLW15LXByb3AnXTsgfQorCisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7
CisgICAgICBpZiAocHJvcGVydGllcy5nZXQoJy0tbXktcHJvcCcpID09IDUpIHsKKyAgICAgICAg
Y3R4LmZpbGxTdHlsZSA9ICJncmVlbiI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguZmls
bFN0eWxlID0gInJlZCI7CisgICAgICB9CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53
aWR0aCwgZ2VvbS5oZWlnaHQpOworICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWlu
dCcsIE15UGFpbnQpOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KK2Z1bmN0aW9uIG9ubG9hZCgpIHsKKyAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRv
dy5pbnRlcm5hbHMpIHsKKyAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsK
KyAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOworICB9CisKKyAg
Ly8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xldCByZXR1cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0
VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAg
aW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Y29kZScpLnRleHRDb250ZW50KTsKKyAgfSwgNTAwKTsKKworICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgIHBhaW50LnN0eWxlLnNldFByb3BlcnR5KCctLW15LXByb3AnLCA1KTsKKyAgfSwg
MjAwMCk7CisKKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmVwYWludFJlY3Rz
ID0gIk5vIHRlc3QgcnVubmVyIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93
LmludGVybmFscykgeworICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICB2YXIg
ZHVtbXkgPSBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgIHJlcGFpbnRSZWN0cyA9IHdp
bmRvdy5pbnRlcm5hbHMucmVwYWludFJlY3RzQXNUZXh0KCk7CisgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgfQorCisgICAgdmFyIHByZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cHJlKTsKKyAgICBwcmUuaW5uZXJIVE1MID0gcmVwYWludFJlY3RzOworICB9LCAyNTAwKTsKK30K
Kzwvc2NyaXB0PgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTog
cGFpbnQobXktcGFpbnQpOworICAgIHdpZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4Owor
ICB9Cis8L3N0eWxlPgorCis8Ym9keSBvbmxvYWQ9Im9ubG9hZCgpIj4KKyAgPGRpdiBpZD0icGFp
bnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3Vz
dG9tLXBhaW50L2RlbGF5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
ZGVsYXkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTBjODc5OGI4YTZjOTBmZDE5MjQ4MTM1MTljZTJiODA5
YzBhYmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2RlbGF5Lmh0bWwKQEAgLTAsMCArMSw0MyBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBleHBlcmltZW50YWw6Q1NTUGFpbnRpbmdBUElFbmFibGVkPXRydWUg
XSAtLT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJt
YWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNv
bnRlbnQ9IlRlc3QgdGhhdCBwYWludCB3b3JrbGV0cyByZXBhaW50IHdoZW4gbW9kdWxlcyBhcmUg
YWRkZWQsIGFuZCBjb3JyZWN0bHkgd2F0Y2ggcHJvcGVydGllcyI+Cis8bGluayByZWw9ImhlbHAi
IGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEv
Ij4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0IGlkPSJjb2RlIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorICBjbGFzcyBNeVBhaW50IHsK
KyAgICBzdGF0aWMgZ2V0IGlucHV0UHJvcGVydGllcygpIHsgcmV0dXJuIFsnLS1teS1wcm9wJ107
IH0KKworICAgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgICAgaWYgKHByb3Bl
cnRpZXMuZ2V0KCctLW15LXByb3AnKSA9PSA1KSB7CisgICAgICAgIGN0eC5maWxsU3R5bGUgPSAi
Z3JlZW4iOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJyZWQiOwor
ICAgICAgfQorICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0
KTsKKyAgICB9CisgIH0KKyAgcmVnaXN0ZXJQYWludCgnbXktcGFpbnQnLCBNeVBhaW50KTsKKzwv
c2NyaXB0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7CisgICAgaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29kZScpLnRleHRDb250ZW50KTsKKyAgfSwgNTAwKTsKKyAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIHVzZSBhIHByb21pc2Ugb25jZSBhZGRNb2R1bGUgc3VwcG9ydHMg
aXQuCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgcGFpbnQuc3R5bGUuc2V0UHJvcGVy
dHkoJy0tbXktcHJvcCcsIDUpOworICB9LCAyMDAwKTsKKzwvc2NyaXB0PgorCis8c3R5bGU+Cisg
ICNwYWludCB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogcGFpbnQobXktcGFpbnQpOworICAgIHdp
ZHRoOiAxNTBweDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8Ym9keT4K
KyAgPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L211bHRpcGxlLXdvcmtsZXRzLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtZXhw
ZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOTBlODgwYjFkMmU4YjRlODdhYjRmYmI1NTVmODFiMThl
YzU1NWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L211bHRpcGxlLXdvcmtsZXRzLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxkaXYgaWQ9InBhaW50IiBzdHlsZT0id2lkdGg6IDE1MHB4OyBoZWlnaHQ6
IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBwdXJwbGU7IiA+PC9kaXY+Cis8ZGl2IGlkPSJwYWlu
dDIiIHN0eWxlPSJ3aWR0aDogMTUwcHg7IGhlaWdodDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6
IGdyZWVuOyIgPjwvZGl2PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9t
LXBhaW50L211bHRpcGxlLXdvcmtsZXRzLWlzb2xhdGlvbi1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L211bHRpcGxlLXdvcmtsZXRzLWlzb2xhdGlvbi1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ZWU5NmM3MWYxOTQ0NTM3OGMwNDMwOTY0YmY3ZDQ4
MWZkMDZhOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvbXVsdGlwbGUtd29ya2xldHMtaXNvbGF0aW9uLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCAr
MSwzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxkaXYgaWQ9InBhaW50IiBzdHlsZT0id2lkdGg6IDE1
MHB4OyBoZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsiID48L2Rpdj4KKzxk
aXYgaWQ9InBhaW50MiIgc3R5bGU9IndpZHRoOiAxNTBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47IiA+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtaXNvbGF0aW9uLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtaXNvbGF0aW9u
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDRlNjE3Yzk2ODZhYjJjZjdlNmEzN2E1MTU1NTc5ZDc1Mzc1ZWFl
YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9t
dWx0aXBsZS13b3JrbGV0cy1pc29sYXRpb24uaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZ
UEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGlu
Z0FQSUVuYWJsZWQ9dHJ1ZSBdIC0tPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1
ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0i
YXNzZXJ0IiBjb250ZW50PSJ0ZXN0IG11bHRpcGxlIG1vZHVsZXMgYmVpbmcgYWRkZWQgdG8gdGhl
IHBhaW50V29ya2xldCBhcmUgaXNvbGF0ZWQiPgorPGxpbmsgcmVsPSJoZWxwIiBjb250ZW50PSJo
dHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXBhaW50LWFwaS0xLyI+CisKKzxzdHls
ZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7Cisg
ICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKworICAjcGFpbnQyIHsK
KyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludDIpOworICAgIHdpZHRoOiAxNTBw
eDsKKyAgICBoZWlnaHQ6IDE1MHB4OworICB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJwYWludCI+
PC9kaXY+Cis8ZGl2IGlkPSJwYWludDIiPjwvZGl2PgorCis8c2NyaXB0IGlkPSJjb2RlMSIgdHlw
ZT0idGV4dC93b3JrbGV0Ij4KK2Z1bmN0aW9uIHNob3VsZE9ubHlCZUluQ29kZTEoKSB7fQorCity
ZWdpc3RlclBhaW50KCdteS1wYWludCcsIGNsYXNzIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9w
ZXJ0aWVzKSB7CisgICAgY29uc29sZS5sb2coIlBhaW50IDE6ICIgKyB0eXBlb2Yoc2hvdWxkT25s
eUJlSW5Db2RlMSkpOworICAgIGlmICh0eXBlb2Yoc2hvdWxkT25seUJlSW5Db2RlMSkgPT0gJ2Z1
bmN0aW9uJykgeworICAgICAgY3R4LmZpbGxTdHlsZSA9ICdncmVlbic7CisgICAgfSBlbHNlIHsK
KyAgICAgIGN0eC5maWxsU3R5bGUgPSAncmVkJzsKKyAgICB9CisgICAgY3R4LmZpbGxSZWN0KDAs
IDAsIGdlb20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgfQorfSk7Cis8L3NjcmlwdD4KKworPHNj
cmlwdCBpZD0iY29kZTIiIHR5cGU9InRleHQvd29ya2xldCI+CityZWdpc3RlclBhaW50KCdteS1w
YWludDInLCBjbGFzcyB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGlm
ICh0eXBlb2Yoc2hvdWxkT25seUJlSW5Db2RlMSkgPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIGN0
eC5maWxsU3R5bGUgPSAnZ3JlZW4nOworICAgIH0gZWxzZSB7CisgICAgICBjdHguZmlsbFN0eWxl
ID0gJ3JlZCc7CisgICAgfQorICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRoLCBnZW9t
LmhlaWdodCk7CisgIH0KK30pOworPC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitpbXBvcnRXb3JrbGV0
KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2RlMScpLnRleHRD
b250ZW50KTsKK2ltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2NvZGUyJykudGV4dENvbnRlbnQpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI1ODBkZThiNDkyODkzN2M5MzNjZDZmODExOGMxMTg4MGY2ODIwOGYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlw
bGUtd29ya2xldHMuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdl
YmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1
ZSBdIC0tPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWljaGF1ZCIgaHJlZj0ibWFpbHRv
Omp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJ0ZXN0IG11bHRpcGxlIG1vZHVsZXMgYmVpbmcgYWRkZWQgdG8gdGhlIHBhaW50V29ya2xldCI+
Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9y
Zy9jc3MtcGFpbnQtYXBpLTEvIj4KKworPHN0eWxlPgorICAjcGFpbnQgeworICAgIGJhY2tncm91
bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdo
dDogMTUwcHg7CisgIH0KKworICAjcGFpbnQyIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWlu
dChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0K
Kzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rpdj4KKzxkaXYgaWQ9InBhaW50MiI+PC9k
aXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUxIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorcmVnaXN0ZXJQ
YWludCgnbXktcGFpbnQnLCBjbGFzcyB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykg
eworICAgIGN0eC5maWxsU3R5bGUgPSAncHVycGxlJzsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwg
Z2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOworICB9Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0
IGlkPSJjb2RlMiIgdHlwZT0idGV4dC93b3JrbGV0Ij4KK3JlZ2lzdGVyUGFpbnQoJ215LXBhaW50
MicsIGNsYXNzIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgY3R4LmZp
bGxTdHlsZSA9ICdncmVlbic7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdl
b20uaGVpZ2h0KTsKKyAgfQorfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2ltcG9ydFdvcmts
ZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUxJykudGV4
dENvbnRlbnQpOworaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29kZTInKS50ZXh0Q29udGVudCk7CitwYWludC5zdHlsZS5iYWNrZ3JvdW5k
SW1hZ2UgPSAicGFpbnQobXktcGFpbnQpIjsKK3BhaW50Mi5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2Ug
PSAicGFpbnQobXktcGFpbnQyKSI7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357018</attachid>
            <date>2018-12-10 16:46:15 -0800</date>
            <delta_ts>2018-12-10 19:55:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192335-20181210164614.patch</filename>
            <type>text/plain</type>
            <size>22886</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTUxNDZiODhhMjFjNDcy
YTFlYzgzNWZiZWFlMmQ3YzIyNWRlMDZhNC4uNTY3ZWEzNzA1ZDU3YTI0OTI4MjU1OTgzMDNiNGJh
M2M5ZmJhYzI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTEyLTEwICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBDUyBQYWlu
dGluZyBBUEkgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgd29ya2xldHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTIzMzUKKworICAgICAgICBSZXZp
ZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgQWRkcyBhIG5ldyBtYXAgdG8gc3VwcG9y
dCBzZXBhcmF0ZSBwYWludCB3b3JrbGV0IGdsb2JhbCBzY29wZXMgKG9uZSBmb3IgZWFjaCB3b3Jr
bGV0KS4gQWxzbworICAgICAgICBhZGRzIHNvbWUgdGVzdHMgYW5kIGEgZml4IGZvciBhIHJlcGFp
bnQgYnVnIHRoYXQgdGhpcyBvbmNvdmVyZWQsIHdoZXJlIGNoYW5naW5nIGEgY3VzdG9tIHByb3Bl
cnR5IHJlcXVpcmVkCisgICAgICAgIGZvciBwYWludCB3b3VsZCBub3QgdHJpZ2dlciBhIHJlcGFp
bnQgaWYgdGhlcmUgaGFkIG5vdCBiZWVuIGEgdmFsaWQgdmFsdWUgc2V0IGJlZm9yZS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMuaHRtbAor
CisgICAgICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYWludEltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OnByZXBhcmVGb3JEZXN0cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFBh
aW50V29ya2xldEdsb2JhbFNjb3BlKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWludFdvcmtsZXRHbG9iYWxTY29wZSk6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNoYW5nZWRDdXN0b21QYWludFdhdGNoZWRQcm9wZXJ0eSk6CisgICAgICAgICogd29y
a2xldHMvV29ya2xldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrbGV0OjphZGRNb2R1bGUp
OgorICAgICAgICAqIHdvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbik6CisKIDIw
MTgtMTItMDcgIEp1c3RpbiBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgogCiAg
ICAgICAgIENTUyBQYWludGluZyBBUEkgY29kZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYWludEltYWdlVmFsdWUuY3BwCmluZGV4IDc5Njg0NmU2NDcxZjU3ZTQ5YzFmNWJmOWY2Zjc2
MjY5OGJiZmMxNTIuLjhjYTZlNWUyMGM1NGU3NmMxZTY5NmVhMjhiZWQ0NDAxMjEyNDEzZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
JiByZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiB7CiAgICAgaWYgKHNpemUuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0g
cmVuZGVyRWxlbWVudC5kb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7CisgICAg
YXV0byogc2VsZWN0ZWRHbG9iYWxTY29wZSA9IHJlbmRlckVsZW1lbnQuZG9jdW1lbnQoKS5wYWlu
dFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUobV9uYW1lKTsKICAgICBpZiAoIXNlbGVjdGVkR2xv
YmFsU2NvcGUpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2soc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTG9jaygpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2YTFjZTQ5ZDBjNDA3OWY5OTBhYjBmOTk4
YmU2NTU3MjUyNmUwMGU4Li5lY2ZhNGM1NjBmYWMzY2MwZDJlMDRiMzlmNzVlMjE2M2U3OTQzMTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC0xNzIwLDEzICsxNzIwLDE0
IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUsIEFwcGx5Q2FzY2FkCiAgICAgICAgIHN0YXRlLnN0eWxlKCktPnNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKLSAgICBpZiAoaXM8Q1NTUGFpbnRJbWFnZVZhbHVlPigqdmFsdWVUb0FwcGx5KSAm
JiBkb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkpIHsKLSAgICAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIHVzZSB0aGUgImRvY3VtZW50IHBhaW50IHJlZ2lzdHJhdGlvbiBtYXAi
IGZyb20gdGhlIHNwZWMsIG9uY2UgaXQgaXMgaW1wbGVtZW50ZWQuCi0gICAgICAgIGF1dG8mIHBh
aW50V29ya2xldCA9ICpkb2N1bWVudCgpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlKCk7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnRXb3JrbGV0LnBhaW50RGVmaW5pdGlvbkxv
Y2soKSk7Ci0gICAgICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBwYWludFdvcmtsZXQucGFp
bnREZWZpbml0aW9uTWFwKCkuZ2V0KGRvd25jYXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVl
VG9BcHBseSkubmFtZSgpKSkgewotICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHJl
Z2lzdHJhdGlvbi0+aW5wdXRQcm9wZXJ0aWVzKQotICAgICAgICAgICAgICAgIHN0YXRlLnN0eWxl
KCktPmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShwcm9wZXJ0eSk7CisgICAgaWYgKGlzPENT
U1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkpIHsKKyAgICAgICAgYXV0byYgbmFtZSA9
IGRvd25jYXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4oKnZhbHVlVG9BcHBseSkubmFtZSgpOworICAg
ICAgICBpZiAoYXV0byogcGFpbnRXb3JrbGV0ID0gZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9i
YWxTY29wZUZvck5hbWUobmFtZSkpIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2socGFpbnRXb3JrbGV0LT5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgaWYg
KGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC0+cGFpbnREZWZpbml0aW9uTWFwKCku
Z2V0KG5hbWUpKSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHJlZ2lz
dHJhdGlvbi0+aW5wdXRQcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAgICAgICBzdGF0ZS5zdHls
ZSgpLT5hZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkocHJvcGVydHkpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBl
MzM0YWRiZWFlYjAyYWRkOGEzMDU4MjljOWI2ZjJlZWI0ZTVmYWUyLi5mYmQ1OTgxYjU0ZTI0NTM2
YmYzMTk2ZGM4NTU3NGNiM2JjOWQ1YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI1
NjQsMTAgKzI1NjQsOSBAQCB2b2lkIERvY3VtZW50OjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5USU5HX0FQSSkKLSAgICBpZiAobV9wYWludFdv
cmtsZXRHbG9iYWxTY29wZSkgewotICAgICAgICBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlLT5w
cmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKLSAgICAgICAgbV9wYWludFdvcmtsZXRHbG9iYWxTY29w
ZSA9IG51bGxwdHI7Ci0gICAgfQorICAgIGZvciAoYXV0byYgc2NvcGUgOiBtX3BhaW50V29ya2xl
dEdsb2JhbFNjb3Blcy52YWx1ZXMoKSkKKyAgICAgICAgc2NvcGUtPnByZXBhcmVGb3JEZXN0cnVj
dGlvbigpOworICAgIG1fcGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVzLmNsZWFyKCk7CiAjZW5kaWYK
IAogICAgIG1faGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9IHRydWU7CkBAIC04NTE5LDkgKzg1
MTgsMTUgQEAgV29ya2xldCYgRG9jdW1lbnQ6OmVuc3VyZVBhaW50V29ya2xldCgpCiAgICAgcmV0
dXJuICptX3BhaW50V29ya2xldDsKIH0KIAotdm9pZCBEb2N1bWVudDo6c2V0UGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUoUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmIHNjb3BlKQorUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUqIERvY3VtZW50OjpwYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5h
bWUoY29uc3QgU3RyaW5nJiBuYW1lKQoreworICAgIHJldHVybiBtX3BhaW50V29ya2xldEdsb2Jh
bFNjb3Blcy5nZXQobmFtZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OnNldFBhaW50V29ya2xldEds
b2JhbFNjb3BlRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUsIFJlZjxQYWludFdvcmtsZXRHbG9i
YWxTY29wZT4mJiBzY29wZSkKIHsKLSAgICBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlID0gV1RG
TW92ZShzY29wZSk7CisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BhaW50V29ya2xldEdsb2JhbFNj
b3Blcy5hZGQobmFtZSwgV1RGTW92ZShzY29wZSkpOworICAgIEFTU0VSVF9VTlVTRUQoYWRkUmVz
dWx0LCBhZGRSZXN1bHQpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNWI1
ZmY0OWI3ZjEzNmM2NzIyNDVmZTViYjkyNGZhZmQ4YWUzNGUwYi4uY2E2YTc2ZDZkMzRkZGIwMmY5
ZWFlMzIyMjQ5OGYyNmQxNDlmYjZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1MjIsOCAr
MTUyMiw4IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShDU1NfUEFJTlRJTkdfQVBJKQogICAgIFdv
cmtsZXQmIGVuc3VyZVBhaW50V29ya2xldCgpOwotICAgIFBhaW50V29ya2xldEdsb2JhbFNjb3Bl
KiBwYWludFdvcmtsZXRHbG9iYWxTY29wZSgpIHsgcmV0dXJuIG1fcGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFBhaW50V29ya2xldEdsb2JhbFNjb3BlKFJlZjxQ
YWludFdvcmtsZXRHbG9iYWxTY29wZT4mJik7CisgICAgUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUq
IHBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOworICAg
IHZvaWQgc2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1lKGNvbnN0IFN0cmluZyYgbmFt
ZSwgUmVmPFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBz
ZXRBc1J1bm5pbmdVc2VyU2NyaXB0cygpIHsgbV9pc1J1bm5pbmdVc2VyU2NyaXB0cyA9IHRydWU7
IH0KQEAgLTIwNzIsNyArMjA3Miw3IEBAIHByaXZhdGU6CiAKICNpZiBFTkFCTEUoQ1NTX1BBSU5U
SU5HX0FQSSkKICAgICBSZWZQdHI8V29ya2xldD4gbV9wYWludFdvcmtsZXQ7Ci0gICAgUmVmUHRy
PFBhaW50V29ya2xldEdsb2JhbFNjb3BlPiBtX3BhaW50V29ya2xldEdsb2JhbFNjb3BlOworICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWY8UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGU+PiBtX3BhaW50V29y
a2xldEdsb2JhbFNjb3BlczsKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzUnVubmluZ1VzZXJTY3Jp
cHRzIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCmluZGV4IGRmMzljYjIzODQ1ZTczYmY1MWFjMmIwNjFjZjc5YzkzNWYzNWI5NGEu
LjU1MmFhZmNkNDM5NGVmODM0Njk4YTQxNWNjY2VkNjdkMjgxM2NjMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtOTg5LDkgKzk4OSwx
MSBAQCBpbmxpbmUgc3RhdGljIGJvb2wgY2hhbmdlZEN1c3RvbVBhaW50V2F0Y2hlZFByb3BlcnR5
KGNvbnN0IFJlbmRlclN0eWxlJiBhLCBjb25zdAogICAgICAgICAgICAgZm9yIChhdXRvJiBuYW1l
IDogKndhdGNoUHJvcGVydGllc01hcCkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWVBOwogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVCOwotICAg
ICAgICAgICAgICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShuYW1lKSAmJiBhLmdldEN1c3Rv
bVByb3BlcnR5KG5hbWUpICYmIGIuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFsdWVBID0gQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCphLmdl
dEN1c3RvbVByb3BlcnR5KG5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVCID0gQ1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZTo6Y3JlYXRlKCpiLmdldEN1c3RvbVByb3BlcnR5KG5hbWUpKTsK
KyAgICAgICAgICAgICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUobmFtZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGEuZ2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZUEgPSBDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlOjpjcmVhdGUoKmEu
Z2V0Q3VzdG9tUHJvcGVydHkobmFtZSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoYi5nZXRD
dXN0b21Qcm9wZXJ0eShuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlQiA9IENT
U0N1c3RvbVByb3BlcnR5VmFsdWU6OmNyZWF0ZSgqYi5nZXRDdXN0b21Qcm9wZXJ0eShuYW1lKSk7
CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChuYW1lKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFwcm9wZXJ0eUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
V29ya2xldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNwcAppbmRleCAz
OGYyYzU4OTZmMmNiZDlmZjg2Y2Q1ODAwMTIxOWUxODk0NDY3NzcyLi5mM2I5YWY2ZGZhZWQ3ZTg2
NmZjNjA4ZGU2YjI4Nzc0MTZmOTUyNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0LmNw
cApAQCAtNDksOSArNDksMTAgQEAgdm9pZCBXb3JrbGV0OjphZGRNb2R1bGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIG1vZHVsZVVSTCkKICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTM2CiAgICAgYXV0byBjb250ZXh0ID0gUGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGU6OmNyZWF0ZShkb2N1bWVudCwgU2NyaXB0U291cmNlQ29kZShtb2R1
bGVVUkwpKTsKICAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOwotICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgc3RvcmUgbXVsdGlwbGUgZ2xvYmFsIHNjb3BlcyBhbmQgY2hvb3NlIGJldHdlZW4gdGhlbQot
ICAgIC8vIFRoaXMgd2lsbCBub3QgZnVuY3Rpb24gY29ycmVjdGx5IGlmIG11bHRpcGxlIG1vZHVs
ZXMgYXJlIGFkZGVkLgotICAgIGRvY3VtZW50LnNldFBhaW50V29ya2xldEdsb2JhbFNjb3BlKFdU
Rk1vdmUoY29udGV4dCkpOworCisgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjb250ZXh0LT5w
YWludERlZmluaXRpb25Mb2NrKCkpOworICAgIGZvciAoYXV0byYgbmFtZSA6IGNvbnRleHQtPnBh
aW50RGVmaW5pdGlvbk1hcCgpLmtleXMoKSkKKyAgICAgICAgZG9jdW1lbnQuc2V0UGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKG5hbWUsIG1ha2VSZWYoY29udGV4dC5nZXQoKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
bGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvV29y
a2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAzYzU2MTk2ODAzZTFiY2I0MmE4OWUyMDE4NzcyOGZl
NmE2OTQxMDhlLi43MjM0MDMxNTcwZmUzMDVlOGU5MzRjNzVhNTdkNjZkNDg3ZTI4ODUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9Xb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1dvcmtsZXRHbG9iYWxTY29wZS5jcHAKQEAgLTc0
LDcgKzc0LDggQEAgV29ya2xldEdsb2JhbFNjb3BlOjp+V29ya2xldEdsb2JhbFNjb3BlKCkKIAog
dm9pZCBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JEZXN0cnVjdGlvbigpCiB7Ci0gICAg
QVNTRVJUKG1fc2NyaXB0KTsKKyAgICBpZiAoIW1fc2NyaXB0KQorICAgICAgICByZXR1cm47CiAg
ICAgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKICAgICByZW1vdmVSZWplY3RlZFByb21pc2VUcmFj
a2VyKCk7CiAgICAgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NDQwYjRlNTY0
M2IzMWViNjEzYTVmOTQyMDU3MDhkOTU5NTkwNWQ5Li4yOWI4ZTdlODdhN2VmNWUzNTRlMzQxOWZh
NDA3ZTg3NWE1OGNlYmU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMTItMTAgIEp1c3Rp
biBNaWNoYXVkICA8anVzdGluX21pY2hhdWRAYXBwbGUuY29tPgorCisgICAgICAgIENTIFBhaW50
aW5nIEFQSSBzaG91bGQgc3VwcG9ydCBtdWx0aXBsZSB3b3JrbGV0cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjMzNQorCisgICAgICAgIFJldmll
d2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1wYWludC9h
bmltYXRlLXJlcGFpbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3NzLWN1c3RvbS1w
YWludC9hbmltYXRlLXJlcGFpbnQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFp
bnQvZGVsYXktZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9t
LXBhaW50L2RlbGF5LXJlcGFpbnQtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dC4KKyAg
ICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvZGVsYXktcmVwYWludC5odG1sOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50Lmh0
bWwuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L2RlbGF5Lmh0bWw6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJlcGFpbnQuaHRt
bC4KKyAgICAgICAgKiBmYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MtY3VzdG9tLXBhaW50L211bHRp
cGxlLXdvcmtsZXRzLmh0bWw6IEFkZGVkLgorCiAyMDE4LTEyLTA3ICBUcnVpdHQgU2F2ZWxsICA8
dHNhdmVsbEBhcHBsZS5jb20+CiAKICAgICAgICAgWyBNYWNPUyBEZWJ1ZyBdIExheW91dCBUZXN0
IHdlYmdsLzIuMC4wL2NvbmZvcm1hbmNlMi90ZXh0dXJlcy9taXNjL3RleC11bnBhY2stcGFyYW1z
Lmh0bWwgaXMgZmxha3kgdGltZW91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Y3VzdG9tLXBhaW50L2FuaW1hdGUtcmVwYWludC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dAppbmRleCBj
NDEwY2UzMjk2ZjVhNzBjMTcyZDUzYmJmYjdlNDM0NGQwNDY1ZjAzLi43NjE2YjY0NGFmZWNjMmQz
ZWQxOGIyOTRkYjlmMTg5MzYxMTU1OGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0ZS1yZXBhaW50LWV4cGVjdGVkLnR4dApA
QCAtMSw4ICsxLDQgQEAKIChyZXBhaW50IHJlY3RzCi0gIChyZWN0IDAgMCA4MDAgNjAwKQotICAo
cmVjdCAwIDAgMTUwIDE1MCkKLSAgKHJlY3QgOCA4IDc4NCAxNTApCi0gIChyZWN0IDAgMCA4MDAg
MTY2KQogICAocmVjdCAwIDAgODAwIDYwMCkKICAgKHJlY3QgOCA4IDE1MCAxNTApCiAgIChyZWN0
IDggOCAxNTAgMTUwKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBh
aW50L2FuaW1hdGUtcmVwYWludC5odG1sCmluZGV4IDNhMzI2YTVhM2UzYTA1NjlmMTUxNWFjOGIy
NGM3MzMyODRjNDgzODguLmQ5NWU4OGVjOWVmYmYyMmUyYWU1ZGU2ZTMxNjliNjY2NDU3YzBmNDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9hbmltYXRlLXJl
cGFpbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvYW5pbWF0
ZS1yZXBhaW50Lmh0bWwKQEAgLTIyLDM0ICsyMiwzMiBAQAogPC9zY3JpcHQ+CiAKIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRv
dy5pbnRlcm5hbHMpIHsKLSAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KGZhbHNlKTsK
LSAgICB3aW5kb3cuaW50ZXJuYWxzLnN0YXJ0VHJhY2tpbmdSZXBhaW50cygpOwotICB9Ci0gIGlt
cG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
ZGUnKS50ZXh0Q29udGVudCk7Ci0KLSAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xldCByZXR1
cm5zIGEgcHJvbWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCi0gIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BhaW50Jyku
c3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsICdnb29kYnllJyk7Ci0gIH0sIDUwMCk7Ci0K
LSAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVwYWludFJlY3RzID0gIk5vIHRl
c3QgcnVubmVyIjsKKyAgZnVuY3Rpb24gb25sb2FkKCkgewogICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lciAmJiB3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1w
QXNUZXh0KGZhbHNlKTsKICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFja2luZ1JlcGFp
bnRzKCk7CisgICAgfQorICAgIGltcG9ydFdvcmtsZXQoQ1NTLnBhaW50V29ya2xldCwgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUnKS50ZXh0Q29udGVudCk7CiAKLSAgICAgIC8vIGZvcmNl
IGEgc3R5bGUgcmVjYWxjLgotICAgICAgdmFyIGR1bW15ID0gZG9jdW1lbnQuYm9keS5vZmZzZXRU
b3A7Ci0KLSAgICAgIHJlcGFpbnRSZWN0cyA9IHdpbmRvdy5pbnRlcm5hbHMucmVwYWludFJlY3Rz
QXNUZXh0KCk7CisgICAgLy8gRklYTUU6IE9uY2UgaW1wb3J0V29ya2xldCByZXR1cm5zIGEgcHJv
bWlzZSwgdGhlc2Ugc2V0VGltZW91dHMgc2hvdWxkIGdvIGF3YXkuCisgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwYWludCcpLnN0eWxl
LnNldFByb3BlcnR5KCctLW15LXByb3AnLCAnZ29vZGJ5ZScpOworICAgIH0sIDUwMCk7CiAKLSAg
ICAgIHdpbmRvdy5pbnRlcm5hbHMuc3RvcFRyYWNraW5nUmVwYWludHMoKTsKLSAgICB9CisgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgIHZhciByZXBhaW50UmVjdHMgPSAiTm8gdGVz
dCBydW5uZXIiOworICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyICYmIHdpbmRvdy5pbnRlcm5h
bHMpIHsKKyAgICAgICAgLy8gZm9yY2UgYSBzdHlsZSByZWNhbGMuCisgICAgICAgIHZhciBkdW1t
eSA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgICAgICByZXBhaW50UmVjdHMgPSB3aW5k
b3cuaW50ZXJuYWxzLnJlcGFpbnRSZWN0c0FzVGV4dCgpOworICAgICAgICB3aW5kb3cuaW50ZXJu
YWxzLnN0b3BUcmFja2luZ1JlcGFpbnRzKCk7CisgICAgICB9CiAKLSAgICB2YXIgcHJlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgncHJlJyk7Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZChwcmUpOwotICAgIHByZS5pbm5lckhUTUwgPSByZXBhaW50UmVjdHM7Ci0gIH0sIDEwMDApOwor
ICAgICAgdmFyIHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOworICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcmUpOworICAgICAgcHJlLmlubmVySFRNTCA9IHJlcGFp
bnRSZWN0czsKKyAgICB9LCAxMDAwKTsKKyAgfQogPC9zY3JpcHQ+CiAKIDxzdHlsZT4KQEAgLTYx
LDYgKzU5LDYgQEAKICAgfQogPC9zdHlsZT4KIAotPGJvZHk+Cis8Ym9keSBvbmxvYWQ9Im9ubG9h
ZCgpIj4KICAgPGRpdiBpZD0icGFpbnQiPjwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2RlbGF5LWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvZGVsYXktZXhwZWN0ZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MDQ4Y2Q2MGNkZmE2NTQyZTQ2OTU1OTBlNThjZTk4ZmEyZDMzMDBhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2RlbGF5LWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxkaXYgaWQ9InBhaW50IiBz
dHlsZT0id2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsiID48L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9kZWxheS1yZXBhaW50LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3Rv
bS1wYWludC9kZWxheS1yZXBhaW50LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NjE2YjY0NGFm
ZWNjMmQzZWQxOGIyOTRkYjlmMTg5MzYxMTU1OGJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L2RlbGF5LXJlcGFpbnQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNyBAQAorKHJlcGFpbnQgcmVjdHMKKyAgKHJlY3QgMCAwIDgwMCA2MDApCisgIChy
ZWN0IDggOCAxNTAgMTUwKQorICAocmVjdCA4IDggMTUwIDE1MCkKKyAgKHJlY3QgOCA4IDE1MCAx
NTApCispCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9k
ZWxheS1yZXBhaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvZGVs
YXktcmVwYWludC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4OTk5OWYxMWI4NmIzZTI3OGQwOTI5ZWFkZjU3
NjY3MzBhNTRjZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0
b20tcGFpbnQvZGVsYXktcmVwYWludC5odG1sCkBAIC0wLDAgKzEsNjUgQEAKKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJ
RW5hYmxlZD10cnVlIF0gLS0+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJKdXN0aW4gTWlj
aGF1ZCIgaHJlZj0ibWFpbHRvOmp1c3Rpbl9taWNoYXVkQHdlYmtpdC5vcmciPgorPG1ldGEgbmFt
ZT0iYXNzZXJ0IiBjb250ZW50PSJUZXN0IHRoYXQgcGFpbnQgd29ya2xldHMgcmVwYWludCB3aGVu
IG1vZHVsZXMgYXJlIGFkZGVkLCBhbmQgY29ycmVjdGx5IHdhdGNoIHByb3BlcnRpZXMiPgorPGxp
bmsgcmVsPSJoZWxwIiBjb250ZW50PSJodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3Nz
LXBhaW50LWFwaS0xLyI+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdCBpZD0iY29kZSIgdHlwZT0idGV4dC93b3JrbGV0Ij4KKyAgY2xh
c3MgTXlQYWludCB7CisgICAgc3RhdGljIGdldCBpbnB1dFByb3BlcnRpZXMoKSB7IHJldHVybiBb
Jy0tbXktcHJvcCddOyB9CisKKyAgICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAg
ICAgIGlmIChwcm9wZXJ0aWVzLmdldCgnLS1teS1wcm9wJykgPT0gNSkgeworICAgICAgICBjdHgu
ZmlsbFN0eWxlID0gImdyZWVuIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGN0eC5maWxsU3R5
bGUgPSAicmVkIjsKKyAgICAgIH0KKyAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9tLndpZHRo
LCBnZW9tLmhlaWdodCk7CisgICAgfQorICB9CisgIHJlZ2lzdGVyUGFpbnQoJ215LXBhaW50Jywg
TXlQYWludCk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgor
ZnVuY3Rpb24gb25sb2FkKCkgeworICBpZiAod2luZG93LnRlc3RSdW5uZXIgJiYgd2luZG93Lmlu
dGVybmFscykgeworICAgIHdpbmRvdy50ZXN0UnVubmVyLmR1bXBBc1RleHQoZmFsc2UpOworICAg
IHdpbmRvdy5pbnRlcm5hbHMuc3RhcnRUcmFja2luZ1JlcGFpbnRzKCk7CisgIH0KKworICAvLyBG
SVhNRTogT25jZSBpbXBvcnRXb3JrbGV0IHJldHVybnMgYSBwcm9taXNlLCB0aGVzZSBzZXRUaW1l
b3V0cyBzaG91bGQgZ28gYXdheS4KKyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBpbXBv
cnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb2Rl
JykudGV4dENvbnRlbnQpOworICB9LCA1MDApOworCisgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
CisgICAgcGFpbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbXktcHJvcCcsIDUpOworICB9LCAyMDAw
KTsKKworICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIHZhciByZXBhaW50UmVjdHMgPSAi
Tm8gdGVzdCBydW5uZXIiOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lciAmJiB3aW5kb3cuaW50
ZXJuYWxzKSB7CisgICAgICAvLyBmb3JjZSBhIHN0eWxlIHJlY2FsYy4KKyAgICAgIHZhciBkdW1t
eSA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgICAgcmVwYWludFJlY3RzID0gd2luZG93
LmludGVybmFscy5yZXBhaW50UmVjdHNBc1RleHQoKTsKKyAgICAgIHdpbmRvdy5pbnRlcm5hbHMu
c3RvcFRyYWNraW5nUmVwYWludHMoKTsKKyAgICB9CisKKyAgICB2YXIgcHJlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgncHJlJyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcmUp
OworICAgIHByZS5pbm5lckhUTUwgPSByZXBhaW50UmVjdHM7CisgIH0sIDI1MDApOworfQorPC9z
Y3JpcHQ+CisKKzxzdHlsZT4KKyAgI3BhaW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWlu
dChteS1wYWludCk7CisgICAgd2lkdGg6IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0K
Kzwvc3R5bGU+CisKKzxib2R5IG9ubG9hZD0ib25sb2FkKCkiPgorICA8ZGl2IGlkPSJwYWludCI+
PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20t
cGFpbnQvZGVsYXkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9kZWxh
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBhMGM4Nzk4YjhhNmM5MGZkMTkyNDgxMzUxOWNlMmI4MDljMGFi
YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
ZGVsYXkuaHRtbApAQCAtMCwwICsxLDQzIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10
ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRhbDpDU1NQYWludGluZ0FQSUVuYWJsZWQ9dHJ1ZSBdIC0t
PgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iSnVzdGluIE1pY2hhdWQiIGhyZWY9Im1haWx0
bzpqdXN0aW5fbWljaGF1ZEB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVu
dD0iVGVzdCB0aGF0IHBhaW50IHdvcmtsZXRzIHJlcGFpbnQgd2hlbiBtb2R1bGVzIGFyZSBhZGRl
ZCwgYW5kIGNvcnJlY3RseSB3YXRjaCBwcm9wZXJ0aWVzIj4KKzxsaW5rIHJlbD0iaGVscCIgY29u
dGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy1wYWludC1hcGktMS8iPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQgaWQ9ImNvZGUiIHR5cGU9InRleHQvd29ya2xldCI+CisgIGNsYXNzIE15UGFpbnQgeworICAg
IHN0YXRpYyBnZXQgaW5wdXRQcm9wZXJ0aWVzKCkgeyByZXR1cm4gWyctLW15LXByb3AnXTsgfQor
CisgICAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7CisgICAgICBpZiAocHJvcGVydGll
cy5nZXQoJy0tbXktcHJvcCcpID09IDUpIHsKKyAgICAgICAgY3R4LmZpbGxTdHlsZSA9ICJncmVl
biI7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdHguZmlsbFN0eWxlID0gInJlZCI7CisgICAg
ICB9CisgICAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5oZWlnaHQpOwor
ICAgIH0KKyAgfQorICByZWdpc3RlclBhaW50KCdteS1wYWludCcsIE15UGFpbnQpOworPC9zY3Jp
cHQ+CisKKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICBpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb2RlJykudGV4dENvbnRlbnQpOworICB9LCA1MDApOworICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgdXNlIGEgcHJvbWlzZSBvbmNlIGFkZE1vZHVsZSBzdXBwb3J0cyBpdC4K
KyAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBwYWludC5zdHlsZS5zZXRQcm9wZXJ0eSgn
LS1teS1wcm9wJywgNSk7CisgIH0sIDIwMDApOworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgI3Bh
aW50IHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiBwYWludChteS1wYWludCk7CisgICAgd2lkdGg6
IDE1MHB4OworICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxib2R5PgorICA8
ZGl2IGlkPSJwYWludCI+PC9kaXY+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy1leHBlY3Rl
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU5MGU4ODBiMWQyZThiNGU4N2FiNGZiYjU1NWY4MWIxOGVjNTU1
Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQv
bXVsdGlwbGUtd29ya2xldHMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGRpdiBpZD0icGFpbnQiIHN0eWxlPSJ3aWR0aDogMTUwcHg7IGhlaWdodDogMTUw
cHg7IGJhY2tncm91bmQtY29sb3I6IHB1cnBsZTsiID48L2Rpdj4KKzxkaXYgaWQ9InBhaW50MiIg
c3R5bGU9IndpZHRoOiAxNTBweDsgaGVpZ2h0OiAxNTBweDsgYmFja2dyb3VuZC1jb2xvcjogZ3Jl
ZW47IiA+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1jdXN0b20tcGFp
bnQvbXVsdGlwbGUtd29ya2xldHMtaXNvbGF0aW9uLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy1jdXN0b20tcGFpbnQvbXVsdGlwbGUtd29ya2xldHMtaXNvbGF0aW9uLWV4cGVj
dGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTVlZTk2YzcxZjE5NDQ1Mzc4YzA0MzA5NjRiZjdkNDgxZmQw
NmE5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWlu
dC9tdWx0aXBsZS13b3JrbGV0cy1pc29sYXRpb24tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGRpdiBpZD0icGFpbnQiIHN0eWxlPSJ3aWR0aDogMTUwcHg7
IGhlaWdodDogMTUwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyIgPjwvZGl2PgorPGRpdiBp
ZD0icGFpbnQyIiBzdHlsZT0id2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDE1MHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsiID48L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy1pc29sYXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy1pc29sYXRpb24uaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NTI1ZDg4NmFiMzRhZmIzYTU4MzQxOGNkNmY0N2E3OTM2YTliMGQzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L211bHRp
cGxlLXdvcmtsZXRzLWlzb2xhdGlvbi5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBo
dG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJ
RW5hYmxlZD10cnVlIF0gLS0+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBo
cmVmPSJtYWlsdG86anVzdGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9InRlc3QgbXVsdGlwbGUgbW9kdWxlcyBiZWluZyBhZGRlZCB0byB0aGUgcGFp
bnRXb3JrbGV0IGFyZSBpc29sYXRlZCI+Cis8bGluayByZWw9ImhlbHAiIGNvbnRlbnQ9Imh0dHBz
Oi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtcGFpbnQtYXBpLTEvIj4KKworPHN0eWxlPgor
ICAjcGFpbnQgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50KTsKKyAgICB3
aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorCisgICNwYWludDIgeworICAg
IGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15LXBhaW50Mik7CisgICAgd2lkdGg6IDE1MHB4Owor
ICAgIGhlaWdodDogMTUwcHg7CisgIH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9InBhaW50Ij48L2Rp
dj4KKzxkaXYgaWQ9InBhaW50MiI+PC9kaXY+CisKKzxzY3JpcHQgaWQ9ImNvZGUxIiB0eXBlPSJ0
ZXh0L3dvcmtsZXQiPgorZnVuY3Rpb24gc2hvdWxkT25seUJlSW5Db2RlMSgpIHt9CisKK3JlZ2lz
dGVyUGFpbnQoJ215LXBhaW50JywgY2xhc3MgeworICBwYWludChjdHgsIGdlb20sIHByb3BlcnRp
ZXMpIHsKKyAgICBjdHguZmlsbFN0eWxlID0gdHlwZW9mKHNob3VsZE9ubHlCZUluQ29kZTEpID09
ICdmdW5jdGlvbicgPyAnZ3JlZW4nIDogJ3JlZCc7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdl
b20ud2lkdGgsIGdlb20uaGVpZ2h0KTsKKyAgfQorfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdCBp
ZD0iY29kZTIiIHR5cGU9InRleHQvd29ya2xldCI+CityZWdpc3RlclBhaW50KCdteS1wYWludDIn
LCBjbGFzcyB7CisgIHBhaW50KGN0eCwgZ2VvbSwgcHJvcGVydGllcykgeworICAgIGN0eC5maWxs
U3R5bGUgPSB0eXBlb2Yoc2hvdWxkT25seUJlSW5Db2RlMSkgPT0gJ3VuZGVmaW5lZCcgPyAnZ3Jl
ZW4nIDogJ3JlZCc7CisgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGdlb20ud2lkdGgsIGdlb20uaGVp
Z2h0KTsKKyAgfQorfSk7Cis8L3NjcmlwdD4KKworPHNjcmlwdD4KK2ltcG9ydFdvcmtsZXQoQ1NT
LnBhaW50V29ya2xldCwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvZGUxJykudGV4dENvbnRl
bnQpOworaW1wb3J0V29ya2xldChDU1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnY29kZTInKS50ZXh0Q29udGVudCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13b3JrbGV0cy5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MtY3VzdG9tLXBhaW50L211bHRpcGxlLXdvcmtsZXRzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjU4MGRlOGI0OTI4OTM3YzkzM2NkNmY4MTE4YzExODgwZjY4MjA4ZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWN1c3RvbS1wYWludC9tdWx0aXBsZS13
b3JrbGV0cy5odG1sCkBAIC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgZXhwZXJpbWVudGFsOkNTU1BhaW50aW5nQVBJRW5hYmxlZD10cnVlIF0g
LS0+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxt
ZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9Ikp1c3RpbiBNaWNoYXVkIiBocmVmPSJtYWlsdG86anVz
dGluX21pY2hhdWRAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQiIGNvbnRlbnQ9InRl
c3QgbXVsdGlwbGUgbW9kdWxlcyBiZWluZyBhZGRlZCB0byB0aGUgcGFpbnRXb3JrbGV0Ij4KKzxs
aW5rIHJlbD0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nz
cy1wYWludC1hcGktMS8iPgorCis8c3R5bGU+CisgICNwYWludCB7CisgICAgYmFja2dyb3VuZC1p
bWFnZTogcGFpbnQobXktcGFpbnQyKTsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAx
NTBweDsKKyAgfQorCisgICNwYWludDIgeworICAgIGJhY2tncm91bmQtaW1hZ2U6IHBhaW50KG15
LXBhaW50KTsKKyAgICB3aWR0aDogMTUwcHg7CisgICAgaGVpZ2h0OiAxNTBweDsKKyAgfQorPC9z
dHlsZT4KKworPGRpdiBpZD0icGFpbnQiPjwvZGl2PgorPGRpdiBpZD0icGFpbnQyIj48L2Rpdj4K
KworPHNjcmlwdCBpZD0iY29kZTEiIHR5cGU9InRleHQvd29ya2xldCI+CityZWdpc3RlclBhaW50
KCdteS1wYWludCcsIGNsYXNzIHsKKyAgcGFpbnQoY3R4LCBnZW9tLCBwcm9wZXJ0aWVzKSB7Cisg
ICAgY3R4LmZpbGxTdHlsZSA9ICdwdXJwbGUnOworICAgIGN0eC5maWxsUmVjdCgwLCAwLCBnZW9t
LndpZHRoLCBnZW9tLmhlaWdodCk7CisgIH0KK30pOworPC9zY3JpcHQ+CisKKzxzY3JpcHQgaWQ9
ImNvZGUyIiB0eXBlPSJ0ZXh0L3dvcmtsZXQiPgorcmVnaXN0ZXJQYWludCgnbXktcGFpbnQyJywg
Y2xhc3MgeworICBwYWludChjdHgsIGdlb20sIHByb3BlcnRpZXMpIHsKKyAgICBjdHguZmlsbFN0
eWxlID0gJ2dyZWVuJzsKKyAgICBjdHguZmlsbFJlY3QoMCwgMCwgZ2VvbS53aWR0aCwgZ2VvbS5o
ZWlnaHQpOworICB9Cit9KTsKKzwvc2NyaXB0PgorCis8c2NyaXB0PgoraW1wb3J0V29ya2xldChD
U1MucGFpbnRXb3JrbGV0LCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29kZTEnKS50ZXh0Q29u
dGVudCk7CitpbXBvcnRXb3JrbGV0KENTUy5wYWludFdvcmtsZXQsIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb2RlMicpLnRleHRDb250ZW50KTsKK3BhaW50LnN0eWxlLmJhY2tncm91bmRJbWFn
ZSA9ICJwYWludChteS1wYWludCkiOworcGFpbnQyLnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICJw
YWludChteS1wYWludDIpIjsKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>