<?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>181144</bug_id>
          
          <creation_ts>2017-12-23 13:11:49 -0800</creation_ts>
          <short_desc>[JSC] Implement BigInt.asIntN and BigInt.asUintN</short_desc>
          <delta_ts>2020-05-05 14:15:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>206182</dependson>
    
    <dependson>211447</dependson>
          <blocked>179001</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384626</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2017-12-23 13:11:49 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647293</commentid>
    <comment_count>1</comment_count>
      <attachid>398037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-29 22:54:34 -0700</bug_when>
    <thetext>Created attachment 398037
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648423</commentid>
    <comment_count>2</comment_count>
      <attachid>398342</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-03 18:49:27 -0700</bug_when>
    <thetext>Created attachment 398342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648458</commentid>
    <comment_count>3</comment_count>
      <attachid>398349</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-04 00:20:09 -0700</bug_when>
    <thetext>Created attachment 398349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648542</commentid>
    <comment_count>4</comment_count>
      <attachid>398349</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-05-04 08:12:32 -0700</bug_when>
    <thetext>Comment on attachment 398349
Patch

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

Informal review there. LGTM with one comment regarding test coverage.

&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:144
&gt; +    JSValue bigInt = toBigInt(globalObject, callFrame-&gt;argument(1));

I think we should add test cases that verifies if both `toIndex` and `toBigInt` are being properly called. I think that there are some cases of it on Test262, but it would be nice to add this coverage under JSC stress tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648618</commentid>
    <comment_count>5</comment_count>
      <attachid>398349</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-05-04 10:53:47 -0700</bug_when>
    <thetext>Comment on attachment 398349
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        This patch implements BigInt.asIntN[1] and BigInt.asUintN[2] features.
&gt; +        As the same to the other BigInt runtime C++ code, we port V8 code to JSC to implement both.

Can you describe here what they do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648673</commentid>
    <comment_count>6</comment_count>
      <attachid>398349</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-04 12:23:02 -0700</bug_when>
    <thetext>Comment on attachment 398349
Patch

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

Thanks

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        As the same to the other BigInt runtime C++ code, we port V8 code to JSC to implement both.
&gt; 
&gt; Can you describe here what they do?

Added

&gt;&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:144
&gt;&gt; +    JSValue bigInt = toBigInt(globalObject, callFrame-&gt;argument(1));
&gt; 
&gt; I think we should add test cases that verifies if both `toIndex` and `toBigInt` are being properly called. I think that there are some cases of it on Test262, but it would be nice to add this coverage under JSC stress tests.

Added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648676</commentid>
    <comment_count>7</comment_count>
      <attachid>398399</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-04 12:30:35 -0700</bug_when>
    <thetext>Created attachment 398399
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648996</commentid>
    <comment_count>8</comment_count>
      <attachid>398399</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-05 00:04:09 -0700</bug_when>
    <thetext>Comment on attachment 398399
Patch

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

I didn’t carefully read the algorithms. I’m counting on the test cases instead.

&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:105
&gt; +    throwTypeError(globalObject, scope, &quot;Invalid primitive type in ToBigInt operation&quot;_s);

Is this an improvement in the error message over &quot;Invalid argument type&quot;? Or is it just a little too much global replacing?

&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:141
&gt; +    uint32_t bits = callFrame-&gt;argument(0).toIndex(globalObject, &quot;bits&quot;);

This is the kind of place where I love &quot;auto&quot;. Because Otherwise I ask myself, &quot;is uint32_t the right type for the result of toIndex?&quot;

I know the standard calls this argument &quot;bits&quot; but I would call it &quot;number of bits&quot; or &quot;bit count&quot;. Because this is not actually &quot;bits&quot;.

&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:145
&gt; +    JSValue bigInt = toBigInt(globalObject, callFrame-&gt;argument(1));
&gt; +    RETURN_IF_EXCEPTION(scope, { });

Do we want a fast case that avoids ever creating the BigInt? Seems like a long round trip for, say, a boolean or an integer. I guess, on reflection, BigInt32 is that optimization. Still seems a shame to me, though.

&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:396
&gt; +ALWAYS_INLINE JSBigInt::ImplResult JSBigInt::zeroImpl(VM&amp; vm)

Does this function really need &quot;impl&quot; in its name?

ALWAYS_INLINE seems like it might be overkill, but I guess it will do no harm.

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:421
&gt; +    static JSValue asIntN(JSGlobalObject*, uint64_t, JSBigInt*);
&gt; +    static JSValue asUintN(JSGlobalObject*, uint64_t, JSBigInt*);
&gt; +#if USE(BIGINT32)
&gt; +    static JSValue asIntN(JSGlobalObject*, uint64_t, int32_t);
&gt; +    static JSValue asUintN(JSGlobalObject*, uint64_t, int32_t);
&gt; +#endif

I don’t think these arguments are really self-explanatory. Maybe give the uint64_t one a name, and the int32_t one.

Do these really need to be member functions? Why not file-local functions instead?

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:559
&gt; +    template &lt;typename BigIntImpl&gt;
&gt; +    static ImplResult asIntNImpl(JSGlobalObject*, uint64_t, BigIntImpl);
&gt; +    template &lt;typename BigIntImpl&gt;
&gt; +    static ImplResult asUintNImpl(JSGlobalObject*, uint64_t, BigIntImpl);
&gt; +    template &lt;typename BigIntImpl&gt;
&gt; +    static ImplResult truncateToNBits(VM&amp;, int32_t, BigIntImpl);
&gt; +    template &lt;typename BigIntImpl&gt;
&gt; +    static ImplResult truncateAndSubFromPowerOfTwo(VM&amp;, int32_t, BigIntImpl, bool resultSign);

Do these really need to be member function templates? Why not file-local function templates instead?

&gt; Source/JavaScriptCore/runtime/JSBigInt.h:561
&gt; +    static ImplResult zeroImpl(VM&amp;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649122</commentid>
    <comment_count>9</comment_count>
      <attachid>398399</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-05 01:25:52 -0700</bug_when>
    <thetext>Comment on attachment 398399
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:105
&gt;&gt; +    throwTypeError(globalObject, scope, &quot;Invalid primitive type in ToBigInt operation&quot;_s);
&gt; 
&gt; Is this an improvement in the error message over &quot;Invalid argument type&quot;? Or is it just a little too much global replacing?

Oops, this is replace-error. Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:141
&gt;&gt; +    uint32_t bits = callFrame-&gt;argument(0).toIndex(globalObject, &quot;bits&quot;);
&gt; 
&gt; This is the kind of place where I love &quot;auto&quot;. Because Otherwise I ask myself, &quot;is uint32_t the right type for the result of toIndex?&quot;
&gt; 
&gt; I know the standard calls this argument &quot;bits&quot; but I would call it &quot;number of bits&quot; or &quot;bit count&quot;. Because this is not actually &quot;bits&quot;.

number of bits sounds nice. Fixed.
Changed to auto too.

&gt;&gt; Source/JavaScriptCore/runtime/BigIntConstructor.cpp:145
&gt;&gt; +    RETURN_IF_EXCEPTION(scope, { });
&gt; 
&gt; Do we want a fast case that avoids ever creating the BigInt? Seems like a long round trip for, say, a boolean or an integer. I guess, on reflection, BigInt32 is that optimization. Still seems a shame to me, though.

For integers, toBigInt should throw an error. So it does not matter.
For boolean, we already have a fast path in toBigInt, which creates BigInt32 instead of heap JSBigInt. So it does not allocate heap object. I think this is enough efficient for now.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.cpp:396
&gt;&gt; +ALWAYS_INLINE JSBigInt::ImplResult JSBigInt::zeroImpl(VM&amp; vm)
&gt; 
&gt; Does this function really need &quot;impl&quot; in its name?
&gt; 
&gt; ALWAYS_INLINE seems like it might be overkill, but I guess it will do no harm.

The name &quot;Impl&quot; is used since this function is returning ImplResult, so, this is zero-impl.
If we want to have `JSBigInt::zero(VM&amp;)`, then we should wrap this function, and return JSValue instead.
For now, I left ALWAYS_INLINE to make sure this is inlined since it is quite small enough.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:421
&gt;&gt; +#endif
&gt; 
&gt; I don’t think these arguments are really self-explanatory. Maybe give the uint64_t one a name, and the int32_t one.
&gt; 
&gt; Do these really need to be member functions? Why not file-local functions instead?

Add names to these variables.
They are called from BigIntConstructor, so they need to be exposed as non-file-local functions.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:559
&gt;&gt; +    static ImplResult truncateAndSubFromPowerOfTwo(VM&amp;, int32_t, BigIntImpl, bool resultSign);
&gt; 
&gt; Do these really need to be member function templates? Why not file-local function templates instead?

This is necessary since these functions are reading static private variables / calling private functions of JSBigInt.
In addition, we are doing the same thing for the other JSBigInt functions. So doing this is good in terms of consistency.

&gt;&gt; Source/JavaScriptCore/runtime/JSBigInt.h:561
&gt;&gt; +    static ImplResult zeroImpl(VM&amp;);
&gt; 
&gt; Ditto.

zeroImpl can be a static function. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649124</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-05 01:30:08 -0700</bug_when>
    <thetext>Committed r261156: &lt;https://trac.webkit.org/changeset/261156&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649125</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-05 01:31:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/62879642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649182</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-05-05 07:34:49 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 211447</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649187</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-05 07:40:20 -0700</bug_when>
    <thetext>Reverted r261156 for reason:

Break ARM64_32 build due to existing bug

Committed r261167: &lt;https://trac.webkit.org/changeset/261167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649236</commentid>
    <comment_count>14</comment_count>
      <attachid>398519</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-05-05 09:30:21 -0700</bug_when>
    <thetext>Created attachment 398519
Patch

Patch for relanding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649373</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-05 14:15:11 -0700</bug_when>
    <thetext>Committed r261199: &lt;https://trac.webkit.org/changeset/261199&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398519.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398037</attachid>
            <date>2020-04-29 22:54:34 -0700</date>
            <delta_ts>2020-05-03 18:49:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181144-20200429225432.patch</filename>
            <type>text/plain</type>
            <size>27063</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MDhhNjUzMDdjM2VlODdmZjk5ZTNjY2Y5NmZmNGFjMmYwYmZkYjgzLi5kNTJmMjIzMTlkYTBlNzAw
ZjUwNzY5NGU3NWM2MTQ3ZTc2NmNmMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNC0yOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNV
aW50TgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
MTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBy
dW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6dG9CaWdJbnQpOgor
ICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKToKKyAgICAgICAgKEpT
Qzo6YmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Onplcm9JbXBsKToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dW5hcnlN
aW51c0ltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVySW1wbCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojph
c0ludE5JbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWludE5JbXBsKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRydW5jYXRlVG9OQml0cyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50Ojp0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmFzSW50Tik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojphc1VpbnROKToKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisKIDIwMjAtMDQtMjkgIE1hcmsgTGFtICA8bWFyay5sYW1A
YXBwbGUuY29tPgogCiAgICAgICAgIEZyZWV6aW5nIG9mIEdpZ2FjYWdlIGFuZCBKU0MgQ29uZmln
cyBzaG91bGQgYmUgdGhyZWFkIHNhZmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQ5NjRmMzg3ZGE1NDBjYTU4YTQw
YmIzYjY5ZjkxOTQwNWNkZGI0ZS4uZjA0YmUzODljNjUwODU2YjNlYzEzNzI3MDhlMzkzNGFlMTJm
OTVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENv
bnN0cnVjdG9yLmNwcApAQCAtNzcsMzAgKzc3LDMyIEBAIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUp
CiAKIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBhcmd1bWVudCkKIHsKLSAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gYXJndW1lbnQudG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIAotICAgIGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXJn
dW1lbnQ7CisgICAgaWYgKHByaW1pdGl2ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gcHJp
bWl0aXZlOwogCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisgICAgaWYgKHByaW1p
dGl2ZS5pc0Jvb2xlYW4oKSkgewogI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgcmV0dXJuIGpz
QmlnSW50MzIoYXJndW1lbnQuYXNCb29sZWFuKCkpOworICAgICAgICByZXR1cm4ganNCaWdJbnQz
MihwcmltaXRpdmUuYXNCb29sZWFuKCkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSk7CisgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzQm9vbGVhbigpKTsKICNlbmRpZgog
ICAgIH0KIAotICAgIGlmIChhcmd1bWVudC5pc1N0cmluZygpKSB7CisgICAgaWYgKHByaW1pdGl2
ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJu
IHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmll
dykgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZl
LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpw
YXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpOwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBB
U1NFUlQoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1bWVudC5pc051bWJlcigp
IHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9z
KTsKKyAgICBBU1NFUlQocHJpbWl0aXZlLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgcHJpbWl0aXZl
LmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZlLmlzU3ltYm9sKCkpOworICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHByaW1pdGl2ZSB0eXBlIGluIFRvQmlnSW50
IG9wZXJhdGlvbiJfcyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTEzMSwx
OCArMTMzLDQ0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJ
bnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmltaXRp
dmUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0
b3JGdW5jQXNVaW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgLy8gRklYTUU6
IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1Vp
bnROCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0
NAotICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgdWludDMyX3QgYml0cyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9i
YWxPYmplY3QsICJiaXRzIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIEpTVmFsdWUgYmlnSW50ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6YXNVaW50
TihnbG9iYWxPYmplY3QsIGJpdHMsIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSkpKTsKKyNlbmRp
ZgorCisgICAgQVNTRVJUKGJpZ0ludC5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzVWludE4oZ2xvYmFsT2Jq
ZWN0LCBiaXRzLCBiaWdJbnQuYXNIZWFwQmlnSW50KCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3Ry
dWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBC
aWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNVaW50TgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNDQKLSAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZp
bmVkKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHVpbnQzMl90IGJpdHMgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYml0cyIpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IHRvQmln
SW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoYmln
SW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzSW50TihnbG9iYWxPYmplY3QsIGJpdHMsIGJpZ0ludC5i
aWdJbnQzMkFzSW50MzIoKSkpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGJpZ0ludC5pc0hlYXBC
aWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OmFzSW50TihnbG9iYWxPYmplY3QsIGJpdHMsIGJpZ0ludC5hc0hlYXBCaWdJbnQo
KSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAKaW5kZXggNTllZmY2ZWRiZTU2YWNjMzJmYThkM2ZlY2FjMDg5YTI1
OWZmNzg3MC4uOGRmMDQ0OTIxNTdkNjkzMDRmOWI3MTU2YWFkMTI2YjQ1YWEwMDM3NyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsOCArNTUsNiBA
QAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi0j
ZGVmaW5lIFNUQVRJQ19BU1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQg
YXNzdW1lcyAiICNjb25kKQotCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
QmlnSW50OjpzX2luZm8gPSB7ICJCaWdJbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OwpAQCAtMzk1LDYgKzM5MywxNiBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50OjpJ
bXBsUmVzdWx0IGltcGxSZXN1bAogICAgIHJldHVybiB0cnlDb252ZXJ0VG9CaWdJbnQzMihpbXBs
UmVzdWx0LnBheWxvYWQuYXNIZWFwQmlnSW50KCkpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmln
SW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojp6ZXJvSW1wbChWTSYgdm0pCit7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGpzQmlnSW50MzIoMCk7
CisjZWxzZQorICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7CisjZW5kaWYKK30K
KwogLy8gTXVsdGlwbGllcyB7dGhpc30gd2l0aCB7ZmFjdG9yfSBhbmQgYWRkcyB7c3VtbWFuZH0g
dG8gdGhlIHJlc3VsdC4KIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBm
YWN0b3IsIERpZ2l0IHN1bW1hbmQpCiB7CkBAIC01NjYsMTMgKzU3NCw4IEBAIEpTQmlnSW50OjpJ
bXBsUmVzdWx0IEpTQmlnSW50OjpkaXZpZGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEJpZ0ludEltCiAgICAgLy8gMi4gTGV0IHF1b3RpZW50IGJlIHRoZSBtYXRoZW1hdGljYWwg
dmFsdWUgb2YgeCBkaXZpZGVkIGJ5IHkuCiAgICAgLy8gMy4gUmV0dXJuIGEgQmlnSW50IHJlcHJl
c2VudGluZyBxdW90aWVudCByb3VuZGVkIHRvd2FyZHMgMCB0byB0aGUgbmV4dAogICAgIC8vICAg
IGludGVncmFsIHZhbHVlLgotICAgIGlmIChhYnNvbHV0ZUNvbXBhcmUoeCwgeSkgPT0gQ29tcGFy
aXNvblJlc3VsdDo6TGVzc1RoYW4pIHsKLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgIHJldHVy
biBqc0JpZ0ludDMyKDApOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVa
ZXJvKHZtKTsKLSNlbmRpZgotICAgIH0KKyAgICBpZiAoYWJzb2x1dGVDb21wYXJlKHgsIHkpID09
IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuKQorICAgICAgICByZXR1cm4gemVyb0ltcGwodm0p
OwogCiAgICAgSlNCaWdJbnQqIHF1b3RpZW50ID0gbnVsbHB0cjsKICAgICBib29sIHJlc3VsdFNp
Z24gPSB4LnNpZ24oKSAhPSB5LnNpZ24oKTsKQEAgLTYyMiwxMyArNjI1LDggQEAgSlNCaWdJbnQq
IEpTQmlnSW50Ojpjb3B5KFZNJiB2bSwgQmlnSW50SW1wbCB4KQogdGVtcGxhdGUgPHR5cGVuYW1l
IEJpZ0ludEltcGw+CiBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6dW5hcnlNaW51c0lt
cGwoVk0mIHZtLCBCaWdJbnRJbXBsIHgpCiB7Ci0gICAgaWYgKHguaXNaZXJvKCkpIHsKLSNpZiBV
U0UoQklHSU5UMzIpCi0gICAgICAgIHJldHVybiBqc0JpZ0ludDMyKDApOwotI2Vsc2UKLSAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJvKHZtKTsKLSNlbmRpZgotICAgIH0KKyAgICBp
ZiAoeC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHplcm9JbXBsKHZtKTsKIAogICAgIEpTQmln
SW50KiByZXN1bHQgPSBjb3B5KHZtLCB4KTsKICAgICByZXN1bHQtPnNldFNpZ24oIXguc2lnbigp
KTsKQEAgLTY2MCwyMyArNjU4LDEzIEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojpy
ZW1haW5kZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpZ0luCiAgICAgSlNC
aWdJbnQqIHJlbWFpbmRlcjsKICAgICBpZiAoeS5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIERp
Z2l0IGRpdmlzb3IgPSB5LmRpZ2l0KDApOwotICAgICAgICBpZiAoZGl2aXNvciA9PSAxKSB7Ci0j
aWYgVVNFKEJJR0lOVDMyKQotICAgICAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNlCi0g
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7Ci0jZW5kaWYKLSAgICAgICAg
fQorICAgICAgICBpZiAoZGl2aXNvciA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHplcm9JbXBs
KHZtKTsKIAogICAgICAgICBEaWdpdCByZW1haW5kZXJEaWdpdDsKICAgICAgICAgYWJzb2x1dGVE
aXZXaXRoRGlnaXREaXZpc29yKHZtLCB4LCBkaXZpc29yLCBudWxscHRyLCByZW1haW5kZXJEaWdp
dCk7Ci0gICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQpIHsKLSNpZiBVU0UoQklHSU5UMzIpCi0g
ICAgICAgICAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNlCi0gICAgICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwotI2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAg
aWYgKCFyZW1haW5kZXJEaWdpdCkKKyAgICAgICAgICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CiAK
ICAgICAgICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAg
ICAgICAgIHJlbWFpbmRlci0+c2V0RGlnaXQoMCwgcmVtYWluZGVyRGlnaXQpOwpAQCAtMTE4NSw3
ICsxMTczLDcgQEAgaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGln
aXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29yLAogICAgIC8vIGxlZnQgb3BlcmFuZCIu
IFdlIG1hc2sgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIHNoaWZ0IGJ5IHtzaGlmdE1hc2t9IChg
ZGlnaXRCaXRzIC0gMWApLCB3aGljaCBtYWtlcyBgZGlnaXRCaXRzIC0gMGAgemVyby4KICAgICAv
LyBUaGlzIHNoaWZ0aW5nIHByb2R1Y2VzIGEgdmFsdWUgd2hpY2ggY292ZXJzIDAgPCB7c30gPD0g
KGRpZ2l0Qml0cyAtIDEpIGNhc2VzLiB7c30gPT0gZGlnaXRCaXRzIG5ldmVyIGhhcHBlbiBhcyB3
ZSBhc3NlcnRlZC4KICAgICAvLyBTaW5jZSB7c1plcm9NYXNrfSBjbGVhcnMgdGhlIHZhbHVlIGlu
IHRoZSBjYXNlIG9mIHtzfSA9PSAwLCB7c30gPT0gMCBjYXNlIGlzIGFsc28gY292ZXJlZC4KLSAg
ICBTVEFUSUNfQVNTRVJUKHNpemVvZihDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKERpZ2l0KSk7Cisg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ1BVUmVnaXN0ZXIpID09IHNpemVvZihEaWdpdCkpOwog
ICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0PERpZ2l0PigoLXN0YXRpY19jYXN0PENQ
VVJlZ2lzdGVyPihzKSkgPj4gKGRpZ2l0Qml0cyAtIDEpKTsKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHNoaWZ0TWFzayA9IGRpZ2l0Qml0cyAtIDE7CiAgICAgRGlnaXQgdW4zMiA9ICho
aWdoIDw8IHMpIHwgKChsb3cgPj4gKChkaWdpdEJpdHMgLSBzKSAmIHNoaWZ0TWFzaykpICYgc1pl
cm9NYXNrKTsKQEAgLTI3MzEsNCArMjcxOSwyMDUgQEAgSlNWYWx1ZSBKU0JpZ0ludDo6dG9OdW1i
ZXJIZWFwKEpTQmlnSW50KiBiaWdJbnQpCiAgICAgcmV0dXJuIGpzTnVtYmVyKGJpdHdpc2VfY2Fz
dDxkb3VibGU+KGRvdWJsZUJpdHMpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludElt
cGw+CitKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6YXNJbnROSW1wbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBCaWdJbnRJbXBsIGJpZ0ludCkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoYmlnSW50LmlzWmVybygp
KQorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIGlmIChuID09IDApCisgICAgICAgIHJldHVy
biB6ZXJvSW1wbCh2bSk7CisKKyAgICB1aW50NjRfdCBuZWVkZWRMZW5ndGggPSAobiArIGRpZ2l0
Qml0cyAtIDEpIC8gZGlnaXRCaXRzOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihiaWdJbnQubGVuZ3RoKCkpOworICAgIC8vIElmIGJpZ0ludCBoYXMgbGVzcyB0
aGFuIG4gYml0cywgcmV0dXJuIGl0IGRpcmVjdGx5LgorICAgIGlmIChsZW5ndGggPCBuZWVkZWRM
ZW5ndGgpCisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgQVNTRVJUKG5lZWRlZExlbmd0aCA8
PSBJTlQzMl9NQVgpOworICAgIERpZ2l0IHRvcERpZ2l0ID0gYmlnSW50LmRpZ2l0KHN0YXRpY19j
YXN0PGludDMyX3Q+KG5lZWRlZExlbmd0aCkgLSAxKTsKKyAgICBEaWdpdCBjb21wYXJlRGlnaXQg
PSBzdGF0aWNfY2FzdDxEaWdpdD4oMSkgPDwgKChuIC0gMSkgJSBkaWdpdEJpdHMpOworICAgIGlm
IChsZW5ndGggPT0gbmVlZGVkTGVuZ3RoICYmIHRvcERpZ2l0IDwgY29tcGFyZURpZ2l0KQorICAg
ICAgICByZXR1cm4gYmlnSW50OworCisgICAgLy8gT3RoZXJ3aXNlIHdlIGhhdmUgdG8gdHJ1bmNh
dGUgKHdoaWNoIGlzIGEgbm8tb3AgaW4gdGhlIHNwZWNpYWwgY2FzZQorICAgIC8vIG9mIGJpZ0lu
dCA9PSAtMl4obi0xKSksIGFuZCBkZXRlcm1pbmUgdGhlIHJpZ2h0IHNpZ24uIFdlIGFsc28gbWln
aHQgaGF2ZQorICAgIC8vIHRvIHN1YnRyYWN0IGZyb20gMl5uIHRvIHNpbXVsYXRlIGhhdmluZyB0
d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgorICAgIC8vIEluIG1vc3QgY2FzZXMsIHRo
ZSByZXN1bHQncyBzaWduIGlzIGJpZ0ludC5zaWduKCkgeG9yICIobi0xKXRoIGJpdCBwcmVzZW50
Ii4KKyAgICAvLyBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbiBiaWdJbnQgaXMgbmVnYXRpdmUs
IGhhcyB0aGUgKG4tMSl0aCBiaXQsIGFuZCBhbGwKKyAgICAvLyBpdHMgYml0cyBiZWxvdyAobi0x
KSBhcmUgemVyby4gSW4gdGhhdCBjYXNlLCB0aGUgcmVzdWx0IGlzIHRoZSBtaW5pbXVtCisgICAg
Ly8gbi1iaXQgaW50ZWdlciAoZXhhbXBsZTogYXNJbnROKDMsIC0xMm4pID0+IC00bikuCisgICAg
Ym9vbCBoYXNCaXQgPSAodG9wRGlnaXQgJiBjb21wYXJlRGlnaXQpID09IGNvbXBhcmVEaWdpdDsK
KyAgICBBU1NFUlQobiA8PSBJTlQzMl9NQVgpOworICAgIGludDMyX3QgTiA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KG4pOworICAgIGlmICghaGFzQml0KQorICAgICAgICByZXR1cm4gdHJ1bmNhdGVU
b05CaXRzKHZtLCBOLCBiaWdJbnQpOworICAgIGlmICghYmlnSW50LnNpZ24oKSkKKyAgICAgICAg
cmV0dXJuIHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28odm0sIE4sIGJpZ0ludCwgdHJ1ZSk7
CisKKyAgICAvLyBOZWdhdGl2ZSBudW1iZXJzIG11c3Qgc3VidHJhY3QgZnJvbSAyXm4sIGV4Y2Vw
dCBmb3IgdGhlIHNwZWNpYWwgY2FzZQorICAgIC8vIGRlc2NyaWJlZCBhYm92ZS4KKyAgICBpZiAo
KHRvcERpZ2l0ICYgKGNvbXBhcmVEaWdpdCAtIDEpKSA9PSAwKSB7CisgICAgICAgIGZvciAoaW50
MzJfdCBpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVlZGVkTGVuZ3RoKSAtIDI7IGkgPj0gMDsg
aS0tKSB7CisgICAgICAgICAgICBpZiAoYmlnSW50LmRpZ2l0KGkpICE9IDApCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28odm0sIE4sIGJpZ0ludCwg
ZmFsc2UpOworICAgICAgICB9CisgICAgICAgIC8vIFRydW5jYXRpb24gaXMgbm8tb3AgaWYgYmln
SW50ID09IC0yXihuLTEpLgorICAgICAgICBpZiAobGVuZ3RoID09IG5lZWRlZExlbmd0aCAmJiB0
b3BEaWdpdCA9PSBjb21wYXJlRGlnaXQpCisgICAgICAgICAgICByZXR1cm4gYmlnSW50OworICAg
ICAgICByZXR1cm4gdHJ1bmNhdGVUb05CaXRzKHZtLCBOLCBiaWdJbnQpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byh2bSwgTiwgYmlnSW50LCBmYWxzZSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorSlNCaWdJbnQ6OkltcGxSZXN1
bHQgSlNCaWdJbnQ6OmFzVWludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVp
bnQ2NF90IG4sIEJpZ0ludEltcGwgYmlnSW50KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoYmlnSW50LmlzWmVybygpKQorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIGlmIChu
ID09IDApCisgICAgICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CisKKyAgICAvLyBJZiBiaWdJbnQg
aXMgbmVnYXRpdmUsIHNpbXVsYXRlIHR3bydzIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCisg
ICAgaWYgKGJpZ0ludC5zaWduKCkpIHsKKyAgICAgICAgaWYgKG4gPiBtYXhMZW5ndGhCaXRzKSB7
CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVu
Y2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKHZtLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuKSwgYmln
SW50LCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gSWYgYmlnSW50IGlzIHBvc2l0aXZlIGFuZCBo
YXMgdXAgdG8gbiBiaXRzLCByZXR1cm4gaXQgZGlyZWN0bHkuCisgICAgaWYgKG4gPj0gbWF4TGVu
Z3RoQml0cykKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICBzdGF0aWNfYXNzZXJ0KG1heExl
bmd0aEJpdHMgPCBJTlQzMl9NQVggLSBkaWdpdEJpdHMpOworICAgIGludDMyX3QgbmVlZGVkTGVu
Z3RoID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oKG4gKyBkaWdpdEJpdHMgLSAxKSAvIGRpZ2l0Qml0
cyk7CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGJpZ0ludC5sZW5ndGgoKSkgPCBuZWVk
ZWRMZW5ndGgpCisgICAgICAgIHJldHVybiBiaWdJbnQ7CisKKyAgICBpbnQzMl90IGJpdHNJblRv
cERpZ2l0ID0gbiAlIGRpZ2l0Qml0czsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYmln
SW50Lmxlbmd0aCgpKSA9PSBuZWVkZWRMZW5ndGgpIHsKKyAgICAgICAgaWYgKGJpdHNJblRvcERp
Z2l0ID09IDApCisgICAgICAgICAgICByZXR1cm4gYmlnSW50OworICAgICAgICBEaWdpdCB0b3BE
aWdpdCA9IGJpZ0ludC5kaWdpdChuZWVkZWRMZW5ndGggLSAxKTsKKyAgICAgICAgaWYgKCh0b3BE
aWdpdCA+PiBiaXRzSW5Ub3BEaWdpdCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQ7
CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlLCB0cnVuY2F0ZS4KKyAgICBBU1NFUlQobiA8PSBJ
TlQzMl9NQVgpOworICAgIHJldHVybiB0cnVuY2F0ZVRvTkJpdHModm0sIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG4pLCBiaWdJbnQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4K
K0pTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojp0cnVuY2F0ZVRvTkJpdHMoVk0mIHZtLCBp
bnQzMl90IG4sIEJpZ0ludEltcGwgYmlnSW50KQoreworICAgIEFTU0VSVChuICE9IDApOworICAg
IEFTU0VSVChiaWdJbnQubGVuZ3RoKCkgPiBuIC8gZGlnaXRCaXRzKTsKKworICAgIGludDMyX3Qg
bmVlZGVkRGlnaXRzID0gKG4gKyAoZGlnaXRCaXRzIC0gMSkpIC8gZGlnaXRCaXRzOworICAgIEFT
U0VSVChuZWVkZWREaWdpdHMgPD0gYmlnSW50Lmxlbmd0aCgpKTsKKyAgICBKU0JpZ0ludCogcmVz
dWx0ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbmVlZGVkRGlnaXRzKTsKKyAgICBB
U1NFUlQocmVzdWx0KTsKKworICAgIC8vIENvcHkgYWxsIGRpZ2l0cyBleGNlcHQgdGhlIE1TRC4K
KyAgICBpbnQzMl90IGxhc3QgPSBuZWVkZWREaWdpdHMgLSAxOworICAgIGZvciAoaW50MzJfdCBp
ID0gMDsgaSA8IGxhc3Q7IGkrKykKKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBiaWdJbnQu
ZGlnaXQoaSkpOworCisgICAgLy8gVGhlIE1TRCBtaWdodCBjb250YWluIGV4dHJhIGJpdHMgdGhh
dCB3ZSBkb24ndCB3YW50LgorICAgIERpZ2l0IG1zZCA9IGJpZ0ludC5kaWdpdChsYXN0KTsKKyAg
ICBpZiAobiAlIGRpZ2l0Qml0cyAhPSAwKSB7CisgICAgICAgIGludDMyX3QgZHJvcCA9IGRpZ2l0
Qml0cyAtIChuICUgZGlnaXRCaXRzKTsKKyAgICAgICAgbXNkID0gKG1zZCA8PCBkcm9wKSA+PiBk
cm9wOworICAgIH0KKyAgICByZXN1bHQtPnNldERpZ2l0KGxhc3QsIG1zZCk7CisgICAgcmVzdWx0
LT5zZXRTaWduKGJpZ0ludC5zaWduKCkpOworICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2
bSk7Cit9CisKKy8vIFN1YnRyYWN0cyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgbiBiaXRzIG9mIGFi
cyhiaWdJbnQpIGZyb20gMl5uLgordGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CitKU0Jp
Z0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6dHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byhW
TSYgdm0sIGludDMyX3QgbiwgQmlnSW50SW1wbCBiaWdJbnQsIGJvb2wgcmVzdWx0U2lnbikKK3sK
KyAgICBBU1NFUlQobiAhPSAwKTsKKyAgICBBU1NFUlQobiA8PSBtYXhMZW5ndGhCaXRzKTsKKwor
ICAgIGludDMyX3QgbmVlZGVkRGlnaXRzID0gKG4gKyAoZGlnaXRCaXRzIC0gMSkpIC8gZGlnaXRC
aXRzOworICAgIEFTU0VSVChuZWVkZWREaWdpdHMgPD0gbWF4TGVuZ3RoKTsgIC8vIEZvbGxvd3Mg
ZnJvbSBuIDw9IG1heExlbmd0aEJpdHMuCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdp
dGhMZW5ndGhVbmNoZWNrZWQodm0sIG5lZWRlZERpZ2l0cyk7CisgICAgQVNTRVJUKHJlc3VsdCk7
CisKKyAgICAvLyBQcm9jZXNzIGFsbCBkaWdpdHMgZXhjZXB0IHRoZSBNU0QuCisgICAgaW50MzJf
dCBpID0gMDsKKyAgICBpbnQzMl90IGxhc3QgPSBuZWVkZWREaWdpdHMgLSAxOworICAgIGludDMy
X3QgbGVuZ3RoID0gYmlnSW50Lmxlbmd0aCgpOworICAgIERpZ2l0IGJvcnJvdyA9IDA7CisgICAg
Ly8gVGFrZSBkaWdpdHMgZnJvbSBiaWdJbnQgdW5sZXNzIGl0cyBsZW5ndGggaXMgZXhoYXVzdGVk
LgorICAgIGludDMyX3QgbGltaXQgPSBzdGQ6Om1pbihsYXN0LCBsZW5ndGgpOworICAgIGZvciAo
OyBpIDwgbGltaXQ7IGkrKykgeworICAgICAgICBEaWdpdCBuZXdCb3Jyb3cgPSAwOworICAgICAg
ICBEaWdpdCBkaWZmZXJlbmNlID0gZGlnaXRTdWIoMCwgYmlnSW50LmRpZ2l0KGkpLCBuZXdCb3Jy
b3cpOworICAgICAgICBkaWZmZXJlbmNlID0gZGlnaXRTdWIoZGlmZmVyZW5jZSwgYm9ycm93LCBu
ZXdCb3Jyb3cpOworICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGRpZmZlcmVuY2UpOworICAg
ICAgICBib3Jyb3cgPSBuZXdCb3Jyb3c7CisgICAgfQorICAgIC8vIFRoZW4gc2ltdWxhdGUgbGVh
ZGluZyB6ZXJvZXMgaW4ge2JpZ0ludH0gYXMgbmVlZGVkLgorICAgIGZvciAoOyBpIDwgbGFzdDsg
aSsrKSB7CisgICAgICAgIERpZ2l0IG5ld0JvcnJvdyA9IDA7CisgICAgICAgIERpZ2l0IGRpZmZl
cmVuY2UgPSBkaWdpdFN1YigwLCBib3Jyb3csIG5ld0JvcnJvdyk7CisgICAgICAgIHJlc3VsdC0+
c2V0RGlnaXQoaSwgZGlmZmVyZW5jZSk7CisgICAgICAgIGJvcnJvdyA9IG5ld0JvcnJvdzsKKyAg
ICB9CisKKyAgICAvLyBUaGUgTVNEIG1pZ2h0IGNvbnRhaW4gZXh0cmEgYml0cyB0aGF0IHdlIGRv
bid0IHdhbnQuCisgICAgRGlnaXQgbXNkID0gbGFzdCA8IGxlbmd0aCA/IGJpZ0ludC5kaWdpdChs
YXN0KSA6IDA7CisgICAgaW50MzJfdCBtc2RCaXRzQ29uc3VtZWQgPSBuICUgZGlnaXRCaXRzOwor
ICAgIERpZ2l0IHJlc3VsdE1TRDsKKyAgICBpZiAobXNkQml0c0NvbnN1bWVkID09IDApIHsKKyAg
ICAgICAgRGlnaXQgbmV3Qm9ycm93ID0gMDsKKyAgICAgICAgcmVzdWx0TVNEID0gZGlnaXRTdWIo
MCwgbXNkLCBuZXdCb3Jyb3cpOworICAgICAgICByZXN1bHRNU0QgPSBkaWdpdFN1YihyZXN1bHRN
U0QsIGJvcnJvdywgbmV3Qm9ycm93KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQzMl90IGRy
b3AgPSBkaWdpdEJpdHMgLSBtc2RCaXRzQ29uc3VtZWQ7CisgICAgICAgIG1zZCA9IChtc2QgPDwg
ZHJvcCkgPj4gZHJvcDsKKyAgICAgICAgRGlnaXQgbWludWVuZE1TRCA9IHN0YXRpY19jYXN0PERp
Z2l0PigxKSA8PCAoZGlnaXRCaXRzIC0gZHJvcCk7CisgICAgICAgIERpZ2l0IG5ld0JvcnJvdyA9
IDA7CisgICAgICAgIHJlc3VsdE1TRCA9IGRpZ2l0U3ViKG1pbnVlbmRNU0QsIG1zZCwgbmV3Qm9y
cm93KTsKKyAgICAgICAgcmVzdWx0TVNEID0gZGlnaXRTdWIocmVzdWx0TVNELCBib3Jyb3csIG5l
d0JvcnJvdyk7CisgICAgICAgIEFTU0VSVChuZXdCb3Jyb3cgPT0gMCk7ICAvLyByZXN1bHQgPCAy
Xm4uCisgICAgICAgIC8vIElmIGFsbCBzdWJ0cmFjdGVkIGJpdHMgd2VyZSB6ZXJvLCB3ZSBoYXZl
IHRvIGdldCByaWQgb2YgdGhlCisgICAgICAgIC8vIG1hdGVyaWFsaXplZCBtaW51ZW5kTVNEIGFn
YWluLgorICAgICAgICByZXN1bHRNU0QgJj0gKG1pbnVlbmRNU0QgLSAxKTsKKyAgICB9CisgICAg
cmVzdWx0LT5zZXREaWdpdChsYXN0LCByZXN1bHRNU0QpOworICAgIHJlc3VsdC0+c2V0U2lnbihy
ZXN1bHRTaWduKTsKKyAgICByZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworfQorCitKU1Zh
bHVlIEpTQmlnSW50Ojphc0ludE4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0
X3QgbiwgSlNCaWdJbnQqIGJpZ0ludCkKK3sKKyAgICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50
MzIoYXNJbnROSW1wbChnbG9iYWxPYmplY3QsIG4sIEhlYXBCaWdJbnRJbXBsIHsgYmlnSW50IH0p
KTsKK30KKworSlNWYWx1ZSBKU0JpZ0ludDo6YXNVaW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1aW50NjRfdCBuLCBKU0JpZ0ludCogYmlnSW50KQoreworICAgIHJldHVybiB0cnlD
b252ZXJ0VG9CaWdJbnQzMihhc1VpbnROSW1wbChnbG9iYWxPYmplY3QsIG4sIEhlYXBCaWdJbnRJ
bXBsIHsgYmlnSW50IH0pKTsKK30KKworI2lmIFVTRShCSUdJTlQzMikKK0pTVmFsdWUgSlNCaWdJ
bnQ6OmFzSW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBpbnQz
Ml90IGJpZ0ludCkKK3sKKyAgICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoYXNJbnROSW1w
bChnbG9iYWxPYmplY3QsIG4sIEludDMyQmlnSW50SW1wbCB7IGJpZ0ludCB9KSk7Cit9CisKK0pT
VmFsdWUgSlNCaWdJbnQ6OmFzVWludE4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWlu
dDY0X3QgbiwgaW50MzJfdCBiaWdJbnQpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0JpZ0lu
dDMyKGFzVWludE5JbXBsKGdsb2JhbE9iamVjdCwgbiwgSW50MzJCaWdJbnRJbXBsIHsgYmlnSW50
IH0pKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IDdhNDlkMGZkMmM2YzE5ZjQxOTVkNjk4YmFiNDBk
MmNiMWIzY2NmMTIuLjUxNTY0NjExODY2ZGZiZWYwODU4NjZmNGI1M2ExNWNlMjAwNTE5YTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtNDEyLDYgKzQxMiwx
NCBAQCBjbGFzcyBKU0JpZ0ludCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1
cm4gdG9OdW1iZXJIZWFwKGpzQ2FzdDxKU0JpZ0ludCo+KGJpZ0ludCkpOwogICAgIH0KIAorCisg
ICAgc3RhdGljIEpTVmFsdWUgYXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgbiwgSlNC
aWdJbnQqKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBhc1VpbnROKEpTR2xvYmFsT2JqZWN0KiwgdWlu
dDY0X3QgbiwgSlNCaWdJbnQqKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgc3RhdGljIEpTVmFs
dWUgYXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgbiwgaW50MzJfdCk7CisgICAgc3Rh
dGljIEpTVmFsdWUgYXNVaW50TihKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IG4sIGludDMyX3Qp
OworI2VuZGlmCisKICAgICBEaWdpdCBkaWdpdCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXREaWdp
dCh1bnNpZ25lZCwgRGlnaXQpOyAvLyBVc2Ugb25seSB3aGVuIGluaXRpYWxpemluZy4KICAgICBK
U19FWFBPUlRfUFJJVkFURSBKU0JpZ0ludCogcmlnaHRUcmltKFZNJik7CkBAIC01NDEsNiArNTQ5
LDE3IEBAIGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CiAgICAgc3RhdGljIE9wdGlvbmFsPERpZ2l0PiB0b1No
aWZ0QW1vdW50KEJpZ0ludEltcGwgeCk7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50
SW1wbD4KKyAgICBzdGF0aWMgSW1wbFJlc3VsdCBhc0ludE5JbXBsKEpTR2xvYmFsT2JqZWN0Kiwg
dWludDY0X3QgbiwgQmlnSW50SW1wbCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludElt
cGw+CisgICAgc3RhdGljIEltcGxSZXN1bHQgYXNVaW50TkltcGwoSlNHbG9iYWxPYmplY3QqLCB1
aW50NjRfdCBuLCBCaWdJbnRJbXBsKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1w
bD4KKyAgICBzdGF0aWMgSW1wbFJlc3VsdCB0cnVuY2F0ZVRvTkJpdHMoVk0mIHZtLCBpbnQzMl90
IG4sIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorICAg
IHN0YXRpYyBJbXBsUmVzdWx0IHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28oVk0mIHZtLCBp
bnQzMl90IG4sIEJpZ0ludEltcGwsIGJvb2wgcmVzdWx0U2lnbik7CisKKyAgICBzdGF0aWMgSW1w
bFJlc3VsdCB6ZXJvSW1wbChWTSYpOworCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQs
IG1fZGF0YSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDRmZTcwYTlmNjI2NTdkYmE0ZjcyYzkxYWZmZDk2NjNmMDgyZTBiMDkuLjYxYWRk
YjVjMjA2YmViOWE4MmE3NjQxZGM0OWM1YmU1Y2ZhMTc1ZGUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAt
MDQtMjkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlND
XSBJbXBsZW1lbnQgQmlnSW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2JpZ2ludC1hc2lu
dG4uanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cp
OgorICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6CisKIDIwMjAtMDQtMjkgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBKU1N0cmlu
Z0pvaW5lciBpcyBtaXNzaW5nIEJpZ0ludCBoYW5kbGluZwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvYmlnaW50LWFzaW50bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZ2ludC1hc2ludG4uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2FjNzYyYTg4YjFlNGYxNDc3M2NkMTkxZDEyOGQyYTlhNjZlMzVlOQotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2JpZ2ludC1hc2ludG4uanMKQEAgLTAsMCAr
MSwzMCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChh
Y3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTog
JyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2Fn
ZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7
CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICgh
ZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKKy8vIEJpZ0ludDMyCitz
aG91bGRCZShCaWdJbnQuYXNJbnROKDAsIDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50
TigxLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMiwgMG4pLCAwbik7CitzaG91
bGRCZShCaWdJbnQuYXNJbnROKDMsIDBuKSwgMG4pOworCitzaG91bGRCZShCaWdJbnQuYXNJbnRO
KDAsIDFuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50TigxLCAxbiksIC0xbik7CitzaG91
bGRCZShCaWdJbnQuYXNJbnROKDIsIDFuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigz
LCAxbiksIDFuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFt
bCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCAyYzE3OTZiMzhkODVj
NjVjNGFhYzg1OGEyNTkyNjM2NTZmNzgxYTU5Li44NzBkMTdhZGE4OGFhYjc1MzE1ODdiYWI0ZTcy
YmIxZDIyZDM5NWM3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC03MzgsNjYgKzcz
OCw2IEBAIHRlc3QvYnVpbHQtaW5zL0FzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZS9yZXR1
cm4vYWJzZW50LXZhbHVlLW5vdC1wYXNzZWQuanM6CiB0ZXN0L2J1aWx0LWlucy9Bc3luY0dlbmVy
YXRvclByb3RvdHlwZS9yZXR1cm4vcmV0dXJuLXN1c3BlbmRlZFlpZWxkLXByb21pc2UuanM6CiAg
IGRlZmF1bHQ6ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYy
RXJyb3I6IEFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0b3IsIHJlc3VsdFZhbHVlLCB0cnVl
KSBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IFByb21pc2VdwrssIMKrdW53cmFwcGVkLXZh
bHVlwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MjpBc3luY1Rlc3RGYWls
dXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBBc3luY0dlbmVyYXRvclJlc29sdmUoZ2Vu
ZXJhdG9yLCByZXN1bHRWYWx1ZSwgdHJ1ZSkgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBQ
cm9taXNlXcK7LCDCq3Vud3JhcHBlZC12YWx1ZcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1p
bnMvQmlnSW50L2FzSW50Ti9hcml0aG1ldGljLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0g
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmlu
ZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2Jp
Z2ludC10b2JpZ2ludC1lcnJvcnMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvQmln
SW50OiBubyBhcmd1bWVudCA9PiB1bmRlZmluZWQgPT4gVHlwZUVycm9yIEV4cGVjdGVkIGEgVHlw
ZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6IG5vIGFyZ3VtZW50ID0+IHVu
ZGVmaW5lZCA9PiBUeXBlRXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQv
YXNJbnROL2JpZ2ludC10b2JpZ2ludC10b3ByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBl
Y3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqsxwrspIHRvIGJlIHRydWUnCi0gIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBw
cmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUg
dHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYmlnaW50LXRvYmlnaW50LXdyYXBw
ZWQtdmFsdWVzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5i
b3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmlu
ZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBU
b1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1l
VmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9C
aWdJbnQvYXNJbnROL2JpZ2ludC10b2JpZ2ludC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZp
bmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9i
aXRzLXRvaW5kZXgtZXJyb3JzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb0luZGV4
OiB0aHJvdyB3aGVuIGludGVnZXJJbmRleCA8IDAgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogVG9JbmRleDogdGhyb3cgd2hlbiBpbnRlZ2VySW5kZXggPCAwIEV4
cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYml0cy10b2luZGV4LXRv
cHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0
b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5l
ZMK7LCDCqy0xwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBU
b1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCq3VuZGVmaW5lZMK7LCDCqy0xwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9C
aWdJbnQvYXNJbnROL2JpdHMtdG9pbmRleC13cmFwcGVkLXZhbHVlcy5qczoKLSAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNs
b3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3
aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7
KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaXRzLXRvaW5kZXgu
anM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVm
aW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRl
c3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vb3JkZXItb2Ytc3RlcHMuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsywrspIHRvIGJlIHRy
dWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsw
wrssIMKrMsK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYXJp
dGhtZXRpYy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0
cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50LWVycm9y
cy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6IG5vIGFyZ3VtZW50ID0+
IHVuZGVmaW5lZCA9PiBUeXBlRXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBUb0JpZ0ludDogbm8gYXJndW1lbnQgPT4gdW5kZWZpbmVkID0+IFR5cGVFcnJv
ciBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2JpZ2ludC10b2Jp
Z2ludC10b3ByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRp
dmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1
bmRlZmluZWTCuywgwqsxwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQt
aW5zL0JpZ0ludC9hc1VpbnROL2JpZ2ludC10b2JpZ2ludC13cmFwcGVkLXZhbHVlcy5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGlu
dGVybmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBi
ZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94
IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVk
wrssIMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYmln
aW50LXRvYmlnaW50LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRv
IGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaXRzLXRvaW5kZXgtZXJy
b3JzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb0luZGV4OiB0aHJvdyB3aGVuIGlu
dGVnZXJJbmRleCA8IDAgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogVG9JbmRleDogdGhyb3cgd2hlbiBpbnRlZ2VySW5kZXggPCAwIEV4cGVjdGVkIGEgUmFuZ2VF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRl
c3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2JpdHMtdG9pbmRleC10b3ByaW1pdGl2ZS5qczoK
LSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUgdGFr
ZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqsxwrspIHRv
IGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0
b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5l
ZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2Jp
dHMtdG9pbmRleC13cmFwcGVkLXZhbHVlcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
VG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNs
b3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwot
dGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYml0cy10b2luZGV4LmpzOgotICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrsp
IHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9C
aWdJbnQvYXNVaW50Ti9vcmRlci1vZi1zdGVwcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsywrspIHRv
IGJlIHRydWUnCiB0ZXN0L2J1aWx0LWlucy9EYXRhVmlldy9jdXN0b20tcHJvdG8tYWNjZXNzLWRl
dGFjaGVzLWJ1ZmZlci5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBU
eXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwn
CiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBi
ZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398342</attachid>
            <date>2020-05-03 18:49:27 -0700</date>
            <delta_ts>2020-05-04 00:20:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181144-20200503184926.patch</filename>
            <type>text/plain</type>
            <size>27105</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
M2MzMmIxMjc4MThhYTRkOWI2ZjIxZDQ3NDcxZDlkY2ExOWI2YmI1Li43Njg4Nzg2NjhkZmE1YTdm
ZmRhN2ZiODUwN2NiMjIyZjEyZmMxM2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wNS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNV
aW50TgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
MTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBy
dW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6dG9CaWdJbnQpOgor
ICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKToKKyAgICAgICAgKEpT
Qzo6YmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Onplcm9JbXBsKToKKyAgICAgICAgKEpT
Qzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6dW5hcnlN
aW51c0ltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVySW1wbCk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojph
c0ludE5JbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWludE5JbXBsKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OnRydW5jYXRlVG9OQml0cyk6CisgICAgICAgIChKU0M6OkpTQmln
SW50Ojp0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKToKKyAgICAgICAgKEpTQzo6SlNCaWdJ
bnQ6OmFzSW50Tik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojphc1VpbnROKToKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50Lmg6CisKIDIwMjAtMDUtMDMgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBXZWJLaXRB
ZGRpdGlvbnMgaW5jbHVkZSBmb3IgSmF2YVNjcmlwdENvcmVQcmVmaXguaApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGRk
OTY0ZjM4N2RhNTQwY2E1OGE0MGJiM2I2OWY5MTk0MDVjZGRiNGUuLmYwNGJlMzg5YzY1MDg1NmIz
ZWMxMzcyNzA4ZTM5MzRhZTEyZjk1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc3LDMwICs3NywzMiBAQCB2b2lk
IEJpZ0ludENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEJpZ0ludFByb3RvdHlw
ZSogYmlnSW50UHJvdG90eXBlKQogCiBKU1ZhbHVlIHRvQmlnSW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiB7Ci0gICAgQVNTRVJUKGFyZ3VtZW50Lmlz
UHJpbWl0aXZlKCkpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU1ZhbHVlIHByaW1pdGl2
ZSA9IGFyZ3VtZW50LnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICAKLSAgICBpZiAoYXJndW1lbnQuaXNCaWdJbnQoKSkK
LSAgICAgICAgcmV0dXJuIGFyZ3VtZW50OworICAgIGlmIChwcmltaXRpdmUuaXNCaWdJbnQoKSkK
KyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZTsKIAotICAgIGlmIChhcmd1bWVudC5pc0Jvb2xlYW4o
KSkgeworICAgIGlmIChwcmltaXRpdmUuaXNCb29sZWFuKCkpIHsKICNpZiBVU0UoQklHSU5UMzIp
Ci0gICAgICAgIHJldHVybiBqc0JpZ0ludDMyKGFyZ3VtZW50LmFzQm9vbGVhbigpKTsKKyAgICAg
ICAgcmV0dXJuIGpzQmlnSW50MzIocHJpbWl0aXZlLmFzQm9vbGVhbigpKTsKICNlbHNlCi0gICAg
ICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1lbnQuYXNCb29sZWFuKCkp
OworICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0sIHByaW1pdGl2ZS5hc0Jv
b2xlYW4oKSk7CiAjZW5kaWYKICAgICB9CiAKLSAgICBpZiAoYXJndW1lbnQuaXNTdHJpbmcoKSkg
eworICAgIGlmIChwcmltaXRpdmUuaXNTdHJpbmcoKSkgewogICAgICAgICBzY29wZS5yZWxlYXNl
KCk7Ci0gICAgICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2JqZWN0LCBhcmd1bWVudCwg
WyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nVmlldyhnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZSwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKICAgICAgICAgICAg
IHJldHVybiBKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2aWV3KTsKICAgICAgICAg
fSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwg
YXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgpKTsKLSAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRv
QmlnSW50IG9wZXJhdGlvbiJfcyk7CisgICAgQVNTRVJUKHByaW1pdGl2ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpIHx8IHByaW1pdGl2ZS5pc051bWJlcigpIHx8IHByaW1pdGl2ZS5pc1N5bWJvbCgpKTsK
KyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBwcmltaXRp
dmUgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogfQogCkBAIC0xMzEsMTggKzEzMyw0NCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHRvQmlnSW50KGds
b2JhbE9iamVjdCwgcHJpbWl0aXZlKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJh
bWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNB
c1VpbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KQogewotICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBCaWdJbnQuYXNJ
bnROIGFuZCBCaWdJbnQuYXNVaW50TgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODExNDQKLSAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHVpbnQzMl90IGJpdHMgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYml0cyIpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IHRvQmlnSW50KGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoYmlnSW50LmlzQmln
SW50MzIoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoSlNCaWdJbnQ6OmFzVWludE4oZ2xvYmFsT2JqZWN0LCBiaXRzLCBiaWdJbnQuYmlnSW50MzJB
c0ludDMyKCkpKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChiaWdJbnQuaXNIZWFwQmlnSW50KCkp
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50
Ojphc1VpbnROKGdsb2JhbE9iamVjdCwgYml0cywgYmlnSW50LmFzSGVhcEJpZ0ludCgpKSkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0Fz
SW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1b
QmlnSW50XSBJbXBsZW1lbnQgQmlnSW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTQ0Ci0gICAgcmV0
dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICB1aW50
MzJfdCBiaXRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwg
ImJpdHMiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNW
YWx1ZSBiaWdJbnQgPSB0b0JpZ0ludChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyNpZiBVU0UoQklH
SU5UMzIpCisgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojphc0ludE4oZ2xvYmFsT2Jq
ZWN0LCBiaXRzLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkpKSk7CisjZW5kaWYKKworICAgIEFT
U0VSVChiaWdJbnQuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojphc0ludE4oZ2xvYmFsT2JqZWN0LCBiaXRzLCBi
aWdJbnQuYXNIZWFwQmlnSW50KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4IDU5ZWZmNmVkYmU1NmFj
YzMyZmE4ZDNmZWNhYzA4OWEyNTlmZjc4NzAuLjJmMTNhYzYxODRiMzcyYjhiMmVmNjNmZDE5NmM2
M2NlMTVkMzdmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5j
cHAKQEAgLTU1LDggKzU1LDYgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAotI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNvbmQpIHN0YXRpY19hc3Nl
cnQoY29uZCwgIkpTQmlnSW50IGFzc3VtZXMgIiAjY29uZCkKLQogbmFtZXNwYWNlIEpTQyB7CiAK
IGNvbnN0IENsYXNzSW5mbyBKU0JpZ0ludDo6c19pbmZvID0geyAiQmlnSW50IiwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0JpZ0ludCkgfTsKQEAgLTM5
NSw2ICszOTMsMTYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSB0cnlDb252ZXJ0VG9C
aWdJbnQzMihKU0JpZ0ludDo6SW1wbFJlc3VsdCBpbXBsUmVzdWwKICAgICByZXR1cm4gdHJ5Q29u
dmVydFRvQmlnSW50MzIoaW1wbFJlc3VsdC5wYXlsb2FkLmFzSGVhcEJpZ0ludCgpKTsKIH0KIAor
QUxXQVlTX0lOTElORSBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6emVyb0ltcGwoVk0m
IHZtKQoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBVTlVTRURfUEFSQU0odm0pOworICAgIHJl
dHVybiBqc0JpZ0ludDMyKDApOworI2Vsc2UKKyAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVpl
cm8odm0pOworI2VuZGlmCit9CisKIC8vIE11bHRpcGxpZXMge3RoaXN9IHdpdGgge2ZhY3Rvcn0g
YW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCiB2b2lkIEpTQmlnSW50OjppbnBsYWNl
TXVsdGlwbHlBZGQoRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kKQogewpAQCAtNTY2LDEzICs1
NzQsOCBAQCBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6ZGl2aWRlSW1wbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBCaWdJbnRJbQogICAgIC8vIDIuIExldCBxdW90aWVudCBi
ZSB0aGUgbWF0aGVtYXRpY2FsIHZhbHVlIG9mIHggZGl2aWRlZCBieSB5LgogICAgIC8vIDMuIFJl
dHVybiBhIEJpZ0ludCByZXByZXNlbnRpbmcgcXVvdGllbnQgcm91bmRlZCB0b3dhcmRzIDAgdG8g
dGhlIG5leHQKICAgICAvLyAgICBpbnRlZ3JhbCB2YWx1ZS4KLSAgICBpZiAoYWJzb2x1dGVDb21w
YXJlKHgsIHkpID09IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuKSB7Ci0jaWYgVVNFKEJJR0lO
VDMyKQotICAgICAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNlCi0gICAgICAgIHJldHVy
biBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7Ci0jZW5kaWYKLSAgICB9CisgICAgaWYgKGFic29s
dXRlQ29tcGFyZSh4LCB5KSA9PSBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbikKKyAgICAgICAg
cmV0dXJuIHplcm9JbXBsKHZtKTsKIAogICAgIEpTQmlnSW50KiBxdW90aWVudCA9IG51bGxwdHI7
CiAgICAgYm9vbCByZXN1bHRTaWduID0geC5zaWduKCkgIT0geS5zaWduKCk7CkBAIC02MjIsMTMg
KzYyNSw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y29weShWTSYgdm0sIEJpZ0ludEltcGwgeCkK
IHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgogSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNC
aWdJbnQ6OnVuYXJ5TWludXNJbXBsKFZNJiB2bSwgQmlnSW50SW1wbCB4KQogewotICAgIGlmICh4
LmlzWmVybygpKSB7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICByZXR1cm4ganNCaWdJbnQz
MigwKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7Ci0j
ZW5kaWYKLSAgICB9CisgICAgaWYgKHguaXNaZXJvKCkpCisgICAgICAgIHJldHVybiB6ZXJvSW1w
bCh2bSk7CiAKICAgICBKU0JpZ0ludCogcmVzdWx0ID0gY29weSh2bSwgeCk7CiAgICAgcmVzdWx0
LT5zZXRTaWduKCF4LnNpZ24oKSk7CkBAIC02NjAsMjMgKzY1OCwxMyBAQCBKU0JpZ0ludDo6SW1w
bFJlc3VsdCBKU0JpZ0ludDo6cmVtYWluZGVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBCaWdJbgogICAgIEpTQmlnSW50KiByZW1haW5kZXI7CiAgICAgaWYgKHkubGVuZ3RoKCkg
PT0gMSkgewogICAgICAgICBEaWdpdCBkaXZpc29yID0geS5kaWdpdCgwKTsKLSAgICAgICAgaWYg
KGRpdmlzb3IgPT0gMSkgewotI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgcmV0dXJuIGpzQmln
SW50MzIoMCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0p
OwotI2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgaWYgKGRpdmlzb3IgPT0gMSkKKyAgICAgICAg
ICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CiAKICAgICAgICAgRGlnaXQgcmVtYWluZGVyRGlnaXQ7
CiAgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwgeCwgZGl2aXNvciwgbnVs
bHB0ciwgcmVtYWluZGVyRGlnaXQpOwotICAgICAgICBpZiAoIXJlbWFpbmRlckRpZ2l0KSB7Ci0j
aWYgVVNFKEJJR0lOVDMyKQotICAgICAgICAgICAgcmV0dXJuIGpzQmlnSW50MzIoMCk7Ci0jZWxz
ZQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJvKHZtKTsKLSNlbmRpZgot
ICAgICAgICB9CisgICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQpCisgICAgICAgICAgICByZXR1
cm4gemVyb0ltcGwodm0pOwogCiAgICAgICAgIHJlbWFpbmRlciA9IGNyZWF0ZVdpdGhMZW5ndGhV
bmNoZWNrZWQodm0sIDEpOwogICAgICAgICByZW1haW5kZXItPnNldERpZ2l0KDAsIHJlbWFpbmRl
ckRpZ2l0KTsKQEAgLTExODUsNyArMTE3Myw3IEBAIGlubGluZSBKU0JpZ0ludDo6RGlnaXQgSlNC
aWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGlnaXQgZGl2aXNvciwKICAg
ICAvLyBsZWZ0IG9wZXJhbmQiLiBXZSBtYXNrIHRoZSByaWdodCBvcGVyYW5kIG9mIHRoZSBzaGlm
dCBieSB7c2hpZnRNYXNrfSAoYGRpZ2l0Qml0cyAtIDFgKSwgd2hpY2ggbWFrZXMgYGRpZ2l0Qml0
cyAtIDBgIHplcm8uCiAgICAgLy8gVGhpcyBzaGlmdGluZyBwcm9kdWNlcyBhIHZhbHVlIHdoaWNo
IGNvdmVycyAwIDwge3N9IDw9IChkaWdpdEJpdHMgLSAxKSBjYXNlcy4ge3N9ID09IGRpZ2l0Qml0
cyBuZXZlciBoYXBwZW4gYXMgd2UgYXNzZXJ0ZWQuCiAgICAgLy8gU2luY2Uge3NaZXJvTWFza30g
Y2xlYXJzIHRoZSB2YWx1ZSBpbiB0aGUgY2FzZSBvZiB7c30gPT0gMCwge3N9ID09IDAgY2FzZSBp
cyBhbHNvIGNvdmVyZWQuCi0gICAgU1RBVElDX0FTU0VSVChzaXplb2YoQ1BVUmVnaXN0ZXIpID09
IHNpemVvZihEaWdpdCkpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKENQVVJlZ2lzdGVyKSA9
PSBzaXplb2YoRGlnaXQpKTsKICAgICBEaWdpdCBzWmVyb01hc2sgPSBzdGF0aWNfY2FzdDxEaWdp
dD4oKC1zdGF0aWNfY2FzdDxDUFVSZWdpc3Rlcj4ocykpID4+IChkaWdpdEJpdHMgLSAxKSk7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaGlmdE1hc2sgPSBkaWdpdEJpdHMgLSAxOwog
ICAgIERpZ2l0IHVuMzIgPSAoaGlnaCA8PCBzKSB8ICgobG93ID4+ICgoZGlnaXRCaXRzIC0gcykg
JiBzaGlmdE1hc2spKSAmIHNaZXJvTWFzayk7CkBAIC0yNzMxLDQgKzI3MTksMjA1IEBAIEpTVmFs
dWUgSlNCaWdJbnQ6OnRvTnVtYmVySGVhcChKU0JpZ0ludCogYmlnSW50KQogICAgIHJldHVybiBq
c051bWJlcihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihkb3VibGVCaXRzKSk7CiB9CiAKK3RlbXBsYXRl
IDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmFz
SW50TkltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgbiwgQmlnSW50
SW1wbCBiaWdJbnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisgICAg
aWYgKGJpZ0ludC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICBpZiAobiA9
PSAwKQorICAgICAgICByZXR1cm4gemVyb0ltcGwodm0pOworCisgICAgdWludDY0X3QgbmVlZGVk
TGVuZ3RoID0gKG4gKyBkaWdpdEJpdHMgLSAxKSAvIGRpZ2l0Qml0czsKKyAgICB1aW50NjRfdCBs
ZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50Lmxlbmd0aCgpKTsKKyAgICAvLyBJ
ZiBiaWdJbnQgaGFzIGxlc3MgdGhhbiBuIGJpdHMsIHJldHVybiBpdCBkaXJlY3RseS4KKyAgICBp
ZiAobGVuZ3RoIDwgbmVlZGVkTGVuZ3RoKQorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIEFT
U0VSVChuZWVkZWRMZW5ndGggPD0gSU5UMzJfTUFYKTsKKyAgICBEaWdpdCB0b3BEaWdpdCA9IGJp
Z0ludC5kaWdpdChzdGF0aWNfY2FzdDxpbnQzMl90PihuZWVkZWRMZW5ndGgpIC0gMSk7CisgICAg
RGlnaXQgY29tcGFyZURpZ2l0ID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KDEpIDw8ICgobiAtIDEpICUg
ZGlnaXRCaXRzKTsKKyAgICBpZiAobGVuZ3RoID09IG5lZWRlZExlbmd0aCAmJiB0b3BEaWdpdCA8
IGNvbXBhcmVEaWdpdCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKworICAgIC8vIE90aGVyd2lz
ZSB3ZSBoYXZlIHRvIHRydW5jYXRlICh3aGljaCBpcyBhIG5vLW9wIGluIHRoZSBzcGVjaWFsIGNh
c2UKKyAgICAvLyBvZiBiaWdJbnQgPT0gLTJeKG4tMSkpLCBhbmQgZGV0ZXJtaW5lIHRoZSByaWdo
dCBzaWduLiBXZSBhbHNvIG1pZ2h0IGhhdmUKKyAgICAvLyB0byBzdWJ0cmFjdCBmcm9tIDJebiB0
byBzaW11bGF0ZSBoYXZpbmcgdHdvJ3MgY29tcGxlbWVudCByZXByZXNlbnRhdGlvbi4KKyAgICAv
LyBJbiBtb3N0IGNhc2VzLCB0aGUgcmVzdWx0J3Mgc2lnbiBpcyBiaWdJbnQuc2lnbigpIHhvciAi
KG4tMSl0aCBiaXQgcHJlc2VudCIuCisgICAgLy8gVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHdoZW4g
YmlnSW50IGlzIG5lZ2F0aXZlLCBoYXMgdGhlIChuLTEpdGggYml0LCBhbmQgYWxsCisgICAgLy8g
aXRzIGJpdHMgYmVsb3cgKG4tMSkgYXJlIHplcm8uIEluIHRoYXQgY2FzZSwgdGhlIHJlc3VsdCBp
cyB0aGUgbWluaW11bQorICAgIC8vIG4tYml0IGludGVnZXIgKGV4YW1wbGU6IGFzSW50TigzLCAt
MTJuKSA9PiAtNG4pLgorICAgIGJvb2wgaGFzQml0ID0gKHRvcERpZ2l0ICYgY29tcGFyZURpZ2l0
KSA9PSBjb21wYXJlRGlnaXQ7CisgICAgQVNTRVJUKG4gPD0gSU5UMzJfTUFYKTsKKyAgICBpbnQz
Ml90IE4gPSBzdGF0aWNfY2FzdDxpbnQzMl90PihuKTsKKyAgICBpZiAoIWhhc0JpdCkKKyAgICAg
ICAgcmV0dXJuIHRydW5jYXRlVG9OQml0cyh2bSwgTiwgYmlnSW50KTsKKyAgICBpZiAoIWJpZ0lu
dC5zaWduKCkpCisgICAgICAgIHJldHVybiB0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKHZt
LCBOLCBiaWdJbnQsIHRydWUpOworCisgICAgLy8gTmVnYXRpdmUgbnVtYmVycyBtdXN0IHN1YnRy
YWN0IGZyb20gMl5uLCBleGNlcHQgZm9yIHRoZSBzcGVjaWFsIGNhc2UKKyAgICAvLyBkZXNjcmli
ZWQgYWJvdmUuCisgICAgaWYgKCh0b3BEaWdpdCAmIChjb21wYXJlRGlnaXQgLSAxKSkgPT0gMCkg
eworICAgICAgICBmb3IgKGludDMyX3QgaSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KG5lZWRlZExl
bmd0aCkgLSAyOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgaWYgKGJpZ0ludC5kaWdpdChp
KSAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9m
VHdvKHZtLCBOLCBiaWdJbnQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBUcnVuY2F0
aW9uIGlzIG5vLW9wIGlmIGJpZ0ludCA9PSAtMl4obi0xKS4KKyAgICAgICAgaWYgKGxlbmd0aCA9
PSBuZWVkZWRMZW5ndGggJiYgdG9wRGlnaXQgPT0gY29tcGFyZURpZ2l0KQorICAgICAgICAgICAg
cmV0dXJuIGJpZ0ludDsKKyAgICAgICAgcmV0dXJuIHRydW5jYXRlVG9OQml0cyh2bSwgTiwgYmln
SW50KTsKKyAgICB9CisgICAgcmV0dXJuIHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28odm0s
IE4sIGJpZ0ludCwgZmFsc2UpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4K
K0pTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojphc1VpbnROSW1wbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBCaWdJbnRJbXBsIGJpZ0ludCkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgaWYgKGJpZ0ludC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKyAgICBpZiAobiA9PSAwKQorICAgICAgICByZXR1cm4gemVyb0ltcGwodm0pOwor
CisgICAgLy8gSWYgYmlnSW50IGlzIG5lZ2F0aXZlLCBzaW11bGF0ZSB0d28ncyBjb21wbGVtZW50
IHJlcHJlc2VudGF0aW9uLgorICAgIGlmIChiaWdJbnQuc2lnbigpKSB7CisgICAgICAgIGlmIChu
ID4gbWF4TGVuZ3RoQml0cykgeworICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24g
aXMgdG9vIGJpZyJfcyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQor
ICAgICAgICByZXR1cm4gdHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byh2bSwgc3RhdGljX2Nh
c3Q8aW50MzJfdD4obiksIGJpZ0ludCwgZmFsc2UpOworICAgIH0KKworICAgIC8vIElmIGJpZ0lu
dCBpcyBwb3NpdGl2ZSBhbmQgaGFzIHVwIHRvIG4gYml0cywgcmV0dXJuIGl0IGRpcmVjdGx5Lgor
ICAgIGlmIChuID49IG1heExlbmd0aEJpdHMpCisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAg
c3RhdGljX2Fzc2VydChtYXhMZW5ndGhCaXRzIDwgSU5UMzJfTUFYIC0gZGlnaXRCaXRzKTsKKyAg
ICBpbnQzMl90IG5lZWRlZExlbmd0aCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KChuICsgZGlnaXRC
aXRzIC0gMSkgLyBkaWdpdEJpdHMpOworICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihiaWdJ
bnQubGVuZ3RoKCkpIDwgbmVlZGVkTGVuZ3RoKQorICAgICAgICByZXR1cm4gYmlnSW50OworCisg
ICAgaW50MzJfdCBiaXRzSW5Ub3BEaWdpdCA9IG4gJSBkaWdpdEJpdHM7CisgICAgaWYgKHN0YXRp
Y19jYXN0PGludDMyX3Q+KGJpZ0ludC5sZW5ndGgoKSkgPT0gbmVlZGVkTGVuZ3RoKSB7CisgICAg
ICAgIGlmIChiaXRzSW5Ub3BEaWdpdCA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsK
KyAgICAgICAgRGlnaXQgdG9wRGlnaXQgPSBiaWdJbnQuZGlnaXQobmVlZGVkTGVuZ3RoIC0gMSk7
CisgICAgICAgIGlmICgodG9wRGlnaXQgPj4gYml0c0luVG9wRGlnaXQpID09IDApCisgICAgICAg
ICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIC8vIE90aGVyd2lzZSwgdHJ1bmNhdGUu
CisgICAgQVNTRVJUKG4gPD0gSU5UMzJfTUFYKTsKKyAgICByZXR1cm4gdHJ1bmNhdGVUb05CaXRz
KHZtLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuKSwgYmlnSW50KTsKK30KKwordGVtcGxhdGUgPHR5
cGVuYW1lIEJpZ0ludEltcGw+CitKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6dHJ1bmNh
dGVUb05CaXRzKFZNJiB2bSwgaW50MzJfdCBuLCBCaWdJbnRJbXBsIGJpZ0ludCkKK3sKKyAgICBB
U1NFUlQobiAhPSAwKTsKKyAgICBBU1NFUlQoYmlnSW50Lmxlbmd0aCgpID4gbiAvIGRpZ2l0Qml0
cyk7CisKKyAgICBpbnQzMl90IG5lZWRlZERpZ2l0cyA9IChuICsgKGRpZ2l0Qml0cyAtIDEpKSAv
IGRpZ2l0Qml0czsKKyAgICBBU1NFUlQobmVlZGVkRGlnaXRzIDw9IHN0YXRpY19jYXN0PGludDMy
X3Q+KGJpZ0ludC5sZW5ndGgoKSkpOworICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRo
TGVuZ3RoVW5jaGVja2VkKHZtLCBuZWVkZWREaWdpdHMpOworICAgIEFTU0VSVChyZXN1bHQpOwor
CisgICAgLy8gQ29weSBhbGwgZGlnaXRzIGV4Y2VwdCB0aGUgTVNELgorICAgIGludDMyX3QgbGFz
dCA9IG5lZWRlZERpZ2l0cyAtIDE7CisgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgbGFzdDsg
aSsrKQorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGJpZ0ludC5kaWdpdChpKSk7CisKKyAg
ICAvLyBUaGUgTVNEIG1pZ2h0IGNvbnRhaW4gZXh0cmEgYml0cyB0aGF0IHdlIGRvbid0IHdhbnQu
CisgICAgRGlnaXQgbXNkID0gYmlnSW50LmRpZ2l0KGxhc3QpOworICAgIGlmIChuICUgZGlnaXRC
aXRzICE9IDApIHsKKyAgICAgICAgaW50MzJfdCBkcm9wID0gZGlnaXRCaXRzIC0gKG4gJSBkaWdp
dEJpdHMpOworICAgICAgICBtc2QgPSAobXNkIDw8IGRyb3ApID4+IGRyb3A7CisgICAgfQorICAg
IHJlc3VsdC0+c2V0RGlnaXQobGFzdCwgbXNkKTsKKyAgICByZXN1bHQtPnNldFNpZ24oYmlnSW50
LnNpZ24oKSk7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKK30KKworLy8gU3Vi
dHJhY3RzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBuIGJpdHMgb2YgYWJzKGJpZ0ludCkgZnJvbSAy
Xm4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KK0pTQmlnSW50OjpJbXBsUmVzdWx0
IEpTQmlnSW50Ojp0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKFZNJiB2bSwgaW50MzJfdCBu
LCBCaWdJbnRJbXBsIGJpZ0ludCwgYm9vbCByZXN1bHRTaWduKQoreworICAgIEFTU0VSVChuICE9
IDApOworICAgIEFTU0VSVChuIDw9IHN0YXRpY19jYXN0PGludDMyX3Q+KG1heExlbmd0aEJpdHMp
KTsKKworICAgIGludDMyX3QgbmVlZGVkRGlnaXRzID0gKG4gKyAoZGlnaXRCaXRzIC0gMSkpIC8g
ZGlnaXRCaXRzOworICAgIEFTU0VSVChuZWVkZWREaWdpdHMgPD0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4obWF4TGVuZ3RoKSk7IC8vIEZvbGxvd3MgZnJvbSBuIDw9IG1heExlbmd0aEJpdHMuCisgICAg
SlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIG5lZWRlZERp
Z2l0cyk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICAvLyBQcm9jZXNzIGFsbCBkaWdpdHMg
ZXhjZXB0IHRoZSBNU0QuCisgICAgaW50MzJfdCBpID0gMDsKKyAgICBpbnQzMl90IGxhc3QgPSBu
ZWVkZWREaWdpdHMgLSAxOworICAgIGludDMyX3QgbGVuZ3RoID0gYmlnSW50Lmxlbmd0aCgpOwor
ICAgIERpZ2l0IGJvcnJvdyA9IDA7CisgICAgLy8gVGFrZSBkaWdpdHMgZnJvbSBiaWdJbnQgdW5s
ZXNzIGl0cyBsZW5ndGggaXMgZXhoYXVzdGVkLgorICAgIGludDMyX3QgbGltaXQgPSBzdGQ6Om1p
bihsYXN0LCBsZW5ndGgpOworICAgIGZvciAoOyBpIDwgbGltaXQ7IGkrKykgeworICAgICAgICBE
aWdpdCBuZXdCb3Jyb3cgPSAwOworICAgICAgICBEaWdpdCBkaWZmZXJlbmNlID0gZGlnaXRTdWIo
MCwgYmlnSW50LmRpZ2l0KGkpLCBuZXdCb3Jyb3cpOworICAgICAgICBkaWZmZXJlbmNlID0gZGln
aXRTdWIoZGlmZmVyZW5jZSwgYm9ycm93LCBuZXdCb3Jyb3cpOworICAgICAgICByZXN1bHQtPnNl
dERpZ2l0KGksIGRpZmZlcmVuY2UpOworICAgICAgICBib3Jyb3cgPSBuZXdCb3Jyb3c7CisgICAg
fQorICAgIC8vIFRoZW4gc2ltdWxhdGUgbGVhZGluZyB6ZXJvZXMgaW4ge2JpZ0ludH0gYXMgbmVl
ZGVkLgorICAgIGZvciAoOyBpIDwgbGFzdDsgaSsrKSB7CisgICAgICAgIERpZ2l0IG5ld0JvcnJv
dyA9IDA7CisgICAgICAgIERpZ2l0IGRpZmZlcmVuY2UgPSBkaWdpdFN1YigwLCBib3Jyb3csIG5l
d0JvcnJvdyk7CisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQoaSwgZGlmZmVyZW5jZSk7CisgICAg
ICAgIGJvcnJvdyA9IG5ld0JvcnJvdzsKKyAgICB9CisKKyAgICAvLyBUaGUgTVNEIG1pZ2h0IGNv
bnRhaW4gZXh0cmEgYml0cyB0aGF0IHdlIGRvbid0IHdhbnQuCisgICAgRGlnaXQgbXNkID0gbGFz
dCA8IGxlbmd0aCA/IGJpZ0ludC5kaWdpdChsYXN0KSA6IDA7CisgICAgaW50MzJfdCBtc2RCaXRz
Q29uc3VtZWQgPSBuICUgZGlnaXRCaXRzOworICAgIERpZ2l0IHJlc3VsdE1TRDsKKyAgICBpZiAo
bXNkQml0c0NvbnN1bWVkID09IDApIHsKKyAgICAgICAgRGlnaXQgbmV3Qm9ycm93ID0gMDsKKyAg
ICAgICAgcmVzdWx0TVNEID0gZGlnaXRTdWIoMCwgbXNkLCBuZXdCb3Jyb3cpOworICAgICAgICBy
ZXN1bHRNU0QgPSBkaWdpdFN1YihyZXN1bHRNU0QsIGJvcnJvdywgbmV3Qm9ycm93KTsKKyAgICB9
IGVsc2UgeworICAgICAgICBpbnQzMl90IGRyb3AgPSBkaWdpdEJpdHMgLSBtc2RCaXRzQ29uc3Vt
ZWQ7CisgICAgICAgIG1zZCA9IChtc2QgPDwgZHJvcCkgPj4gZHJvcDsKKyAgICAgICAgRGlnaXQg
bWludWVuZE1TRCA9IHN0YXRpY19jYXN0PERpZ2l0PigxKSA8PCAoZGlnaXRCaXRzIC0gZHJvcCk7
CisgICAgICAgIERpZ2l0IG5ld0JvcnJvdyA9IDA7CisgICAgICAgIHJlc3VsdE1TRCA9IGRpZ2l0
U3ViKG1pbnVlbmRNU0QsIG1zZCwgbmV3Qm9ycm93KTsKKyAgICAgICAgcmVzdWx0TVNEID0gZGln
aXRTdWIocmVzdWx0TVNELCBib3Jyb3csIG5ld0JvcnJvdyk7CisgICAgICAgIEFTU0VSVChuZXdC
b3Jyb3cgPT0gMCk7IC8vIHJlc3VsdCA8IDJebi4KKyAgICAgICAgLy8gSWYgYWxsIHN1YnRyYWN0
ZWQgYml0cyB3ZXJlIHplcm8sIHdlIGhhdmUgdG8gZ2V0IHJpZCBvZiB0aGUKKyAgICAgICAgLy8g
bWF0ZXJpYWxpemVkIG1pbnVlbmRNU0QgYWdhaW4uCisgICAgICAgIHJlc3VsdE1TRCAmPSAobWlu
dWVuZE1TRCAtIDEpOworICAgIH0KKyAgICByZXN1bHQtPnNldERpZ2l0KGxhc3QsIHJlc3VsdE1T
RCk7CisgICAgcmVzdWx0LT5zZXRTaWduKHJlc3VsdFNpZ24pOworICAgIHJldHVybiByZXN1bHQt
PnJpZ2h0VHJpbSh2bSk7Cit9CisKK0pTVmFsdWUgSlNCaWdJbnQ6OmFzSW50TihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBKU0JpZ0ludCogYmlnSW50KQoreworICAg
IHJldHVybiB0cnlDb252ZXJ0VG9CaWdJbnQzMihhc0ludE5JbXBsKGdsb2JhbE9iamVjdCwgbiwg
SGVhcEJpZ0ludEltcGwgeyBiaWdJbnQgfSkpOworfQorCitKU1ZhbHVlIEpTQmlnSW50Ojphc1Vp
bnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90IG4sIEpTQmlnSW50KiBi
aWdJbnQpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0JpZ0ludDMyKGFzVWludE5JbXBsKGds
b2JhbE9iamVjdCwgbiwgSGVhcEJpZ0ludEltcGwgeyBiaWdJbnQgfSkpOworfQorCisjaWYgVVNF
KEJJR0lOVDMyKQorSlNWYWx1ZSBKU0JpZ0ludDo6YXNJbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIHVpbnQ2NF90IG4sIGludDMyX3QgYmlnSW50KQoreworICAgIHJldHVybiB0cnlD
b252ZXJ0VG9CaWdJbnQzMihhc0ludE5JbXBsKGdsb2JhbE9iamVjdCwgbiwgSW50MzJCaWdJbnRJ
bXBsIHsgYmlnSW50IH0pKTsKK30KKworSlNWYWx1ZSBKU0JpZ0ludDo6YXNVaW50TihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBpbnQzMl90IGJpZ0ludCkKK3sKKyAg
ICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoYXNVaW50TkltcGwoZ2xvYmFsT2JqZWN0LCBu
LCBJbnQzMkJpZ0ludEltcGwgeyBiaWdJbnQgfSkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggN2E0
OWQwZmQyYzZjMTlmNDE5NWQ2OThiYWI0MGQyY2IxYjNjY2YxMi4uZDg4YjBhMjgxMmNmZGUzZjZm
OTEzZWM2MzNmOWJmNTA2ZjI3NmQzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCkBAIC00MTIsNiArNDEyLDE0IEBAIGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiB0b051bWJlckhlYXAoanNDYXN0PEpTQmlnSW50
Kj4oYmlnSW50KSk7CiAgICAgfQogCisKKyAgICBzdGF0aWMgSlNWYWx1ZSBhc0ludE4oSlNHbG9i
YWxPYmplY3QqLCB1aW50NjRfdCwgSlNCaWdJbnQqKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBhc1Vp
bnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIEpTQmlnSW50Kik7CisjaWYgVVNFKEJJR0lO
VDMyKQorICAgIHN0YXRpYyBKU1ZhbHVlIGFzSW50TihKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90
LCBpbnQzMl90KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBhc1VpbnROKEpTR2xvYmFsT2JqZWN0Kiwg
dWludDY0X3QsIGludDMyX3QpOworI2VuZGlmCisKICAgICBEaWdpdCBkaWdpdCh1bnNpZ25lZCk7
CiAgICAgdm9pZCBzZXREaWdpdCh1bnNpZ25lZCwgRGlnaXQpOyAvLyBVc2Ugb25seSB3aGVuIGlu
aXRpYWxpemluZy4KICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0JpZ0ludCogcmlnaHRUcmltKFZN
Jik7CkBAIC01NDEsNiArNTQ5LDE3IEBAIGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CiAgICAgc3RhdGljIE9w
dGlvbmFsPERpZ2l0PiB0b1NoaWZ0QW1vdW50KEJpZ0ludEltcGwgeCk7CiAKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KKyAgICBzdGF0aWMgSW1wbFJlc3VsdCBhc0ludE5JbXBs
KEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBCaWdJbnRJbXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0IGFzVWludE5JbXBsKEpT
R2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBCaWdJbnRJbXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0IHRydW5jYXRlVG9OQml0cyhW
TSYsIGludDMyX3QsIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJ
bXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0IHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28o
Vk0mLCBpbnQzMl90LCBCaWdJbnRJbXBsLCBib29sIHJlc3VsdFNpZ24pOworCisgICAgc3RhdGlj
IEltcGxSZXN1bHQgemVyb0ltcGwoVk0mKTsKKwogICAgIGlubGluZSBzdGF0aWMgc2l6ZV90IG9m
ZnNldE9mRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEpTQmln
SW50LCBtX2RhdGEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0No
YW5nZUxvZwppbmRleCBhZTk4MGFhYWE1NzYxZDM1ZjQxZjRlNmYwOWQwZDY5OTc2ZjEyN2Y4Li5k
MjIyMWE4NWUxODM0ZmUxZTFkMzczMzE1ZjcyNTkyNjk1MTk2OGJkIDEwMDY0NAotLS0gYS9KU1Rl
c3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDIwLTA1LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAg
W0pTQ10gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1VpbnROCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9iaWdpbnQt
YXNpbnRuLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRo
cm93KToKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIwLTA1LTAx
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHN0cmVz
cy9iaWctaW50LW5lZ2F0ZS1qaXQuanMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2JpZ2lu
dC1hc2ludG4uanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXNpbnRuLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmNhYzc2MmE4OGIxZTRmMTQ3NzNjZDE5MWQxMjhkMmE5YTY2ZTM1ZTkKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXNpbnRuLmpzCkBAIC0wLDAgKzEsMzAgQEAKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwp
OworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3du
ID0gdHJ1ZTsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3du
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5n
KGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBl
cnJvcjogJHtTdHJpbmcoZXJyb3IpfWApOworfQorCisvLyBCaWdJbnQzMgorc2hvdWxkQmUoQmln
SW50LmFzSW50TigwLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMSwgMG4pLCAw
bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDIsIDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50
LmFzSW50TigzLCAwbiksIDBuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50TigwLCAxbiksIDBu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMSwgMW4pLCAtMW4pOworc2hvdWxkQmUoQmlnSW50
LmFzSW50TigyLCAxbiksIDFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMywgMW4pLCAxbik7
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggMmMxYWNhYWY4MDAxYTM1MmU4MmEwNzAy
NjU3NWQxNjI1MzI1OGQ1Ni4uNDRmNDhmYjI1YzQzNWU0ZTc3MzgxMzI2ZjlmNmExZjk1ZjUzNmEw
NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pT
VGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtNjc4LDY2ICs2NzgsNiBAQCB0ZXN0
L2J1aWx0LWlucy9BcnJheUl0ZXJhdG9yUHJvdG90eXBlL25leHQvZGV0YWNoLXR5cGVkYXJyYXkt
aW4tcHJvZ3Jlc3MuanM6CiB0ZXN0L2J1aWx0LWlucy9Bc3luY0dlbmVyYXRvclByb3RvdHlwZS9y
ZXR1cm4vcmV0dXJuLXN1c3BlbmRlZFlpZWxkLXByb21pc2UuanM6CiAgIGRlZmF1bHQ6ICdUZXN0
MjYyOkFzeW5jVGVzdEZhaWx1cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6IEFzeW5jR2Vu
ZXJhdG9yUmVzb2x2ZShnZW5lcmF0b3IsIHJlc3VsdFZhbHVlLCB0cnVlKSBFeHBlY3RlZCBTYW1l
VmFsdWUowqtbb2JqZWN0IFByb21pc2VdwrssIMKrdW53cmFwcGVkLXZhbHVlwrspIHRvIGJlIHRy
dWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MjpBc3luY1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJv
cjogVGVzdDI2MkVycm9yOiBBc3luY0dlbmVyYXRvclJlc29sdmUoZ2VuZXJhdG9yLCByZXN1bHRW
YWx1ZSwgdHJ1ZSkgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBQcm9taXNlXcK7LCDCq3Vu
d3JhcHBlZC12YWx1ZcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50
Ti9hcml0aG1ldGljLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRv
IGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2JpZ2ludC10b2JpZ2ludC1l
cnJvcnMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvQmlnSW50OiBubyBhcmd1bWVu
dCA9PiB1bmRlZmluZWQgPT4gVHlwZUVycm9yIEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRo
cm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6IG5vIGFyZ3VtZW50ID0+IHVuZGVmaW5lZCA9PiBUeXBl
RXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2JpZ2ludC10
b2JpZ2ludC10b3ByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9Qcmlt
aXRpdmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUo
wqt1bmRlZmluZWTCuywgwqsxwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2
MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVp
bHQtaW5zL0JpZ0ludC9hc0ludE4vYmlnaW50LXRvYmlnaW50LXdyYXBwZWQtdmFsdWVzLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGgg
aW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRv
IGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5i
b3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmlu
ZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2Jp
Z2ludC10b2JpZ2ludC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0
byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaXRzLXRvaW5kZXgtZXJy
b3JzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb0luZGV4OiB0aHJvdyB3aGVuIGlu
dGVnZXJJbmRleCA8IDAgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogVG9JbmRleDogdGhyb3cgd2hlbiBpbnRlZ2VySW5kZXggPCAwIEV4cGVjdGVkIGEgUmFuZ2VF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRl
c3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYml0cy10b2luZGV4LXRvcHJpbWl0aXZlLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtl
cyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqy0xwrspIHRv
IGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0
b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5l
ZMK7LCDCqy0xwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2Jp
dHMtdG9pbmRleC13cmFwcGVkLXZhbHVlcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
VG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNs
b3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwot
dGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaXRzLXRvaW5kZXguanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykg
dG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVW
YWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0Jp
Z0ludC9hc0ludE4vb3JkZXItb2Ytc3RlcHMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsywrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrMsK7KSB0byBi
ZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYXJpdGhtZXRpYy5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWls
dC1pbnMvQmlnSW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50LWVycm9ycy5qczoKLSAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6IG5vIGFyZ3VtZW50ID0+IHVuZGVmaW5lZCA9PiBU
eXBlRXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRp
b24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb0Jp
Z0ludDogbm8gYXJndW1lbnQgPT4gdW5kZWZpbmVkID0+IFR5cGVFcnJvciBFeHBlY3RlZCBhIFR5
cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
LXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2JpZ2ludC10b2JpZ2ludC10b3ByaW1pdGl2
ZS5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRp
dmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqsx
wrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2
ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3Vu
ZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1Vp
bnROL2JpZ2ludC10b2JpZ2ludC13cmFwcGVkLXZhbHVlcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGlu
dGVybmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBi
ZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50Lmpz
OgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmlu
ZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0
L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaXRzLXRvaW5kZXgtZXJyb3JzLmpzOgotICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBUb0luZGV4OiB0aHJvdyB3aGVuIGludGVnZXJJbmRleCA8IDAg
RXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9JbmRleDogdGhy
b3cgd2hlbiBpbnRlZ2VySW5kZXggPCAwIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL0Jp
Z0ludC9hc1VpbnROL2JpdHMtdG9pbmRleC10b3ByaW1pdGl2ZS5qczoKLSAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBF
eHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqsxwrspIHRvIGJlIHRydWUnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtl
cyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8g
YmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2JpdHMtdG9pbmRleC13cmFw
cGVkLXZhbHVlcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVu
Ym94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZp
bmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
VG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMv
QmlnSW50L2FzVWludE4vYml0cy10b2luZGV4LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0g
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmlu
ZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9v
cmRlci1vZi1zdGVwcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrMMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsywrspIHRvIGJlIHRydWUnCiB0ZXN0
L2J1aWx0LWlucy9EYXRhVmlldy9jdXN0b20tcHJvdG8tYWNjZXNzLWRldGFjaGVzLWJ1ZmZlci5q
czoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUg
dGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCiAgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398349</attachid>
            <date>2020-05-04 00:20:09 -0700</date>
            <delta_ts>2020-05-04 12:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181144-20200504002008.patch</filename>
            <type>text/plain</type>
            <size>35194</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
M2MzMmIxMjc4MThhYTRkOWI2ZjIxZDQ3NDcxZDlkY2ExOWI2YmI1Li5mNGUzNDAzNzRmYWZmNmU2
OGU2ZjQyN2U2OWEwNTY1YTdhMjY3NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNCBAQAorMjAyMC0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNV
aW50TgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
MTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIEJpZ0ludC5hc0ludE5bMV0gYW5kIEJpZ0ludC5hc1VpbnROWzJd
IGZlYXR1cmVzLgorICAgICAgICBBcyB0aGUgc2FtZSB0byB0aGUgb3RoZXIgQmlnSW50IHJ1bnRp
bWUgQysrIGNvZGUsIHdlIHBvcnQgVjggY29kZSB0byBKU0MgdG8gaW1wbGVtZW50IGJvdGguCisK
KyAgICAgICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWJpZ2ludC5hc2ludG4K
KyAgICAgICAgWzJdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWJpZ2ludC5hc3VpbnRu
CisKKyAgICAgICAgKiBydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6dG9CaWdJbnQpOgorICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnRO
KToKKyAgICAgICAgKEpTQzo6YmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKToKKyAgICAgICAg
KiBydW50aW1lL0pTQmlnSW50LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6Onplcm9JbXBs
KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6dW5hcnlNaW51c0ltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWlu
ZGVySW1wbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaWdpdERpdik6CisgICAgICAgIChK
U0M6OkpTQmlnSW50Ojphc0ludE5JbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWlu
dE5JbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRydW5jYXRlVG9OQml0cyk6CisgICAg
ICAgIChKU0M6OkpTQmlnSW50Ojp0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmFzSW50Tik6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojphc1Vp
bnROKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50Lmg6CisKIDIwMjAtMDUtMDMgIE1hY2ll
aiBTdGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgbm8gbG9uZ2Vy
IG5lZWRlZCBXZWJLaXRBZGRpdGlvbnMgaW5jbHVkZSBmb3IgSmF2YVNjcmlwdENvcmVQcmVmaXgu
aApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0
b3IuY3BwCmluZGV4IGRkOTY0ZjM4N2RhNTQwY2E1OGE0MGJiM2I2OWY5MTk0MDVjZGRiNGUuLmYw
NGJlMzg5YzY1MDg1NmIzZWMxMzcyNzA4ZTM5MzRhZTEyZjk1ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc3LDMw
ICs3NywzMiBAQCB2b2lkIEJpZ0ludENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEJpZ0ludFByb3RvdHlwZSogYmlnSW50UHJvdG90eXBlKQogCiBKU1ZhbHVlIHRvQmlnSW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJndW1lbnQpCiB7Ci0gICAgQVNT
RVJUKGFyZ3VtZW50LmlzUHJpbWl0aXZlKCkpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBK
U1ZhbHVlIHByaW1pdGl2ZSA9IGFyZ3VtZW50LnRvUHJpbWl0aXZlKGdsb2JhbE9iamVjdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAKLSAgICBpZiAoYXJndW1l
bnQuaXNCaWdJbnQoKSkKLSAgICAgICAgcmV0dXJuIGFyZ3VtZW50OworICAgIGlmIChwcmltaXRp
dmUuaXNCaWdJbnQoKSkKKyAgICAgICAgcmV0dXJuIHByaW1pdGl2ZTsKIAotICAgIGlmIChhcmd1
bWVudC5pc0Jvb2xlYW4oKSkgeworICAgIGlmIChwcmltaXRpdmUuaXNCb29sZWFuKCkpIHsKICNp
ZiBVU0UoQklHSU5UMzIpCi0gICAgICAgIHJldHVybiBqc0JpZ0ludDMyKGFyZ3VtZW50LmFzQm9v
bGVhbigpKTsKKyAgICAgICAgcmV0dXJuIGpzQmlnSW50MzIocHJpbWl0aXZlLmFzQm9vbGVhbigp
KTsKICNlbHNlCi0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgYXJndW1l
bnQuYXNCb29sZWFuKCkpOworICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZUZyb20odm0s
IHByaW1pdGl2ZS5hc0Jvb2xlYW4oKSk7CiAjZW5kaWYKICAgICB9CiAKLSAgICBpZiAoYXJndW1l
bnQuaXNTdHJpbmcoKSkgeworICAgIGlmIChwcmltaXRpdmUuaXNTdHJpbmcoKSkgewogICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIHJldHVybiB0b1N0cmluZ1ZpZXcoZ2xvYmFsT2Jq
ZWN0LCBhcmd1bWVudCwgWyZdIChTdHJpbmdWaWV3IHZpZXcpIHsKKyAgICAgICAgcmV0dXJuIHRv
U3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSwgWyZdIChTdHJpbmdWaWV3IHZpZXcp
IHsKICAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6cGFyc2VJbnQoZ2xvYmFsT2JqZWN0LCB2
aWV3KTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgQVNTRVJUKGFyZ3VtZW50LmlzVW5kZWZp
bmVkT3JOdWxsKCkgfHwgYXJndW1lbnQuaXNOdW1iZXIoKSB8fCBhcmd1bWVudC5pc1N5bWJvbCgp
KTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1
bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlvbiJfcyk7CisgICAgQVNTRVJUKHByaW1pdGl2
ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IHByaW1pdGl2ZS5pc051bWJlcigpIHx8IHByaW1pdGl2
ZS5pc1N5bWJvbCgpKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW52YWxpZCBwcmltaXRpdmUgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0xMzEsMTggKzEzMyw0NCBAQCBzdGF0aWMgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsQmlnSW50Q29uc3RydWN0b3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvQmlnSW50KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlKSkpOwogfQogCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxP
YmplY3QqLCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRD
b25zdHJ1Y3RvckZ1bmNBc1VpbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKQogewotICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxl
bWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNVaW50TgotICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNDQKLSAgICByZXR1cm4gZW5jb2RlZEpT
VW5kZWZpbmVkKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHVpbnQzMl90IGJpdHMgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYml0cyIpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9
IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBp
ZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzVWludE4oZ2xvYmFsT2JqZWN0LCBiaXRzLCBi
aWdJbnQuYmlnSW50MzJBc0ludDMyKCkpKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChiaWdJbnQu
aXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKEpTQmlnSW50Ojphc1VpbnROKGdsb2JhbE9iamVjdCwgYml0cywgYmlnSW50LmFzSGVh
cEJpZ0ludCgpKSkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENv
bnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzSW50TihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKLSAgICAvLyBG
SVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmlnSW50LmFzSW50TiBhbmQgQmlnSW50
LmFzVWludE4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgxMTQ0Ci0gICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICB1aW50MzJfdCBiaXRzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4
KGdsb2JhbE9iamVjdCwgImJpdHMiKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgSlNWYWx1ZSBiaWdJbnQgPSB0b0JpZ0ludChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisgICAg
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojph
c0ludE4oZ2xvYmFsT2JqZWN0LCBiaXRzLCBiaWdJbnQuYmlnSW50MzJBc0ludDMyKCkpKSk7Cisj
ZW5kaWYKKworICAgIEFTU0VSVChiaWdJbnQuaXNIZWFwQmlnSW50KCkpOworICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojphc0ludE4oZ2xvYmFs
T2JqZWN0LCBiaXRzLCBiaWdJbnQuYXNIZWFwQmlnSW50KCkpKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCmluZGV4
IDU5ZWZmNmVkYmU1NmFjYzMyZmE4ZDNmZWNhYzA4OWEyNTlmZjc4NzAuLjJmMTNhYzYxODRiMzcy
YjhiMmVmNjNmZDE5NmM2M2NlMTVkMzdmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAKQEAgLTU1LDggKzU1LDYgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAotI2RlZmluZSBTVEFUSUNfQVNTRVJUKGNv
bmQpIHN0YXRpY19hc3NlcnQoY29uZCwgIkpTQmlnSW50IGFzc3VtZXMgIiAjY29uZCkKLQogbmFt
ZXNwYWNlIEpTQyB7CiAKIGNvbnN0IENsYXNzSW5mbyBKU0JpZ0ludDo6c19pbmZvID0geyAiQmln
SW50IiwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0Jp
Z0ludCkgfTsKQEAgLTM5NSw2ICszOTMsMTYgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSB0cnlDb252ZXJ0VG9CaWdJbnQzMihKU0JpZ0ludDo6SW1wbFJlc3VsdCBpbXBsUmVzdWwKICAg
ICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoaW1wbFJlc3VsdC5wYXlsb2FkLmFzSGVhcEJp
Z0ludCgpKTsKIH0KIAorQUxXQVlTX0lOTElORSBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0lu
dDo6emVyb0ltcGwoVk0mIHZtKQoreworI2lmIFVTRShCSUdJTlQzMikKKyAgICBVTlVTRURfUEFS
QU0odm0pOworICAgIHJldHVybiBqc0JpZ0ludDMyKDApOworI2Vsc2UKKyAgICByZXR1cm4gSlNC
aWdJbnQ6OmNyZWF0ZVplcm8odm0pOworI2VuZGlmCit9CisKIC8vIE11bHRpcGxpZXMge3RoaXN9
IHdpdGgge2ZhY3Rvcn0gYW5kIGFkZHMge3N1bW1hbmR9IHRvIHRoZSByZXN1bHQuCiB2b2lkIEpT
QmlnSW50OjppbnBsYWNlTXVsdGlwbHlBZGQoRGlnaXQgZmFjdG9yLCBEaWdpdCBzdW1tYW5kKQog
ewpAQCAtNTY2LDEzICs1NzQsOCBAQCBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6ZGl2
aWRlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBCaWdJbnRJbQogICAgIC8vIDIu
IExldCBxdW90aWVudCBiZSB0aGUgbWF0aGVtYXRpY2FsIHZhbHVlIG9mIHggZGl2aWRlZCBieSB5
LgogICAgIC8vIDMuIFJldHVybiBhIEJpZ0ludCByZXByZXNlbnRpbmcgcXVvdGllbnQgcm91bmRl
ZCB0b3dhcmRzIDAgdG8gdGhlIG5leHQKICAgICAvLyAgICBpbnRlZ3JhbCB2YWx1ZS4KLSAgICBp
ZiAoYWJzb2x1dGVDb21wYXJlKHgsIHkpID09IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuKSB7
Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNl
Ci0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7Ci0jZW5kaWYKLSAgICB9
CisgICAgaWYgKGFic29sdXRlQ29tcGFyZSh4LCB5KSA9PSBDb21wYXJpc29uUmVzdWx0OjpMZXNz
VGhhbikKKyAgICAgICAgcmV0dXJuIHplcm9JbXBsKHZtKTsKIAogICAgIEpTQmlnSW50KiBxdW90
aWVudCA9IG51bGxwdHI7CiAgICAgYm9vbCByZXN1bHRTaWduID0geC5zaWduKCkgIT0geS5zaWdu
KCk7CkBAIC02MjIsMTMgKzYyNSw4IEBAIEpTQmlnSW50KiBKU0JpZ0ludDo6Y29weShWTSYgdm0s
IEJpZ0ludEltcGwgeCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgogSlNCaWdJbnQ6
OkltcGxSZXN1bHQgSlNCaWdJbnQ6OnVuYXJ5TWludXNJbXBsKFZNJiB2bSwgQmlnSW50SW1wbCB4
KQogewotICAgIGlmICh4LmlzWmVybygpKSB7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICBy
ZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNlCi0gICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3Jl
YXRlWmVybyh2bSk7Ci0jZW5kaWYKLSAgICB9CisgICAgaWYgKHguaXNaZXJvKCkpCisgICAgICAg
IHJldHVybiB6ZXJvSW1wbCh2bSk7CiAKICAgICBKU0JpZ0ludCogcmVzdWx0ID0gY29weSh2bSwg
eCk7CiAgICAgcmVzdWx0LT5zZXRTaWduKCF4LnNpZ24oKSk7CkBAIC02NjAsMjMgKzY1OCwxMyBA
QCBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6cmVtYWluZGVySW1wbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBCaWdJbgogICAgIEpTQmlnSW50KiByZW1haW5kZXI7CiAgICAg
aWYgKHkubGVuZ3RoKCkgPT0gMSkgewogICAgICAgICBEaWdpdCBkaXZpc29yID0geS5kaWdpdCgw
KTsKLSAgICAgICAgaWYgKGRpdmlzb3IgPT0gMSkgewotI2lmIFVTRShCSUdJTlQzMikKLSAgICAg
ICAgcmV0dXJuIGpzQmlnSW50MzIoMCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6
OmNyZWF0ZVplcm8odm0pOwotI2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgaWYgKGRpdmlzb3Ig
PT0gMSkKKyAgICAgICAgICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CiAKICAgICAgICAgRGlnaXQg
cmVtYWluZGVyRGlnaXQ7CiAgICAgICAgIGFic29sdXRlRGl2V2l0aERpZ2l0RGl2aXNvcih2bSwg
eCwgZGl2aXNvciwgbnVsbHB0ciwgcmVtYWluZGVyRGlnaXQpOwotICAgICAgICBpZiAoIXJlbWFp
bmRlckRpZ2l0KSB7Ci0jaWYgVVNFKEJJR0lOVDMyKQotICAgICAgICAgICAgcmV0dXJuIGpzQmln
SW50MzIoMCk7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJv
KHZtKTsKLSNlbmRpZgotICAgICAgICB9CisgICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQpCisg
ICAgICAgICAgICByZXR1cm4gemVyb0ltcGwodm0pOwogCiAgICAgICAgIHJlbWFpbmRlciA9IGNy
ZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0sIDEpOwogICAgICAgICByZW1haW5kZXItPnNldERp
Z2l0KDAsIHJlbWFpbmRlckRpZ2l0KTsKQEAgLTExODUsNyArMTE3Myw3IEBAIGlubGluZSBKU0Jp
Z0ludDo6RGlnaXQgSlNCaWdJbnQ6OmRpZ2l0RGl2KERpZ2l0IGhpZ2gsIERpZ2l0IGxvdywgRGln
aXQgZGl2aXNvciwKICAgICAvLyBsZWZ0IG9wZXJhbmQiLiBXZSBtYXNrIHRoZSByaWdodCBvcGVy
YW5kIG9mIHRoZSBzaGlmdCBieSB7c2hpZnRNYXNrfSAoYGRpZ2l0Qml0cyAtIDFgKSwgd2hpY2gg
bWFrZXMgYGRpZ2l0Qml0cyAtIDBgIHplcm8uCiAgICAgLy8gVGhpcyBzaGlmdGluZyBwcm9kdWNl
cyBhIHZhbHVlIHdoaWNoIGNvdmVycyAwIDwge3N9IDw9IChkaWdpdEJpdHMgLSAxKSBjYXNlcy4g
e3N9ID09IGRpZ2l0Qml0cyBuZXZlciBoYXBwZW4gYXMgd2UgYXNzZXJ0ZWQuCiAgICAgLy8gU2lu
Y2Uge3NaZXJvTWFza30gY2xlYXJzIHRoZSB2YWx1ZSBpbiB0aGUgY2FzZSBvZiB7c30gPT0gMCwg
e3N9ID09IDAgY2FzZSBpcyBhbHNvIGNvdmVyZWQuCi0gICAgU1RBVElDX0FTU0VSVChzaXplb2Yo
Q1BVUmVnaXN0ZXIpID09IHNpemVvZihEaWdpdCkpOworICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KENQVVJlZ2lzdGVyKSA9PSBzaXplb2YoRGlnaXQpKTsKICAgICBEaWdpdCBzWmVyb01hc2sgPSBz
dGF0aWNfY2FzdDxEaWdpdD4oKC1zdGF0aWNfY2FzdDxDUFVSZWdpc3Rlcj4ocykpID4+IChkaWdp
dEJpdHMgLSAxKSk7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaGlmdE1hc2sgPSBk
aWdpdEJpdHMgLSAxOwogICAgIERpZ2l0IHVuMzIgPSAoaGlnaCA8PCBzKSB8ICgobG93ID4+ICgo
ZGlnaXRCaXRzIC0gcykgJiBzaGlmdE1hc2spKSAmIHNaZXJvTWFzayk7CkBAIC0yNzMxLDQgKzI3
MTksMjA1IEBAIEpTVmFsdWUgSlNCaWdJbnQ6OnRvTnVtYmVySGVhcChKU0JpZ0ludCogYmlnSW50
KQogICAgIHJldHVybiBqc051bWJlcihiaXR3aXNlX2Nhc3Q8ZG91YmxlPihkb3VibGVCaXRzKSk7
CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorSlNCaWdJbnQ6OkltcGxSZXN1
bHQgSlNCaWdJbnQ6OmFzSW50TkltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWlu
dDY0X3QgbiwgQmlnSW50SW1wbCBiaWdJbnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworCisgICAgaWYgKGJpZ0ludC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIGJpZ0lu
dDsKKyAgICBpZiAobiA9PSAwKQorICAgICAgICByZXR1cm4gemVyb0ltcGwodm0pOworCisgICAg
dWludDY0X3QgbmVlZGVkTGVuZ3RoID0gKG4gKyBkaWdpdEJpdHMgLSAxKSAvIGRpZ2l0Qml0czsK
KyAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYmlnSW50Lmxlbmd0
aCgpKTsKKyAgICAvLyBJZiBiaWdJbnQgaGFzIGxlc3MgdGhhbiBuIGJpdHMsIHJldHVybiBpdCBk
aXJlY3RseS4KKyAgICBpZiAobGVuZ3RoIDwgbmVlZGVkTGVuZ3RoKQorICAgICAgICByZXR1cm4g
YmlnSW50OworICAgIEFTU0VSVChuZWVkZWRMZW5ndGggPD0gSU5UMzJfTUFYKTsKKyAgICBEaWdp
dCB0b3BEaWdpdCA9IGJpZ0ludC5kaWdpdChzdGF0aWNfY2FzdDxpbnQzMl90PihuZWVkZWRMZW5n
dGgpIC0gMSk7CisgICAgRGlnaXQgY29tcGFyZURpZ2l0ID0gc3RhdGljX2Nhc3Q8RGlnaXQ+KDEp
IDw8ICgobiAtIDEpICUgZGlnaXRCaXRzKTsKKyAgICBpZiAobGVuZ3RoID09IG5lZWRlZExlbmd0
aCAmJiB0b3BEaWdpdCA8IGNvbXBhcmVEaWdpdCkKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKwor
ICAgIC8vIE90aGVyd2lzZSB3ZSBoYXZlIHRvIHRydW5jYXRlICh3aGljaCBpcyBhIG5vLW9wIGlu
IHRoZSBzcGVjaWFsIGNhc2UKKyAgICAvLyBvZiBiaWdJbnQgPT0gLTJeKG4tMSkpLCBhbmQgZGV0
ZXJtaW5lIHRoZSByaWdodCBzaWduLiBXZSBhbHNvIG1pZ2h0IGhhdmUKKyAgICAvLyB0byBzdWJ0
cmFjdCBmcm9tIDJebiB0byBzaW11bGF0ZSBoYXZpbmcgdHdvJ3MgY29tcGxlbWVudCByZXByZXNl
bnRhdGlvbi4KKyAgICAvLyBJbiBtb3N0IGNhc2VzLCB0aGUgcmVzdWx0J3Mgc2lnbiBpcyBiaWdJ
bnQuc2lnbigpIHhvciAiKG4tMSl0aCBiaXQgcHJlc2VudCIuCisgICAgLy8gVGhlIG9ubHkgZXhj
ZXB0aW9uIGlzIHdoZW4gYmlnSW50IGlzIG5lZ2F0aXZlLCBoYXMgdGhlIChuLTEpdGggYml0LCBh
bmQgYWxsCisgICAgLy8gaXRzIGJpdHMgYmVsb3cgKG4tMSkgYXJlIHplcm8uIEluIHRoYXQgY2Fz
ZSwgdGhlIHJlc3VsdCBpcyB0aGUgbWluaW11bQorICAgIC8vIG4tYml0IGludGVnZXIgKGV4YW1w
bGU6IGFzSW50TigzLCAtMTJuKSA9PiAtNG4pLgorICAgIGJvb2wgaGFzQml0ID0gKHRvcERpZ2l0
ICYgY29tcGFyZURpZ2l0KSA9PSBjb21wYXJlRGlnaXQ7CisgICAgQVNTRVJUKG4gPD0gSU5UMzJf
TUFYKTsKKyAgICBpbnQzMl90IE4gPSBzdGF0aWNfY2FzdDxpbnQzMl90PihuKTsKKyAgICBpZiAo
IWhhc0JpdCkKKyAgICAgICAgcmV0dXJuIHRydW5jYXRlVG9OQml0cyh2bSwgTiwgYmlnSW50KTsK
KyAgICBpZiAoIWJpZ0ludC5zaWduKCkpCisgICAgICAgIHJldHVybiB0cnVuY2F0ZUFuZFN1YkZy
b21Qb3dlck9mVHdvKHZtLCBOLCBiaWdJbnQsIHRydWUpOworCisgICAgLy8gTmVnYXRpdmUgbnVt
YmVycyBtdXN0IHN1YnRyYWN0IGZyb20gMl5uLCBleGNlcHQgZm9yIHRoZSBzcGVjaWFsIGNhc2UK
KyAgICAvLyBkZXNjcmliZWQgYWJvdmUuCisgICAgaWYgKCh0b3BEaWdpdCAmIChjb21wYXJlRGln
aXQgLSAxKSkgPT0gMCkgeworICAgICAgICBmb3IgKGludDMyX3QgaSA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG5lZWRlZExlbmd0aCkgLSAyOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgaWYg
KGJpZ0ludC5kaWdpdChpKSAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVuY2F0ZUFu
ZFN1YkZyb21Qb3dlck9mVHdvKHZtLCBOLCBiaWdJbnQsIGZhbHNlKTsKKyAgICAgICAgfQorICAg
ICAgICAvLyBUcnVuY2F0aW9uIGlzIG5vLW9wIGlmIGJpZ0ludCA9PSAtMl4obi0xKS4KKyAgICAg
ICAgaWYgKGxlbmd0aCA9PSBuZWVkZWRMZW5ndGggJiYgdG9wRGlnaXQgPT0gY29tcGFyZURpZ2l0
KQorICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICAgICAgcmV0dXJuIHRydW5jYXRlVG9O
Qml0cyh2bSwgTiwgYmlnSW50KTsKKyAgICB9CisgICAgcmV0dXJuIHRydW5jYXRlQW5kU3ViRnJv
bVBvd2VyT2ZUd28odm0sIE4sIGJpZ0ludCwgZmFsc2UpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQmlnSW50SW1wbD4KK0pTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojphc1VpbnROSW1w
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBCaWdJbnRJbXBsIGJp
Z0ludCkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGJpZ0ludC5pc1plcm8oKSkK
KyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICBpZiAobiA9PSAwKQorICAgICAgICByZXR1cm4g
emVyb0ltcGwodm0pOworCisgICAgLy8gSWYgYmlnSW50IGlzIG5lZ2F0aXZlLCBzaW11bGF0ZSB0
d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgorICAgIGlmIChiaWdJbnQuc2lnbigpKSB7
CisgICAgICAgIGlmIChuID4gbWF4TGVuZ3RoQml0cykgeworICAgICAgICAgICAgdGhyb3dPdXRP
Zk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20g
dGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3
byh2bSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obiksIGJpZ0ludCwgZmFsc2UpOworICAgIH0KKwor
ICAgIC8vIElmIGJpZ0ludCBpcyBwb3NpdGl2ZSBhbmQgaGFzIHVwIHRvIG4gYml0cywgcmV0dXJu
IGl0IGRpcmVjdGx5LgorICAgIGlmIChuID49IG1heExlbmd0aEJpdHMpCisgICAgICAgIHJldHVy
biBiaWdJbnQ7CisgICAgc3RhdGljX2Fzc2VydChtYXhMZW5ndGhCaXRzIDwgSU5UMzJfTUFYIC0g
ZGlnaXRCaXRzKTsKKyAgICBpbnQzMl90IG5lZWRlZExlbmd0aCA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KChuICsgZGlnaXRCaXRzIC0gMSkgLyBkaWdpdEJpdHMpOworICAgIGlmIChzdGF0aWNfY2Fz
dDxpbnQzMl90PihiaWdJbnQubGVuZ3RoKCkpIDwgbmVlZGVkTGVuZ3RoKQorICAgICAgICByZXR1
cm4gYmlnSW50OworCisgICAgaW50MzJfdCBiaXRzSW5Ub3BEaWdpdCA9IG4gJSBkaWdpdEJpdHM7
CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGJpZ0ludC5sZW5ndGgoKSkgPT0gbmVlZGVk
TGVuZ3RoKSB7CisgICAgICAgIGlmIChiaXRzSW5Ub3BEaWdpdCA9PSAwKQorICAgICAgICAgICAg
cmV0dXJuIGJpZ0ludDsKKyAgICAgICAgRGlnaXQgdG9wRGlnaXQgPSBiaWdJbnQuZGlnaXQobmVl
ZGVkTGVuZ3RoIC0gMSk7CisgICAgICAgIGlmICgodG9wRGlnaXQgPj4gYml0c0luVG9wRGlnaXQp
ID09IDApCisgICAgICAgICAgICByZXR1cm4gYmlnSW50OworICAgIH0KKworICAgIC8vIE90aGVy
d2lzZSwgdHJ1bmNhdGUuCisgICAgQVNTRVJUKG4gPD0gSU5UMzJfTUFYKTsKKyAgICByZXR1cm4g
dHJ1bmNhdGVUb05CaXRzKHZtLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuKSwgYmlnSW50KTsKK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CitKU0JpZ0ludDo6SW1wbFJlc3VsdCBK
U0JpZ0ludDo6dHJ1bmNhdGVUb05CaXRzKFZNJiB2bSwgaW50MzJfdCBuLCBCaWdJbnRJbXBsIGJp
Z0ludCkKK3sKKyAgICBBU1NFUlQobiAhPSAwKTsKKyAgICBBU1NFUlQoYmlnSW50Lmxlbmd0aCgp
ID4gbiAvIGRpZ2l0Qml0cyk7CisKKyAgICBpbnQzMl90IG5lZWRlZERpZ2l0cyA9IChuICsgKGRp
Z2l0Qml0cyAtIDEpKSAvIGRpZ2l0Qml0czsKKyAgICBBU1NFUlQobmVlZGVkRGlnaXRzIDw9IHN0
YXRpY19jYXN0PGludDMyX3Q+KGJpZ0ludC5sZW5ndGgoKSkpOworICAgIEpTQmlnSW50KiByZXN1
bHQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCBuZWVkZWREaWdpdHMpOworICAgIEFT
U0VSVChyZXN1bHQpOworCisgICAgLy8gQ29weSBhbGwgZGlnaXRzIGV4Y2VwdCB0aGUgTVNELgor
ICAgIGludDMyX3QgbGFzdCA9IG5lZWRlZERpZ2l0cyAtIDE7CisgICAgZm9yIChpbnQzMl90IGkg
PSAwOyBpIDwgbGFzdDsgaSsrKQorICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGJpZ0ludC5k
aWdpdChpKSk7CisKKyAgICAvLyBUaGUgTVNEIG1pZ2h0IGNvbnRhaW4gZXh0cmEgYml0cyB0aGF0
IHdlIGRvbid0IHdhbnQuCisgICAgRGlnaXQgbXNkID0gYmlnSW50LmRpZ2l0KGxhc3QpOworICAg
IGlmIChuICUgZGlnaXRCaXRzICE9IDApIHsKKyAgICAgICAgaW50MzJfdCBkcm9wID0gZGlnaXRC
aXRzIC0gKG4gJSBkaWdpdEJpdHMpOworICAgICAgICBtc2QgPSAobXNkIDw8IGRyb3ApID4+IGRy
b3A7CisgICAgfQorICAgIHJlc3VsdC0+c2V0RGlnaXQobGFzdCwgbXNkKTsKKyAgICByZXN1bHQt
PnNldFNpZ24oYmlnSW50LnNpZ24oKSk7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZt
KTsKK30KKworLy8gU3VidHJhY3RzIHRoZSBsZWFzdCBzaWduaWZpY2FudCBuIGJpdHMgb2YgYWJz
KGJpZ0ludCkgZnJvbSAyXm4uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KK0pTQmln
SW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojp0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKFZN
JiB2bSwgaW50MzJfdCBuLCBCaWdJbnRJbXBsIGJpZ0ludCwgYm9vbCByZXN1bHRTaWduKQorewor
ICAgIEFTU0VSVChuICE9IDApOworICAgIEFTU0VSVChuIDw9IHN0YXRpY19jYXN0PGludDMyX3Q+
KG1heExlbmd0aEJpdHMpKTsKKworICAgIGludDMyX3QgbmVlZGVkRGlnaXRzID0gKG4gKyAoZGln
aXRCaXRzIC0gMSkpIC8gZGlnaXRCaXRzOworICAgIEFTU0VSVChuZWVkZWREaWdpdHMgPD0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obWF4TGVuZ3RoKSk7IC8vIEZvbGxvd3MgZnJvbSBuIDw9IG1heExl
bmd0aEJpdHMuCisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNr
ZWQodm0sIG5lZWRlZERpZ2l0cyk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICAvLyBQcm9j
ZXNzIGFsbCBkaWdpdHMgZXhjZXB0IHRoZSBNU0QuCisgICAgaW50MzJfdCBpID0gMDsKKyAgICBp
bnQzMl90IGxhc3QgPSBuZWVkZWREaWdpdHMgLSAxOworICAgIGludDMyX3QgbGVuZ3RoID0gYmln
SW50Lmxlbmd0aCgpOworICAgIERpZ2l0IGJvcnJvdyA9IDA7CisgICAgLy8gVGFrZSBkaWdpdHMg
ZnJvbSBiaWdJbnQgdW5sZXNzIGl0cyBsZW5ndGggaXMgZXhoYXVzdGVkLgorICAgIGludDMyX3Qg
bGltaXQgPSBzdGQ6Om1pbihsYXN0LCBsZW5ndGgpOworICAgIGZvciAoOyBpIDwgbGltaXQ7IGkr
KykgeworICAgICAgICBEaWdpdCBuZXdCb3Jyb3cgPSAwOworICAgICAgICBEaWdpdCBkaWZmZXJl
bmNlID0gZGlnaXRTdWIoMCwgYmlnSW50LmRpZ2l0KGkpLCBuZXdCb3Jyb3cpOworICAgICAgICBk
aWZmZXJlbmNlID0gZGlnaXRTdWIoZGlmZmVyZW5jZSwgYm9ycm93LCBuZXdCb3Jyb3cpOworICAg
ICAgICByZXN1bHQtPnNldERpZ2l0KGksIGRpZmZlcmVuY2UpOworICAgICAgICBib3Jyb3cgPSBu
ZXdCb3Jyb3c7CisgICAgfQorICAgIC8vIFRoZW4gc2ltdWxhdGUgbGVhZGluZyB6ZXJvZXMgaW4g
e2JpZ0ludH0gYXMgbmVlZGVkLgorICAgIGZvciAoOyBpIDwgbGFzdDsgaSsrKSB7CisgICAgICAg
IERpZ2l0IG5ld0JvcnJvdyA9IDA7CisgICAgICAgIERpZ2l0IGRpZmZlcmVuY2UgPSBkaWdpdFN1
YigwLCBib3Jyb3csIG5ld0JvcnJvdyk7CisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQoaSwgZGlm
ZmVyZW5jZSk7CisgICAgICAgIGJvcnJvdyA9IG5ld0JvcnJvdzsKKyAgICB9CisKKyAgICAvLyBU
aGUgTVNEIG1pZ2h0IGNvbnRhaW4gZXh0cmEgYml0cyB0aGF0IHdlIGRvbid0IHdhbnQuCisgICAg
RGlnaXQgbXNkID0gbGFzdCA8IGxlbmd0aCA/IGJpZ0ludC5kaWdpdChsYXN0KSA6IDA7CisgICAg
aW50MzJfdCBtc2RCaXRzQ29uc3VtZWQgPSBuICUgZGlnaXRCaXRzOworICAgIERpZ2l0IHJlc3Vs
dE1TRDsKKyAgICBpZiAobXNkQml0c0NvbnN1bWVkID09IDApIHsKKyAgICAgICAgRGlnaXQgbmV3
Qm9ycm93ID0gMDsKKyAgICAgICAgcmVzdWx0TVNEID0gZGlnaXRTdWIoMCwgbXNkLCBuZXdCb3Jy
b3cpOworICAgICAgICByZXN1bHRNU0QgPSBkaWdpdFN1YihyZXN1bHRNU0QsIGJvcnJvdywgbmV3
Qm9ycm93KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQzMl90IGRyb3AgPSBkaWdpdEJpdHMg
LSBtc2RCaXRzQ29uc3VtZWQ7CisgICAgICAgIG1zZCA9IChtc2QgPDwgZHJvcCkgPj4gZHJvcDsK
KyAgICAgICAgRGlnaXQgbWludWVuZE1TRCA9IHN0YXRpY19jYXN0PERpZ2l0PigxKSA8PCAoZGln
aXRCaXRzIC0gZHJvcCk7CisgICAgICAgIERpZ2l0IG5ld0JvcnJvdyA9IDA7CisgICAgICAgIHJl
c3VsdE1TRCA9IGRpZ2l0U3ViKG1pbnVlbmRNU0QsIG1zZCwgbmV3Qm9ycm93KTsKKyAgICAgICAg
cmVzdWx0TVNEID0gZGlnaXRTdWIocmVzdWx0TVNELCBib3Jyb3csIG5ld0JvcnJvdyk7CisgICAg
ICAgIEFTU0VSVChuZXdCb3Jyb3cgPT0gMCk7IC8vIHJlc3VsdCA8IDJebi4KKyAgICAgICAgLy8g
SWYgYWxsIHN1YnRyYWN0ZWQgYml0cyB3ZXJlIHplcm8sIHdlIGhhdmUgdG8gZ2V0IHJpZCBvZiB0
aGUKKyAgICAgICAgLy8gbWF0ZXJpYWxpemVkIG1pbnVlbmRNU0QgYWdhaW4uCisgICAgICAgIHJl
c3VsdE1TRCAmPSAobWludWVuZE1TRCAtIDEpOworICAgIH0KKyAgICByZXN1bHQtPnNldERpZ2l0
KGxhc3QsIHJlc3VsdE1TRCk7CisgICAgcmVzdWx0LT5zZXRTaWduKHJlc3VsdFNpZ24pOworICAg
IHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7Cit9CisKK0pTVmFsdWUgSlNCaWdJbnQ6OmFz
SW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBKU0JpZ0ludCog
YmlnSW50KQoreworICAgIHJldHVybiB0cnlDb252ZXJ0VG9CaWdJbnQzMihhc0ludE5JbXBsKGds
b2JhbE9iamVjdCwgbiwgSGVhcEJpZ0ludEltcGwgeyBiaWdJbnQgfSkpOworfQorCitKU1ZhbHVl
IEpTQmlnSW50Ojphc1VpbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90
IG4sIEpTQmlnSW50KiBiaWdJbnQpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0JpZ0ludDMy
KGFzVWludE5JbXBsKGdsb2JhbE9iamVjdCwgbiwgSGVhcEJpZ0ludEltcGwgeyBiaWdJbnQgfSkp
OworfQorCisjaWYgVVNFKEJJR0lOVDMyKQorSlNWYWx1ZSBKU0JpZ0ludDo6YXNJbnROKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2NF90IG4sIGludDMyX3QgYmlnSW50KQorewor
ICAgIHJldHVybiB0cnlDb252ZXJ0VG9CaWdJbnQzMihhc0ludE5JbXBsKGdsb2JhbE9iamVjdCwg
biwgSW50MzJCaWdJbnRJbXBsIHsgYmlnSW50IH0pKTsKK30KKworSlNWYWx1ZSBKU0JpZ0ludDo6
YXNVaW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBpbnQzMl90
IGJpZ0ludCkKK3sKKyAgICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoYXNVaW50TkltcGwo
Z2xvYmFsT2JqZWN0LCBuLCBJbnQzMkJpZ0ludEltcGwgeyBiaWdJbnQgfSkpOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmln
SW50LmgKaW5kZXggN2E0OWQwZmQyYzZjMTlmNDE5NWQ2OThiYWI0MGQyY2IxYjNjY2YxMi4uZDg4
YjBhMjgxMmNmZGUzZjZmOTEzZWM2MzNmOWJmNTA2ZjI3NmQzZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JpZ0ludC5oCkBAIC00MTIsNiArNDEyLDE0IEBAIGNsYXNzIEpTQmln
SW50IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJldHVybiB0b051bWJlckhlYXAo
anNDYXN0PEpTQmlnSW50Kj4oYmlnSW50KSk7CiAgICAgfQogCisKKyAgICBzdGF0aWMgSlNWYWx1
ZSBhc0ludE4oSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCwgSlNCaWdJbnQqKTsKKyAgICBzdGF0
aWMgSlNWYWx1ZSBhc1VpbnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIEpTQmlnSW50Kik7
CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBKU1ZhbHVlIGFzSW50TihKU0dsb2JhbE9i
amVjdCosIHVpbnQ2NF90LCBpbnQzMl90KTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBhc1VpbnROKEpT
R2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIGludDMyX3QpOworI2VuZGlmCisKICAgICBEaWdpdCBk
aWdpdCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXREaWdpdCh1bnNpZ25lZCwgRGlnaXQpOyAvLyBV
c2Ugb25seSB3aGVuIGluaXRpYWxpemluZy4KICAgICBKU19FWFBPUlRfUFJJVkFURSBKU0JpZ0lu
dCogcmlnaHRUcmltKFZNJik7CkBAIC01NDEsNiArNTQ5LDE3IEBAIGNsYXNzIEpTQmlnSW50IGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+
CiAgICAgc3RhdGljIE9wdGlvbmFsPERpZ2l0PiB0b1NoaWZ0QW1vdW50KEJpZ0ludEltcGwgeCk7
CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KKyAgICBzdGF0aWMgSW1wbFJl
c3VsdCBhc0ludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIEJpZ0ludEltcGwpOwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0
IGFzVWludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIEJpZ0ludEltcGwpOworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0IHRy
dW5jYXRlVG9OQml0cyhWTSYsIGludDMyX3QsIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBCaWdJbnRJbXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0IHRydW5jYXRlQW5kU3Vi
RnJvbVBvd2VyT2ZUd28oVk0mLCBpbnQzMl90LCBCaWdJbnRJbXBsLCBib29sIHJlc3VsdFNpZ24p
OworCisgICAgc3RhdGljIEltcGxSZXN1bHQgemVyb0ltcGwoVk0mKTsKKwogICAgIGlubGluZSBz
dGF0aWMgc2l6ZV90IG9mZnNldE9mRGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4gT0JKRUNU
X09GRlNFVE9GKEpTQmlnSW50LCBtX2RhdGEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VM
b2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBhZTk4MGFhYWE1NzYxZDM1ZjQxZjRlNmYwOWQw
ZDY5OTc2ZjEyN2Y4Li4zNDg1NjI1YWEyMmVlMWVlNjZkNTk1MzQ4YzRkZWFkNGNlMjU0OWI1IDEw
MDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDIwLTA1LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5h
c1VpbnROCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
ODExNDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHN0cmVzcy9iaWdpbnQtYXNpbnRuLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAg
ICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKiBzdHJlc3MvYmlnaW50LWFzdWludG4uanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAg
ICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6CisKIDIwMjAtMDUtMDEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggc3RyZXNzL2JpZy1pbnQt
bmVnYXRlLWppdC5qcwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnaW50LWFzaW50bi5q
cyBiL0pTVGVzdHMvc3RyZXNzL2JpZ2ludC1hc2ludG4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDM5YjZiMmMz
YzZkYTU0OWNkNjMyMGY5NTkwZTg2Y2EwYWZhNDE4YgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvc3RyZXNzL2JpZ2ludC1hc2ludG4uanMKQEAgLTAsMCArMSw4MyBAQAorZnVuY3Rpb24gc2hv
dWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1
bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRo
cm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAg
ZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOwor
ICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAg
IHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9
PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0
cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBCaWdJbnQuYXNJ
bnROKC0xLCAwbikKK30sIGBSYW5nZUVycm9yOiBiaXRzIGNhbm5vdCBiZSBuZWdhdGl2ZWApOwor
CitzaG91bGRCZShCaWdJbnQuYXNJbnROKC0wLCAwbiksIDBuKTsKKworc2hvdWxkQmUoQmlnSW50
LmFzSW50TigwLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMSwgMG4pLCAwbik7
CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDIsIDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFz
SW50TigzLCAwbiksIDBuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50TigwLCAxbiksIDBuKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMSwgMW4pLCAtMW4pOworc2hvdWxkQmUoQmlnSW50LmFz
SW50TigyLCAxbiksIDFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMywgMW4pLCAxbik7CisK
K3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzAsIDB4N2ZmZmZmZmZuKSwgLTFuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc0ludE4oMzEsIDB4N2ZmZmZmZmZuKSwgLTFuKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c0ludE4oMzIsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFz
SW50TigzMywgMHg3ZmZmZmZmZm4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQuYXNJ
bnROKDM0LCAweDdmZmZmZmZmbiksIDIxNDc0ODM2NDduKTsKKworc2hvdWxkQmUoQmlnSW50LmFz
SW50TigzMCwgMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMxLCAw
eDgwMDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzIsIDB4ODAwMDAwMDBu
KSwgLTIxNDc0ODM2NDhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzMsIDB4ODAwMDAwMDBu
KSwgMjE0NzQ4MzY0OG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzNCwgMHg4MDAwMDAwMG4p
LCAyMTQ3NDgzNjQ4bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzAsIC0weDgwMDAwMDAw
biksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzEsIC0weDgwMDAwMDAwbiksIDBuKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzIsIC0weDgwMDAwMDAwbiksIC0yMTQ3NDgzNjQ4bik7
CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMzLCAtMHg4MDAwMDAwMG4pLCAtMjE0NzQ4MzY0OG4p
Oworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzNCwgLTB4ODAwMDAwMDBuKSwgLTIxNDc0ODM2NDhu
KTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzMCwgLTB4ODAwMDAwMDFuKSwgLTFuKTsKK3No
b3VsZEJlKEJpZ0ludC5hc0ludE4oMzEsIC0weDgwMDAwMDAxbiksIC0xbik7CitzaG91bGRCZShC
aWdJbnQuYXNJbnROKDMyLCAtMHg4MDAwMDAwMW4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShC
aWdJbnQuYXNJbnROKDMzLCAtMHg4MDAwMDAwMW4pLCAtMjE0NzQ4MzY0OW4pOworc2hvdWxkQmUo
QmlnSW50LmFzSW50TigzNCwgLTB4ODAwMDAwMDFuKSwgLTIxNDc0ODM2NDluKTsKKworc2hvdWxk
QmUoQmlnSW50LmFzSW50Tig2MiwgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIC0xbik7CitzaG91bGRC
ZShCaWdJbnQuYXNJbnROKDYzLCAweDdmZmZmZmZmZmZmZmZmZmZuKSwgLTFuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc0ludE4oNjQsIDB4N2ZmZmZmZmZmZmZmZmZmZm4pLCA5MjIzMzcyMDM2ODU0Nzc1
ODA3bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY1LCAweDdmZmZmZmZmZmZmZmZmZmZuKSwg
OTIyMzM3MjAzNjg1NDc3NTgwN24pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2NiwgMHg3ZmZm
ZmZmZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKworc2hvdWxkQmUoQmlnSW50
LmFzSW50Tig2MiwgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c0ludE4oNjMsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJ
bnROKDY0LCAweDgwMDAwMDAwMDAwMDAwMDBuKSwgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsKK3No
b3VsZEJlKEJpZ0ludC5hc0ludE4oNjUsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCA5MjIzMzcyMDM2
ODU0Nzc1ODA4bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY2LCAweDgwMDAwMDAwMDAwMDAw
MDBuKSwgOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworCitzaG91bGRCZShCaWdJbnQuYXNJbnROKDYy
LCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OG4pOworc2hvdWxkQmUo
QmlnSW50LmFzSW50Tig2MywgLTB4ODAwMDAwMDAwMDAwMDAwbiksIC01NzY0NjA3NTIzMDM0MjM0
ODhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjQsIC0weDgwMDAwMDAwMDAwMDAwMG4pLCAt
NTc2NDYwNzUyMzAzNDIzNDg4bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY1LCAtMHg4MDAw
MDAwMDAwMDAwMDBuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OG4pOworc2hvdWxkQmUoQmlnSW50LmFz
SW50Tig2NiwgLTB4ODAwMDAwMDAwMDAwMDAwbiksIC01NzY0NjA3NTIzMDM0MjM0ODhuKTsKKwor
c2hvdWxkQmUoQmlnSW50LmFzSW50Tig2MiwgLTB4ODAwMDAwMDAwMDAwMDAxbiksIC01NzY0NjA3
NTIzMDM0MjM0ODluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjMsIC0weDgwMDAwMDAwMDAw
MDAwMW4pLCAtNTc2NDYwNzUyMzAzNDIzNDg5bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY0
LCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OW4pOworc2hvdWxkQmUo
QmlnSW50LmFzSW50Tig2NSwgLTB4ODAwMDAwMDAwMDAwMDAxbiksIC01NzY0NjA3NTIzMDM0MjM0
ODluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjYsIC0weDgwMDAwMDAwMDAwMDAwMW4pLCAt
NTc2NDYwNzUyMzAzNDIzNDg5bik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQt
YXN1aW50bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZ2ludC1hc3VpbnRuLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZhNTlmNTNlMmE3MTU0MjJhYWFiZmE0ZjZkZWI0ZDZlOTEyZDg2MGYKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXN1aW50bi5qcwpAQCAtMCwwICsxLDEwNyBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09
IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVh
bCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAg
ICBCaWdJbnQuYXNVaW50TigtMSwgMG4pCit9LCBgUmFuZ2VFcnJvcjogYml0cyBjYW5ub3QgYmUg
bmVnYXRpdmVgKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oLTAsIDBuKSwgMG4pOworc2hv
dWxkQmUoQmlnSW50LmFzVWludE4oMCwgMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50
TigxLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDIsIDBuKSwgMG4pOworc2hv
dWxkQmUoQmlnSW50LmFzVWludE4oMywgMG4pLCAwbik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc1Vp
bnROKDAsIDFuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMSwgMW4pLCAxbik7Citz
aG91bGRCZShCaWdJbnQuYXNVaW50TigyLCAxbiksIDFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1Vp
bnROKDMsIDFuKSwgMW4pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMCwgMHg3ZmZmZmZm
Zm4pLCAxMDczNzQxODIzbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMSwgMHg3ZmZmZmZm
Zm4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMiwgMHg3ZmZmZmZm
Zm4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMywgMHg3ZmZmZmZm
Zm4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzNCwgMHg3ZmZmZmZm
Zm4pLCAyMTQ3NDgzNjQ3bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMwLCAweDgwMDAw
MDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMxLCAweDgwMDAwMDAwbiksIDBu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMyLCAweDgwMDAwMDAwbiksIDIxNDc0ODM2NDhu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMzLCAweDgwMDAwMDAwbiksIDIxNDc0ODM2NDhu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDM0LCAweDgwMDAwMDAwbiksIDIxNDc0ODM2NDhu
KTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzAsIDB4ZmZmZmZmZmZuKSwgMTA3Mzc0MTgy
M24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzEsIDB4ZmZmZmZmZmZuKSwgMjE0NzQ4MzY0
N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzIsIDB4ZmZmZmZmZmZuKSwgNDI5NDk2NzI5
NW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzMsIDB4ZmZmZmZmZmZuKSwgNDI5NDk2NzI5
NW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzQsIDB4ZmZmZmZmZmZuKSwgNDI5NDk2NzI5
NW4pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMCwgLTB4ODAwMDAwMDBuKSwgMG4pOwor
c2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzEsIC0weDgwMDAwMDAwbiksIDBuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDMyLCAtMHg4MDAwMDAwMG4pLCAyMTQ3NDgzNjQ4bik7CitzaG91bGRC
ZShCaWdJbnQuYXNVaW50TigzMywgLTB4ODAwMDAwMDBuKSwgNjQ0MjQ1MDk0NG4pOworc2hvdWxk
QmUoQmlnSW50LmFzVWludE4oMzQsIC0weDgwMDAwMDAwbiksIDE1MDMyMzg1NTM2bik7CisKK3No
b3VsZEJlKEJpZ0ludC5hc1VpbnROKDMwLCAtMHg4MDAwMDAwMW4pLCAxMDczNzQxODIzbik7Citz
aG91bGRCZShCaWdJbnQuYXNVaW50TigzMSwgLTB4ODAwMDAwMDFuKSwgMjE0NzQ4MzY0N24pOwor
c2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzIsIC0weDgwMDAwMDAxbiksIDIxNDc0ODM2NDduKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMzLCAtMHg4MDAwMDAwMW4pLCA2NDQyNDUwOTQzbik7
CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzNCwgLTB4ODAwMDAwMDFuKSwgMTUwMzIzODU1MzVu
KTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzAsIC0weGZmZmZmZmZmbiksIDFuKTsKK3No
b3VsZEJlKEJpZ0ludC5hc1VpbnROKDMxLCAtMHhmZmZmZmZmZm4pLCAxbik7CitzaG91bGRCZShC
aWdJbnQuYXNVaW50TigzMiwgLTB4ZmZmZmZmZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFz
VWludE4oMzMsIC0weGZmZmZmZmZmbiksIDQyOTQ5NjcyOTduKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c1VpbnROKDM0LCAtMHhmZmZmZmZmZm4pLCAxMjg4NDkwMTg4OW4pOworCitzaG91bGRCZShCaWdJ
bnQuYXNVaW50Tig2MiwgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIDQ2MTE2ODYwMTg0MjczODc5MDNu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDYzLCAweDdmZmZmZmZmZmZmZmZmZmZuKSwgOTIy
MzM3MjAzNjg1NDc3NTgwN24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjQsIDB4N2ZmZmZm
ZmZmZmZmZmZmZm4pLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7CitzaG91bGRCZShCaWdJbnQuYXNV
aW50Tig2NSwgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKK3No
b3VsZEJlKEJpZ0ludC5hc1VpbnROKDY2LCAweDdmZmZmZmZmZmZmZmZmZmZuKSwgOTIyMzM3MjAz
Njg1NDc3NTgwN24pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MiwgMHg4MDAwMDAwMDAw
MDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDYzLCAweDgwMDAwMDAwMDAw
MDAwMDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjQsIDB4ODAwMDAwMDAwMDAw
MDAwMG4pLCA5MjIzMzcyMDM2ODU0Nzc1ODA4bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2
NSwgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDY2LCAweDgwMDAwMDAwMDAwMDAwMDBuKSwgOTIyMzM3MjAzNjg1NDc3
NTgwOG4pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MiwgMHhmZmZmZmZmZmZmZmZmZmZm
biksIDQ2MTE2ODYwMTg0MjczODc5MDNuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDYzLCAw
eGZmZmZmZmZmZmZmZmZmZmZuKSwgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworc2hvdWxkQmUoQmln
SW50LmFzVWludE4oNjQsIDB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAxODQ0Njc0NDA3MzcwOTU1MTYx
NW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjUsIDB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAx
ODQ0Njc0NDA3MzcwOTU1MTYxNW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjYsIDB4ZmZm
ZmZmZmZmZmZmZmZmZm4pLCAxODQ0Njc0NDA3MzcwOTU1MTYxNW4pOworCitzaG91bGRCZShCaWdJ
bnQuYXNVaW50Tig2MiwgLTB4ODAwMDAwMDAwMDAwMDAwbiksIDQwMzUyMjUyNjYxMjM5NjQ0MTZu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDYzLCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwgODY0
NjkxMTI4NDU1MTM1MjMyMG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjQsIC0weDgwMDAw
MDAwMDAwMDAwMG4pLCAxNzg3MDI4MzMyMTQwNjEyODEyOG4pOworc2hvdWxkQmUoQmlnSW50LmFz
VWludE4oNjUsIC0weDgwMDAwMDAwMDAwMDAwMG4pLCAzNjMxNzAyNzM5NTExNTY3OTc0NG4pOwor
c2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjYsIC0weDgwMDAwMDAwMDAwMDAwMG4pLCA3MzIxMDUx
NTU0MjUzNDc4Mjk3Nm4pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MiwgLTB4ODAwMDAw
MDAwMDAwMDAxbiksIDQwMzUyMjUyNjYxMjM5NjQ0MTVuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1Vp
bnROKDYzLCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgODY0NjkxMTI4NDU1MTM1MjMxOW4pOworc2hv
dWxkQmUoQmlnSW50LmFzVWludE4oNjQsIC0weDgwMDAwMDAwMDAwMDAwMW4pLCAxNzg3MDI4MzMy
MTQwNjEyODEyN24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjUsIC0weDgwMDAwMDAwMDAw
MDAwMW4pLCAzNjMxNzAyNzM5NTExNTY3OTc0M24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4o
NjYsIC0weDgwMDAwMDAwMDAwMDAwMW4pLCA3MzIxMDUxNTU0MjUzNDc4Mjk3NW4pOworCitzaG91
bGRCZShCaWdJbnQuYXNVaW50Tig2MiwgLTB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAxbik7CitzaG91
bGRCZShCaWdJbnQuYXNVaW50Tig2MywgLTB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAxbik7CitzaG91
bGRCZShCaWdJbnQuYXNVaW50Tig2NCwgLTB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAxbik7CitzaG91
bGRCZShCaWdJbnQuYXNVaW50Tig2NSwgLTB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAxODQ0Njc0NDA3
MzcwOTU1MTYxN24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjYsIC0weGZmZmZmZmZmZmZm
ZmZmZmZuKSwgNTUzNDAyMzIyMjExMjg2NTQ4NDluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnRO
KDY3LCAtMHhmZmZmZmZmZmZmZmZmZmZmbiksIDEyOTEyNzIwODUxNTk2Njg2MTMxM24pOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDJjMWFjYWFmODAwMWEzNTJlODJhMDcwMjY1NzVk
MTYyNTMyNThkNTYuLjQ0ZjQ4ZmIyNWM0MzVlNGU3NzM4MTMyNmY5ZjZhMWY5NWY1MzZhMDQgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3Rz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTY3OCw2NiArNjc4LDYgQEAgdGVzdC9idWls
dC1pbnMvQXJyYXlJdGVyYXRvclByb3RvdHlwZS9uZXh0L2RldGFjaC10eXBlZGFycmF5LWluLXBy
b2dyZXNzLmpzOgogdGVzdC9idWlsdC1pbnMvQXN5bmNHZW5lcmF0b3JQcm90b3R5cGUvcmV0dXJu
L3JldHVybi1zdXNwZW5kZWRZaWVsZC1wcm9taXNlLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MjpB
c3luY1Rlc3RGYWlsdXJlOlRlc3QyNjJFcnJvcjogVGVzdDI2MkVycm9yOiBBc3luY0dlbmVyYXRv
clJlc29sdmUoZ2VuZXJhdG9yLCByZXN1bHRWYWx1ZSwgdHJ1ZSkgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrW29iamVjdCBQcm9taXNlXcK7LCDCq3Vud3JhcHBlZC12YWx1ZcK7KSB0byBiZSB0cnVlJwog
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVyZTpUZXN0MjYyRXJyb3I6IFRl
c3QyNjJFcnJvcjogQXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgcmVzdWx0VmFsdWUs
IHRydWUpIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgUHJvbWlzZV3Cuywgwqt1bndyYXBw
ZWQtdmFsdWXCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYXJp
dGhtZXRpYy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0
cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaWdpbnQtdG9iaWdpbnQtZXJyb3Jz
LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb0JpZ0ludDogbm8gYXJndW1lbnQgPT4g
dW5kZWZpbmVkID0+IFR5cGVFcnJvciBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IFRvQmlnSW50OiBubyBhcmd1bWVudCA9PiB1bmRlZmluZWQgPT4gVHlwZUVycm9y
IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaWdpbnQtdG9iaWdp
bnQtdG9wcmltaXRpdmUuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZl
OiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5k
ZWZpbmVkwrssIMKrMcK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBT
YW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqsxwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlu
cy9CaWdJbnQvYXNJbnROL2JpZ2ludC10b2JpZ2ludC13cmFwcGVkLXZhbHVlcy5qczoKLSAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9iamVjdCB3aXRoIGludGVy
bmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0
cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IHVuYm94IG9i
amVjdCB3aXRoIGludGVybmFsIHNsb3QgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaWdpbnQt
dG9iaWdpbnQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYml0cy10b2luZGV4LWVycm9ycy5q
czoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9JbmRleDogdGhyb3cgd2hlbiBpbnRlZ2Vy
SW5kZXggPCAwIEV4cGVjdGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRv
SW5kZXg6IHRocm93IHdoZW4gaW50ZWdlckluZGV4IDwgMCBFeHBlY3RlZCBhIFJhbmdlRXJyb3Ig
dG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1
aWx0LWlucy9CaWdJbnQvYXNJbnROL2JpdHMtdG9pbmRleC10b3ByaW1pdGl2ZS5qczoKLSAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJl
Y2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqstMcK7KSB0byBiZSB0
cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9Qcmlt
aXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywg
wqstMcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaXRzLXRv
aW5kZXgtd3JhcHBlZC12YWx1ZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvUHJp
bWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3Qv
YnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYml0cy10b2luZGV4LmpzOgotICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJl
IHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUo
wqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQv
YXNJbnROL29yZGVyLW9mLXN0ZXBzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqswwrssIMKrMsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCqzLCuykgdG8gYmUgdHJ1
ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2FyaXRobWV0aWMuanM6Ci0gIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDC
uykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5z
L0JpZ0ludC9hc1VpbnROL2JpZ2ludC10b2JpZ2ludC1lcnJvcnMuanM6Ci0gIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IFRvQmlnSW50OiBubyBhcmd1bWVudCA9PiB1bmRlZmluZWQgPT4gVHlwZUVy
cm9yIEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6
IG5vIGFyZ3VtZW50ID0+IHVuZGVmaW5lZCA9PiBUeXBlRXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJy
b3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0
L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaWdpbnQtdG9iaWdpbnQtdG9wcmltaXRpdmUuanM6
Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRh
a2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMcK7KSB0
byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBA
dG9QcmltaXRpdmUgdGFrZXMgcHJlY2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmlu
ZWTCuywgwqsxwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9i
aWdpbnQtdG9iaWdpbnQtd3JhcHBlZC12YWx1ZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJy
b3I6IFRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5h
bCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1
ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2JpZ2ludC10b2JpZ2ludC5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWls
dC1pbnMvQmlnSW50L2FzVWludE4vYml0cy10b2luZGV4LWVycm9ycy5qczoKLSAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogVG9JbmRleDogdGhyb3cgd2hlbiBpbnRlZ2VySW5kZXggPCAwIEV4cGVj
dGVkIGEgUmFuZ2VFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
IGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvSW5kZXg6IHRocm93IHdo
ZW4gaW50ZWdlckluZGV4IDwgMCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQv
YXNVaW50Ti9iaXRzLXRvaW5kZXgtdG9wcmltaXRpdmUuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMcK7KSB0byBiZSB0cnVlJwotICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogVG9QcmltaXRpdmU6IEBAdG9QcmltaXRpdmUgdGFrZXMgcHJl
Y2VkZW5jZSBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqsxwrspIHRvIGJlIHRy
dWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaXRzLXRvaW5kZXgtd3JhcHBlZC12
YWx1ZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiB1bmJveCBv
YmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7
LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJp
bWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0lu
dC9hc1VpbnROL2JpdHMtdG9pbmRleC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vb3JkZXIt
b2Ytc3RlcHMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCqzDCuywgwqsywrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrMsK7KSB0byBiZSB0cnVlJwogdGVzdC9idWls
dC1pbnMvRGF0YVZpZXcvY3VzdG9tLXByb3RvLWFjY2Vzcy1kZXRhY2hlcy1idWZmZXIuanM6CiAg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93
biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398399</attachid>
            <date>2020-05-04 12:30:35 -0700</date>
            <delta_ts>2020-05-05 00:04:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181144-20200504123033.patch</filename>
            <type>text/plain</type>
            <size>36719</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
M2MzMmIxMjc4MThhYTRkOWI2ZjIxZDQ3NDcxZDlkY2ExOWI2YmI1Li5hNTVlZTM0ZjA4ZTg2OTlh
NmUyOGEyODVlZDliZGQzNmM0YjAxZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOCBAQAorMjAyMC0wNS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNV
aW50TgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
MTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXBsZW1lbnRzIEJpZ0ludC5hc0ludE5bMV0gYW5kIEJpZ0ludC5hc1VpbnROWzJd
IGZlYXR1cmVzLgorICAgICAgICBBcyB0aGUgc2FtZSB0byB0aGUgb3RoZXIgQmlnSW50IHJ1bnRp
bWUgQysrIGNvZGUsIHdlIHBvcnQgVjggY29kZSB0byBKU0MgdG8gaW1wbGVtZW50IGJvdGguCisK
KyAgICAgICAgQmlnSW50LmFzSW50TiBpcyBgc3RhdGljX2Nhc3Q8aW50Tl90PihCaWdJbnQgdmFs
dWUpYCBhbmQgQmlnSW50LmFzVWludE4gaXMgYHN0YXRpY19jYXN0PHVpbnROX3Q+KEJpZ0ludCB2
YWx1ZSlgLgorICAgICAgICBUaGV5IGFyZSBnZXR0aW5nIHNsaWNlIG9mIE4gYml0cyBmcm9tIHR3
bydzIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIEJpZ0ludC4gVGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbgorICAgICAgICBhc0ludE4gYW5kIGFzVWludE4gaXMgYXNJbnROIHJl
bmRlcnMgTVNCIGFzIGEgc2lnbi4KKworICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtYmlnaW50LmFzaW50bgorICAgICAgICBbMl06IGh0dHBzOi8vdGMzOS5lcy9lY21h
MjYyLyNzZWMtYmlnaW50LmFzdWludG4KKworICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp0b0JpZ0ludCk6CisgICAgICAgIChKU0M6OmJpZ0lu
dENvbnN0cnVjdG9yRnVuY0FzVWludE4pOgorICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3Rv
ckZ1bmNBc0ludE4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6emVyb0ltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGl2aWRl
SW1wbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojp1bmFyeU1pbnVzSW1wbCk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50OjpyZW1haW5kZXJJbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6
OmRpZ2l0RGl2KToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFzSW50TkltcGwpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6YXNVaW50TkltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6
dHJ1bmNhdGVUb05CaXRzKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRydW5jYXRlQW5kU3Vi
RnJvbVBvd2VyT2ZUd28pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YXNJbnROKToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWludE4pOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQu
aDoKKwogMjAyMC0wNS0wMyAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIFdlYktpdEFkZGl0aW9ucyBpbmNsdWRlIGZv
ciBKYXZhU2NyaXB0Q29yZVByZWZpeC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQ5NjRmMzg3ZGE1NDBjYTU4YTQw
YmIzYjY5ZjkxOTQwNWNkZGI0ZS4uZjA0YmUzODljNjUwODU2YjNlYzEzNzI3MDhlMzkzNGFlMTJm
OTVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENv
bnN0cnVjdG9yLmNwcApAQCAtNzcsMzAgKzc3LDMyIEBAIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUp
CiAKIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBhcmd1bWVudCkKIHsKLSAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gYXJndW1lbnQudG9Qcmlt
aXRpdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIAotICAgIGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQotICAgICAgICByZXR1cm4gYXJn
dW1lbnQ7CisgICAgaWYgKHByaW1pdGl2ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1cm4gcHJp
bWl0aXZlOwogCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisgICAgaWYgKHByaW1p
dGl2ZS5pc0Jvb2xlYW4oKSkgewogI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgcmV0dXJuIGpz
QmlnSW50MzIoYXJndW1lbnQuYXNCb29sZWFuKCkpOworICAgICAgICByZXR1cm4ganNCaWdJbnQz
MihwcmltaXRpdmUuYXNCb29sZWFuKCkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50
OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSk7CisgICAgICAgIHJldHVybiBK
U0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzQm9vbGVhbigpKTsKICNlbmRpZgog
ICAgIH0KIAotICAgIGlmIChhcmd1bWVudC5pc1N0cmluZygpKSB7CisgICAgaWYgKHByaW1pdGl2
ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgcmV0dXJu
IHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1ZpZXcgdmll
dykgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgcHJpbWl0aXZl
LCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICAgICAgcmV0dXJuIEpTQmlnSW50Ojpw
YXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpOwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBB
U1NFUlQoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1bWVudC5pc051bWJlcigp
IHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnZhbGlkIGFyZ3VtZW50IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9z
KTsKKyAgICBBU1NFUlQocHJpbWl0aXZlLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgcHJpbWl0aXZl
LmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZlLmlzU3ltYm9sKCkpOworICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHByaW1pdGl2ZSB0eXBlIGluIFRvQmlnSW50
IG9wZXJhdGlvbiJfcyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTEzMSwx
OCArMTMzLDQ0IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxCaWdJ
bnRDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBwcmltaXRp
dmUpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0
b3JGdW5jQXNVaW50TihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGJpZ0ludENvbnN0cnVjdG9yRnVuY0FzVWludE4oSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiB7Ci0gICAgLy8gRklYTUU6
IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJpZ0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1Vp
bnROCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0
NAotICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgdWludDMyX3QgYml0cyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9i
YWxPYmplY3QsICJiaXRzIik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIEpTVmFsdWUgYmlnSW50ID0gdG9CaWdJbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisj
aWYgVVNFKEJJR0lOVDMyKQorICAgIGlmIChiaWdJbnQuaXNCaWdJbnQzMigpKQorICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6YXNVaW50
TihnbG9iYWxPYmplY3QsIGJpdHMsIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSkpKTsKKyNlbmRp
ZgorCisgICAgQVNTRVJUKGJpZ0ludC5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzVWludE4oZ2xvYmFsT2Jq
ZWN0LCBiaXRzLCBiaWdJbnQuYXNIZWFwQmlnSW50KCkpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0
KiwgQ2FsbEZyYW1lKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3Ry
dWN0b3JGdW5jQXNJbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKQogewotICAgIC8vIEZJWE1FOiBbRVNOZXh0XVtCaWdJbnRdIEltcGxlbWVudCBC
aWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNVaW50TgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExNDQKLSAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZp
bmVkKCk7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHVpbnQzMl90IGJpdHMgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAiYml0cyIpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJpZ0ludCA9IHRvQmln
SW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworI2lmIFVTRShCSUdJTlQzMikKKyAgICBpZiAoYmln
SW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzSW50TihnbG9iYWxPYmplY3QsIGJpdHMsIGJpZ0ludC5i
aWdJbnQzMkFzSW50MzIoKSkpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGJpZ0ludC5pc0hlYXBC
aWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
SlNCaWdJbnQ6OmFzSW50TihnbG9iYWxPYmplY3QsIGJpdHMsIGJpZ0ludC5hc0hlYXBCaWdJbnQo
KSkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0JpZ0ludC5jcHAKaW5kZXggNTllZmY2ZWRiZTU2YWNjMzJmYThkM2ZlY2FjMDg5YTI1
OWZmNzg3MC4uMmYxM2FjNjE4NGIzNzJiOGIyZWY2M2ZkMTk2YzYzY2UxNWQzN2ZmYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcApAQCAtNTUsOCArNTUsNiBA
QAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCi0j
ZGVmaW5lIFNUQVRJQ19BU1NFUlQoY29uZCkgc3RhdGljX2Fzc2VydChjb25kLCAiSlNCaWdJbnQg
YXNzdW1lcyAiICNjb25kKQotCiBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
QmlnSW50OjpzX2luZm8gPSB7ICJCaWdJbnQiLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTQmlnSW50KSB9OwpAQCAtMzk1LDYgKzM5MywxNiBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIHRyeUNvbnZlcnRUb0JpZ0ludDMyKEpTQmlnSW50OjpJ
bXBsUmVzdWx0IGltcGxSZXN1bAogICAgIHJldHVybiB0cnlDb252ZXJ0VG9CaWdJbnQzMihpbXBs
UmVzdWx0LnBheWxvYWQuYXNIZWFwQmlnSW50KCkpOwogfQogCitBTFdBWVNfSU5MSU5FIEpTQmln
SW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojp6ZXJvSW1wbChWTSYgdm0pCit7CisjaWYgVVNFKEJJ
R0lOVDMyKQorICAgIFVOVVNFRF9QQVJBTSh2bSk7CisgICAgcmV0dXJuIGpzQmlnSW50MzIoMCk7
CisjZWxzZQorICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7CisjZW5kaWYKK30K
KwogLy8gTXVsdGlwbGllcyB7dGhpc30gd2l0aCB7ZmFjdG9yfSBhbmQgYWRkcyB7c3VtbWFuZH0g
dG8gdGhlIHJlc3VsdC4KIHZvaWQgSlNCaWdJbnQ6OmlucGxhY2VNdWx0aXBseUFkZChEaWdpdCBm
YWN0b3IsIERpZ2l0IHN1bW1hbmQpCiB7CkBAIC01NjYsMTMgKzU3NCw4IEBAIEpTQmlnSW50OjpJ
bXBsUmVzdWx0IEpTQmlnSW50OjpkaXZpZGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEJpZ0ludEltCiAgICAgLy8gMi4gTGV0IHF1b3RpZW50IGJlIHRoZSBtYXRoZW1hdGljYWwg
dmFsdWUgb2YgeCBkaXZpZGVkIGJ5IHkuCiAgICAgLy8gMy4gUmV0dXJuIGEgQmlnSW50IHJlcHJl
c2VudGluZyBxdW90aWVudCByb3VuZGVkIHRvd2FyZHMgMCB0byB0aGUgbmV4dAogICAgIC8vICAg
IGludGVncmFsIHZhbHVlLgotICAgIGlmIChhYnNvbHV0ZUNvbXBhcmUoeCwgeSkgPT0gQ29tcGFy
aXNvblJlc3VsdDo6TGVzc1RoYW4pIHsKLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgIHJldHVy
biBqc0JpZ0ludDMyKDApOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVa
ZXJvKHZtKTsKLSNlbmRpZgotICAgIH0KKyAgICBpZiAoYWJzb2x1dGVDb21wYXJlKHgsIHkpID09
IENvbXBhcmlzb25SZXN1bHQ6Okxlc3NUaGFuKQorICAgICAgICByZXR1cm4gemVyb0ltcGwodm0p
OwogCiAgICAgSlNCaWdJbnQqIHF1b3RpZW50ID0gbnVsbHB0cjsKICAgICBib29sIHJlc3VsdFNp
Z24gPSB4LnNpZ24oKSAhPSB5LnNpZ24oKTsKQEAgLTYyMiwxMyArNjI1LDggQEAgSlNCaWdJbnQq
IEpTQmlnSW50Ojpjb3B5KFZNJiB2bSwgQmlnSW50SW1wbCB4KQogdGVtcGxhdGUgPHR5cGVuYW1l
IEJpZ0ludEltcGw+CiBKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6dW5hcnlNaW51c0lt
cGwoVk0mIHZtLCBCaWdJbnRJbXBsIHgpCiB7Ci0gICAgaWYgKHguaXNaZXJvKCkpIHsKLSNpZiBV
U0UoQklHSU5UMzIpCi0gICAgICAgIHJldHVybiBqc0JpZ0ludDMyKDApOwotI2Vsc2UKLSAgICAg
ICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVaZXJvKHZtKTsKLSNlbmRpZgotICAgIH0KKyAgICBp
ZiAoeC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuIHplcm9JbXBsKHZtKTsKIAogICAgIEpTQmln
SW50KiByZXN1bHQgPSBjb3B5KHZtLCB4KTsKICAgICByZXN1bHQtPnNldFNpZ24oIXguc2lnbigp
KTsKQEAgLTY2MCwyMyArNjU4LDEzIEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojpy
ZW1haW5kZXJJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpZ0luCiAgICAgSlNC
aWdJbnQqIHJlbWFpbmRlcjsKICAgICBpZiAoeS5sZW5ndGgoKSA9PSAxKSB7CiAgICAgICAgIERp
Z2l0IGRpdmlzb3IgPSB5LmRpZ2l0KDApOwotICAgICAgICBpZiAoZGl2aXNvciA9PSAxKSB7Ci0j
aWYgVVNFKEJJR0lOVDMyKQotICAgICAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNlCi0g
ICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7Ci0jZW5kaWYKLSAgICAgICAg
fQorICAgICAgICBpZiAoZGl2aXNvciA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIHplcm9JbXBs
KHZtKTsKIAogICAgICAgICBEaWdpdCByZW1haW5kZXJEaWdpdDsKICAgICAgICAgYWJzb2x1dGVE
aXZXaXRoRGlnaXREaXZpc29yKHZtLCB4LCBkaXZpc29yLCBudWxscHRyLCByZW1haW5kZXJEaWdp
dCk7Ci0gICAgICAgIGlmICghcmVtYWluZGVyRGlnaXQpIHsKLSNpZiBVU0UoQklHSU5UMzIpCi0g
ICAgICAgICAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKLSNlbHNlCi0gICAgICAgICAgICByZXR1
cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwotI2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAg
aWYgKCFyZW1haW5kZXJEaWdpdCkKKyAgICAgICAgICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CiAK
ICAgICAgICAgcmVtYWluZGVyID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgMSk7CiAg
ICAgICAgIHJlbWFpbmRlci0+c2V0RGlnaXQoMCwgcmVtYWluZGVyRGlnaXQpOwpAQCAtMTE4NSw3
ICsxMTczLDcgQEAgaW5saW5lIEpTQmlnSW50OjpEaWdpdCBKU0JpZ0ludDo6ZGlnaXREaXYoRGln
aXQgaGlnaCwgRGlnaXQgbG93LCBEaWdpdCBkaXZpc29yLAogICAgIC8vIGxlZnQgb3BlcmFuZCIu
IFdlIG1hc2sgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIHNoaWZ0IGJ5IHtzaGlmdE1hc2t9IChg
ZGlnaXRCaXRzIC0gMWApLCB3aGljaCBtYWtlcyBgZGlnaXRCaXRzIC0gMGAgemVyby4KICAgICAv
LyBUaGlzIHNoaWZ0aW5nIHByb2R1Y2VzIGEgdmFsdWUgd2hpY2ggY292ZXJzIDAgPCB7c30gPD0g
KGRpZ2l0Qml0cyAtIDEpIGNhc2VzLiB7c30gPT0gZGlnaXRCaXRzIG5ldmVyIGhhcHBlbiBhcyB3
ZSBhc3NlcnRlZC4KICAgICAvLyBTaW5jZSB7c1plcm9NYXNrfSBjbGVhcnMgdGhlIHZhbHVlIGlu
IHRoZSBjYXNlIG9mIHtzfSA9PSAwLCB7c30gPT0gMCBjYXNlIGlzIGFsc28gY292ZXJlZC4KLSAg
ICBTVEFUSUNfQVNTRVJUKHNpemVvZihDUFVSZWdpc3RlcikgPT0gc2l6ZW9mKERpZ2l0KSk7Cisg
ICAgc3RhdGljX2Fzc2VydChzaXplb2YoQ1BVUmVnaXN0ZXIpID09IHNpemVvZihEaWdpdCkpOwog
ICAgIERpZ2l0IHNaZXJvTWFzayA9IHN0YXRpY19jYXN0PERpZ2l0PigoLXN0YXRpY19jYXN0PENQ
VVJlZ2lzdGVyPihzKSkgPj4gKGRpZ2l0Qml0cyAtIDEpKTsKICAgICBzdGF0aWMgY29uc3RleHBy
IHVuc2lnbmVkIHNoaWZ0TWFzayA9IGRpZ2l0Qml0cyAtIDE7CiAgICAgRGlnaXQgdW4zMiA9ICho
aWdoIDw8IHMpIHwgKChsb3cgPj4gKChkaWdpdEJpdHMgLSBzKSAmIHNoaWZ0TWFzaykpICYgc1pl
cm9NYXNrKTsKQEAgLTI3MzEsNCArMjcxOSwyMDUgQEAgSlNWYWx1ZSBKU0JpZ0ludDo6dG9OdW1i
ZXJIZWFwKEpTQmlnSW50KiBiaWdJbnQpCiAgICAgcmV0dXJuIGpzTnVtYmVyKGJpdHdpc2VfY2Fz
dDxkb3VibGU+KGRvdWJsZUJpdHMpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludElt
cGw+CitKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6YXNJbnROSW1wbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBCaWdJbnRJbXBsIGJpZ0ludCkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAoYmlnSW50LmlzWmVybygp
KQorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIGlmIChuID09IDApCisgICAgICAgIHJldHVy
biB6ZXJvSW1wbCh2bSk7CisKKyAgICB1aW50NjRfdCBuZWVkZWRMZW5ndGggPSAobiArIGRpZ2l0
Qml0cyAtIDEpIC8gZGlnaXRCaXRzOworICAgIHVpbnQ2NF90IGxlbmd0aCA9IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihiaWdJbnQubGVuZ3RoKCkpOworICAgIC8vIElmIGJpZ0ludCBoYXMgbGVzcyB0
aGFuIG4gYml0cywgcmV0dXJuIGl0IGRpcmVjdGx5LgorICAgIGlmIChsZW5ndGggPCBuZWVkZWRM
ZW5ndGgpCisgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgQVNTRVJUKG5lZWRlZExlbmd0aCA8
PSBJTlQzMl9NQVgpOworICAgIERpZ2l0IHRvcERpZ2l0ID0gYmlnSW50LmRpZ2l0KHN0YXRpY19j
YXN0PGludDMyX3Q+KG5lZWRlZExlbmd0aCkgLSAxKTsKKyAgICBEaWdpdCBjb21wYXJlRGlnaXQg
PSBzdGF0aWNfY2FzdDxEaWdpdD4oMSkgPDwgKChuIC0gMSkgJSBkaWdpdEJpdHMpOworICAgIGlm
IChsZW5ndGggPT0gbmVlZGVkTGVuZ3RoICYmIHRvcERpZ2l0IDwgY29tcGFyZURpZ2l0KQorICAg
ICAgICByZXR1cm4gYmlnSW50OworCisgICAgLy8gT3RoZXJ3aXNlIHdlIGhhdmUgdG8gdHJ1bmNh
dGUgKHdoaWNoIGlzIGEgbm8tb3AgaW4gdGhlIHNwZWNpYWwgY2FzZQorICAgIC8vIG9mIGJpZ0lu
dCA9PSAtMl4obi0xKSksIGFuZCBkZXRlcm1pbmUgdGhlIHJpZ2h0IHNpZ24uIFdlIGFsc28gbWln
aHQgaGF2ZQorICAgIC8vIHRvIHN1YnRyYWN0IGZyb20gMl5uIHRvIHNpbXVsYXRlIGhhdmluZyB0
d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgorICAgIC8vIEluIG1vc3QgY2FzZXMsIHRo
ZSByZXN1bHQncyBzaWduIGlzIGJpZ0ludC5zaWduKCkgeG9yICIobi0xKXRoIGJpdCBwcmVzZW50
Ii4KKyAgICAvLyBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbiBiaWdJbnQgaXMgbmVnYXRpdmUs
IGhhcyB0aGUgKG4tMSl0aCBiaXQsIGFuZCBhbGwKKyAgICAvLyBpdHMgYml0cyBiZWxvdyAobi0x
KSBhcmUgemVyby4gSW4gdGhhdCBjYXNlLCB0aGUgcmVzdWx0IGlzIHRoZSBtaW5pbXVtCisgICAg
Ly8gbi1iaXQgaW50ZWdlciAoZXhhbXBsZTogYXNJbnROKDMsIC0xMm4pID0+IC00bikuCisgICAg
Ym9vbCBoYXNCaXQgPSAodG9wRGlnaXQgJiBjb21wYXJlRGlnaXQpID09IGNvbXBhcmVEaWdpdDsK
KyAgICBBU1NFUlQobiA8PSBJTlQzMl9NQVgpOworICAgIGludDMyX3QgTiA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KG4pOworICAgIGlmICghaGFzQml0KQorICAgICAgICByZXR1cm4gdHJ1bmNhdGVU
b05CaXRzKHZtLCBOLCBiaWdJbnQpOworICAgIGlmICghYmlnSW50LnNpZ24oKSkKKyAgICAgICAg
cmV0dXJuIHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28odm0sIE4sIGJpZ0ludCwgdHJ1ZSk7
CisKKyAgICAvLyBOZWdhdGl2ZSBudW1iZXJzIG11c3Qgc3VidHJhY3QgZnJvbSAyXm4sIGV4Y2Vw
dCBmb3IgdGhlIHNwZWNpYWwgY2FzZQorICAgIC8vIGRlc2NyaWJlZCBhYm92ZS4KKyAgICBpZiAo
KHRvcERpZ2l0ICYgKGNvbXBhcmVEaWdpdCAtIDEpKSA9PSAwKSB7CisgICAgICAgIGZvciAoaW50
MzJfdCBpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVlZGVkTGVuZ3RoKSAtIDI7IGkgPj0gMDsg
aS0tKSB7CisgICAgICAgICAgICBpZiAoYmlnSW50LmRpZ2l0KGkpICE9IDApCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28odm0sIE4sIGJpZ0ludCwg
ZmFsc2UpOworICAgICAgICB9CisgICAgICAgIC8vIFRydW5jYXRpb24gaXMgbm8tb3AgaWYgYmln
SW50ID09IC0yXihuLTEpLgorICAgICAgICBpZiAobGVuZ3RoID09IG5lZWRlZExlbmd0aCAmJiB0
b3BEaWdpdCA9PSBjb21wYXJlRGlnaXQpCisgICAgICAgICAgICByZXR1cm4gYmlnSW50OworICAg
ICAgICByZXR1cm4gdHJ1bmNhdGVUb05CaXRzKHZtLCBOLCBiaWdJbnQpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byh2bSwgTiwgYmlnSW50LCBmYWxzZSk7
Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorSlNCaWdJbnQ6OkltcGxSZXN1
bHQgSlNCaWdJbnQ6OmFzVWludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVp
bnQ2NF90IG4sIEJpZ0ludEltcGwgYmlnSW50KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBpZiAoYmlnSW50LmlzWmVybygpKQorICAgICAgICByZXR1cm4gYmlnSW50OworICAgIGlmIChu
ID09IDApCisgICAgICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CisKKyAgICAvLyBJZiBiaWdJbnQg
aXMgbmVnYXRpdmUsIHNpbXVsYXRlIHR3bydzIGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24uCisg
ICAgaWYgKGJpZ0ludC5zaWduKCkpIHsKKyAgICAgICAgaWYgKG4gPiBtYXhMZW5ndGhCaXRzKSB7
CisgICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVu
Y2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKHZtLCBzdGF0aWNfY2FzdDxpbnQzMl90PihuKSwgYmln
SW50LCBmYWxzZSk7CisgICAgfQorCisgICAgLy8gSWYgYmlnSW50IGlzIHBvc2l0aXZlIGFuZCBo
YXMgdXAgdG8gbiBiaXRzLCByZXR1cm4gaXQgZGlyZWN0bHkuCisgICAgaWYgKG4gPj0gbWF4TGVu
Z3RoQml0cykKKyAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICBzdGF0aWNfYXNzZXJ0KG1heExl
bmd0aEJpdHMgPCBJTlQzMl9NQVggLSBkaWdpdEJpdHMpOworICAgIGludDMyX3QgbmVlZGVkTGVu
Z3RoID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oKG4gKyBkaWdpdEJpdHMgLSAxKSAvIGRpZ2l0Qml0
cyk7CisgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGJpZ0ludC5sZW5ndGgoKSkgPCBuZWVk
ZWRMZW5ndGgpCisgICAgICAgIHJldHVybiBiaWdJbnQ7CisKKyAgICBpbnQzMl90IGJpdHNJblRv
cERpZ2l0ID0gbiAlIGRpZ2l0Qml0czsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oYmln
SW50Lmxlbmd0aCgpKSA9PSBuZWVkZWRMZW5ndGgpIHsKKyAgICAgICAgaWYgKGJpdHNJblRvcERp
Z2l0ID09IDApCisgICAgICAgICAgICByZXR1cm4gYmlnSW50OworICAgICAgICBEaWdpdCB0b3BE
aWdpdCA9IGJpZ0ludC5kaWdpdChuZWVkZWRMZW5ndGggLSAxKTsKKyAgICAgICAgaWYgKCh0b3BE
aWdpdCA+PiBiaXRzSW5Ub3BEaWdpdCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBiaWdJbnQ7
CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlLCB0cnVuY2F0ZS4KKyAgICBBU1NFUlQobiA8PSBJ
TlQzMl9NQVgpOworICAgIHJldHVybiB0cnVuY2F0ZVRvTkJpdHModm0sIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KG4pLCBiaWdJbnQpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4K
K0pTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojp0cnVuY2F0ZVRvTkJpdHMoVk0mIHZtLCBp
bnQzMl90IG4sIEJpZ0ludEltcGwgYmlnSW50KQoreworICAgIEFTU0VSVChuICE9IDApOworICAg
IEFTU0VSVChiaWdJbnQubGVuZ3RoKCkgPiBuIC8gZGlnaXRCaXRzKTsKKworICAgIGludDMyX3Qg
bmVlZGVkRGlnaXRzID0gKG4gKyAoZGlnaXRCaXRzIC0gMSkpIC8gZGlnaXRCaXRzOworICAgIEFT
U0VSVChuZWVkZWREaWdpdHMgPD0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oYmlnSW50Lmxlbmd0aCgp
KSk7CisgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNyZWF0ZVdpdGhMZW5ndGhVbmNoZWNrZWQodm0s
IG5lZWRlZERpZ2l0cyk7CisgICAgQVNTRVJUKHJlc3VsdCk7CisKKyAgICAvLyBDb3B5IGFsbCBk
aWdpdHMgZXhjZXB0IHRoZSBNU0QuCisgICAgaW50MzJfdCBsYXN0ID0gbmVlZGVkRGlnaXRzIC0g
MTsKKyAgICBmb3IgKGludDMyX3QgaSA9IDA7IGkgPCBsYXN0OyBpKyspCisgICAgICAgIHJlc3Vs
dC0+c2V0RGlnaXQoaSwgYmlnSW50LmRpZ2l0KGkpKTsKKworICAgIC8vIFRoZSBNU0QgbWlnaHQg
Y29udGFpbiBleHRyYSBiaXRzIHRoYXQgd2UgZG9uJ3Qgd2FudC4KKyAgICBEaWdpdCBtc2QgPSBi
aWdJbnQuZGlnaXQobGFzdCk7CisgICAgaWYgKG4gJSBkaWdpdEJpdHMgIT0gMCkgeworICAgICAg
ICBpbnQzMl90IGRyb3AgPSBkaWdpdEJpdHMgLSAobiAlIGRpZ2l0Qml0cyk7CisgICAgICAgIG1z
ZCA9IChtc2QgPDwgZHJvcCkgPj4gZHJvcDsKKyAgICB9CisgICAgcmVzdWx0LT5zZXREaWdpdChs
YXN0LCBtc2QpOworICAgIHJlc3VsdC0+c2V0U2lnbihiaWdJbnQuc2lnbigpKTsKKyAgICByZXR1
cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworfQorCisvLyBTdWJ0cmFjdHMgdGhlIGxlYXN0IHNp
Z25pZmljYW50IG4gYml0cyBvZiBhYnMoYmlnSW50KSBmcm9tIDJebi4KK3RlbXBsYXRlIDx0eXBl
bmFtZSBCaWdJbnRJbXBsPgorSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OnRydW5jYXRl
QW5kU3ViRnJvbVBvd2VyT2ZUd28oVk0mIHZtLCBpbnQzMl90IG4sIEJpZ0ludEltcGwgYmlnSW50
LCBib29sIHJlc3VsdFNpZ24pCit7CisgICAgQVNTRVJUKG4gIT0gMCk7CisgICAgQVNTRVJUKG4g
PD0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obWF4TGVuZ3RoQml0cykpOworCisgICAgaW50MzJfdCBu
ZWVkZWREaWdpdHMgPSAobiArIChkaWdpdEJpdHMgLSAxKSkgLyBkaWdpdEJpdHM7CisgICAgQVNT
RVJUKG5lZWRlZERpZ2l0cyA8PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtYXhMZW5ndGgpKTsgLy8g
Rm9sbG93cyBmcm9tIG4gPD0gbWF4TGVuZ3RoQml0cy4KKyAgICBKU0JpZ0ludCogcmVzdWx0ID0g
Y3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbmVlZGVkRGlnaXRzKTsKKyAgICBBU1NFUlQo
cmVzdWx0KTsKKworICAgIC8vIFByb2Nlc3MgYWxsIGRpZ2l0cyBleGNlcHQgdGhlIE1TRC4KKyAg
ICBpbnQzMl90IGkgPSAwOworICAgIGludDMyX3QgbGFzdCA9IG5lZWRlZERpZ2l0cyAtIDE7Cisg
ICAgaW50MzJfdCBsZW5ndGggPSBiaWdJbnQubGVuZ3RoKCk7CisgICAgRGlnaXQgYm9ycm93ID0g
MDsKKyAgICAvLyBUYWtlIGRpZ2l0cyBmcm9tIGJpZ0ludCB1bmxlc3MgaXRzIGxlbmd0aCBpcyBl
eGhhdXN0ZWQuCisgICAgaW50MzJfdCBsaW1pdCA9IHN0ZDo6bWluKGxhc3QsIGxlbmd0aCk7Cisg
ICAgZm9yICg7IGkgPCBsaW1pdDsgaSsrKSB7CisgICAgICAgIERpZ2l0IG5ld0JvcnJvdyA9IDA7
CisgICAgICAgIERpZ2l0IGRpZmZlcmVuY2UgPSBkaWdpdFN1YigwLCBiaWdJbnQuZGlnaXQoaSks
IG5ld0JvcnJvdyk7CisgICAgICAgIGRpZmZlcmVuY2UgPSBkaWdpdFN1YihkaWZmZXJlbmNlLCBi
b3Jyb3csIG5ld0JvcnJvdyk7CisgICAgICAgIHJlc3VsdC0+c2V0RGlnaXQoaSwgZGlmZmVyZW5j
ZSk7CisgICAgICAgIGJvcnJvdyA9IG5ld0JvcnJvdzsKKyAgICB9CisgICAgLy8gVGhlbiBzaW11
bGF0ZSBsZWFkaW5nIHplcm9lcyBpbiB7YmlnSW50fSBhcyBuZWVkZWQuCisgICAgZm9yICg7IGkg
PCBsYXN0OyBpKyspIHsKKyAgICAgICAgRGlnaXQgbmV3Qm9ycm93ID0gMDsKKyAgICAgICAgRGln
aXQgZGlmZmVyZW5jZSA9IGRpZ2l0U3ViKDAsIGJvcnJvdywgbmV3Qm9ycm93KTsKKyAgICAgICAg
cmVzdWx0LT5zZXREaWdpdChpLCBkaWZmZXJlbmNlKTsKKyAgICAgICAgYm9ycm93ID0gbmV3Qm9y
cm93OworICAgIH0KKworICAgIC8vIFRoZSBNU0QgbWlnaHQgY29udGFpbiBleHRyYSBiaXRzIHRo
YXQgd2UgZG9uJ3Qgd2FudC4KKyAgICBEaWdpdCBtc2QgPSBsYXN0IDwgbGVuZ3RoID8gYmlnSW50
LmRpZ2l0KGxhc3QpIDogMDsKKyAgICBpbnQzMl90IG1zZEJpdHNDb25zdW1lZCA9IG4gJSBkaWdp
dEJpdHM7CisgICAgRGlnaXQgcmVzdWx0TVNEOworICAgIGlmIChtc2RCaXRzQ29uc3VtZWQgPT0g
MCkgeworICAgICAgICBEaWdpdCBuZXdCb3Jyb3cgPSAwOworICAgICAgICByZXN1bHRNU0QgPSBk
aWdpdFN1YigwLCBtc2QsIG5ld0JvcnJvdyk7CisgICAgICAgIHJlc3VsdE1TRCA9IGRpZ2l0U3Vi
KHJlc3VsdE1TRCwgYm9ycm93LCBuZXdCb3Jyb3cpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlu
dDMyX3QgZHJvcCA9IGRpZ2l0Qml0cyAtIG1zZEJpdHNDb25zdW1lZDsKKyAgICAgICAgbXNkID0g
KG1zZCA8PCBkcm9wKSA+PiBkcm9wOworICAgICAgICBEaWdpdCBtaW51ZW5kTVNEID0gc3RhdGlj
X2Nhc3Q8RGlnaXQ+KDEpIDw8IChkaWdpdEJpdHMgLSBkcm9wKTsKKyAgICAgICAgRGlnaXQgbmV3
Qm9ycm93ID0gMDsKKyAgICAgICAgcmVzdWx0TVNEID0gZGlnaXRTdWIobWludWVuZE1TRCwgbXNk
LCBuZXdCb3Jyb3cpOworICAgICAgICByZXN1bHRNU0QgPSBkaWdpdFN1YihyZXN1bHRNU0QsIGJv
cnJvdywgbmV3Qm9ycm93KTsKKyAgICAgICAgQVNTRVJUKG5ld0JvcnJvdyA9PSAwKTsgLy8gcmVz
dWx0IDwgMl5uLgorICAgICAgICAvLyBJZiBhbGwgc3VidHJhY3RlZCBiaXRzIHdlcmUgemVybywg
d2UgaGF2ZSB0byBnZXQgcmlkIG9mIHRoZQorICAgICAgICAvLyBtYXRlcmlhbGl6ZWQgbWludWVu
ZE1TRCBhZ2Fpbi4KKyAgICAgICAgcmVzdWx0TVNEICY9IChtaW51ZW5kTVNEIC0gMSk7CisgICAg
fQorICAgIHJlc3VsdC0+c2V0RGlnaXQobGFzdCwgcmVzdWx0TVNEKTsKKyAgICByZXN1bHQtPnNl
dFNpZ24ocmVzdWx0U2lnbik7CisgICAgcmV0dXJuIHJlc3VsdC0+cmlnaHRUcmltKHZtKTsKK30K
KworSlNWYWx1ZSBKU0JpZ0ludDo6YXNJbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IHVpbnQ2NF90IG4sIEpTQmlnSW50KiBiaWdJbnQpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRU
b0JpZ0ludDMyKGFzSW50TkltcGwoZ2xvYmFsT2JqZWN0LCBuLCBIZWFwQmlnSW50SW1wbCB7IGJp
Z0ludCB9KSk7Cit9CisKK0pTVmFsdWUgSlNCaWdJbnQ6OmFzVWludE4oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgdWludDY0X3QgbiwgSlNCaWdJbnQqIGJpZ0ludCkKK3sKKyAgICByZXR1
cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoYXNVaW50TkltcGwoZ2xvYmFsT2JqZWN0LCBuLCBIZWFw
QmlnSW50SW1wbCB7IGJpZ0ludCB9KSk7Cit9CisKKyNpZiBVU0UoQklHSU5UMzIpCitKU1ZhbHVl
IEpTQmlnSW50Ojphc0ludE4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3Qg
biwgaW50MzJfdCBiaWdJbnQpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0JpZ0ludDMyKGFz
SW50TkltcGwoZ2xvYmFsT2JqZWN0LCBuLCBJbnQzMkJpZ0ludEltcGwgeyBiaWdJbnQgfSkpOwor
fQorCitKU1ZhbHVlIEpTQmlnSW50Ojphc1VpbnROKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIHVpbnQ2NF90IG4sIGludDMyX3QgYmlnSW50KQoreworICAgIHJldHVybiB0cnlDb252ZXJ0
VG9CaWdJbnQzMihhc1VpbnROSW1wbChnbG9iYWxPYmplY3QsIG4sIEludDMyQmlnSW50SW1wbCB7
IGJpZ0ludCB9KSk7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaAppbmRleCA3YTQ5ZDBmZDJjNmMxOWY0MTk1ZDY5
OGJhYjQwZDJjYjFiM2NjZjEyLi5kODhiMGEyODEyY2ZkZTNmNmY5MTNlYzYzM2Y5YmY1MDZmMjc2
ZDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKQEAgLTQxMiw2
ICs0MTIsMTQgQEAgY2xhc3MgSlNCaWdJbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgcmV0dXJuIHRvTnVtYmVySGVhcChqc0Nhc3Q8SlNCaWdJbnQqPihiaWdJbnQpKTsKICAgICB9
CiAKKworICAgIHN0YXRpYyBKU1ZhbHVlIGFzSW50TihKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90
LCBKU0JpZ0ludCopOworICAgIHN0YXRpYyBKU1ZhbHVlIGFzVWludE4oSlNHbG9iYWxPYmplY3Qq
LCB1aW50NjRfdCwgSlNCaWdJbnQqKTsKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgc3RhdGljIEpT
VmFsdWUgYXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QsIGludDMyX3QpOworICAgIHN0
YXRpYyBKU1ZhbHVlIGFzVWludE4oSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCwgaW50MzJfdCk7
CisjZW5kaWYKKwogICAgIERpZ2l0IGRpZ2l0KHVuc2lnbmVkKTsKICAgICB2b2lkIHNldERpZ2l0
KHVuc2lnbmVkLCBEaWdpdCk7IC8vIFVzZSBvbmx5IHdoZW4gaW5pdGlhbGl6aW5nLgogICAgIEpT
X0VYUE9SVF9QUklWQVRFIEpTQmlnSW50KiByaWdodFRyaW0oVk0mKTsKQEAgLTU0MSw2ICs1NDks
MTcgQEAgY2xhc3MgSlNCaWdJbnQgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KICAgICBzdGF0aWMgT3B0aW9uYWw8RGlnaXQ+IHRvU2hp
ZnRBbW91bnQoQmlnSW50SW1wbCB4KTsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJ
bXBsPgorICAgIHN0YXRpYyBJbXBsUmVzdWx0IGFzSW50TkltcGwoSlNHbG9iYWxPYmplY3QqLCB1
aW50NjRfdCwgQmlnSW50SW1wbCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+
CisgICAgc3RhdGljIEltcGxSZXN1bHQgYXNVaW50TkltcGwoSlNHbG9iYWxPYmplY3QqLCB1aW50
NjRfdCwgQmlnSW50SW1wbCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+Cisg
ICAgc3RhdGljIEltcGxSZXN1bHQgdHJ1bmNhdGVUb05CaXRzKFZNJiwgaW50MzJfdCwgQmlnSW50
SW1wbCk7CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CisgICAgc3RhdGljIElt
cGxSZXN1bHQgdHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byhWTSYsIGludDMyX3QsIEJpZ0lu
dEltcGwsIGJvb2wgcmVzdWx0U2lnbik7CisKKyAgICBzdGF0aWMgSW1wbFJlc3VsdCB6ZXJvSW1w
bChWTSYpOworCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0T2ZEYXRhKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQsIG1fZGF0YSk7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFlOTgw
YWFhYTU3NjFkMzVmNDFmNGU2ZjA5ZDBkNjk5NzZmMTI3ZjguLjZhZTVhZTZiMWJjYzIyZDMzODNi
MmM2NWY3M2Y4NzA3NDVmYjUzMDEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDUtMDQgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgQmln
SW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2JpZ2ludC1hc2ludG4uanM6IEFkZGVkLgor
ICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoQmln
SW50LmFzSW50Tik6CisgICAgICAgICogc3RyZXNzL2JpZ2ludC1hc3VpbnRuLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKEJp
Z0ludC5hc1VpbnROKToKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAy
MDIwLTA1LTAxICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IHN0cmVzcy9iaWctaW50LW5lZ2F0ZS1qaXQuanMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2JpZ2ludC1hc2ludG4uanMgYi9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXNpbnRuLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAzMjI1NThkYTk0OGFlYzFlOTkwNGE1YjdiZjg1NTFiZTYzZWNiYjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXNpbnRuLmpzCkBAIC0wLDAgKzEs
MTA3IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAn
ICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdl
KSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsK
KyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBl
cnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFl
cnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAg
aWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworc2hvdWxkVGhyb3coKCkg
PT4geworICAgIEJpZ0ludC5hc0ludE4oLTEsIDBuKQorfSwgYFJhbmdlRXJyb3I6IGJpdHMgY2Fu
bm90IGJlIG5lZ2F0aXZlYCk7CisKK3sKKyAgICBsZXQgdG9JbmRleCA9IGZhbHNlOworICAgIGxl
dCB0b0JpZ0ludCA9IGZhbHNlOworICAgIGxldCBpbmRleCA9IHsKKyAgICAgICAgW1N5bWJvbC50
b1ByaW1pdGl2ZV0oKSB7CisgICAgICAgICAgICBzaG91bGRCZSh0b0luZGV4LCBmYWxzZSk7Cisg
ICAgICAgICAgICBzaG91bGRCZSh0b0JpZ0ludCwgZmFsc2UpOworICAgICAgICAgICAgdG9JbmRl
eCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMzI7CisgICAgICAgIH0KKyAgICB9OworICAg
IGxldCBiaWdpbnQgPSB7CisgICAgICAgIFtTeW1ib2wudG9QcmltaXRpdmVdKCkgeworICAgICAg
ICAgICAgc2hvdWxkQmUodG9JbmRleCwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSh0b0Jp
Z0ludCwgZmFsc2UpOworICAgICAgICAgICAgdG9CaWdJbnQgPSB0cnVlOworICAgICAgICAgICAg
cmV0dXJuIDEwbjsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaG91bGRCZShCaWdJbnQuYXNJbnRO
KGluZGV4LCBiaWdpbnQpLCAxMG4pOworICAgIHNob3VsZEJlKHRvSW5kZXgsIHRydWUpOworICAg
IHNob3VsZEJlKHRvQmlnSW50LCB0cnVlKTsKK30KKworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigt
MCwgMG4pLCAwbik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMCwgMG4pLCAwbik7CitzaG91
bGRCZShCaWdJbnQuYXNJbnROKDEsIDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigy
LCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMywgMG4pLCAwbik7CisKK3Nob3Vs
ZEJlKEJpZ0ludC5hc0ludE4oMCwgMW4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDEs
IDFuKSwgLTFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMiwgMW4pLCAxbik7CitzaG91bGRC
ZShCaWdJbnQuYXNJbnROKDMsIDFuKSwgMW4pOworCitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMw
LCAweDdmZmZmZmZmbiksIC0xbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMxLCAweDdmZmZm
ZmZmbiksIC0xbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMyLCAweDdmZmZmZmZmbiksIDIx
NDc0ODM2NDduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzMsIDB4N2ZmZmZmZmZuKSwgMjE0
NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzNCwgMHg3ZmZmZmZmZm4pLCAyMTQ3
NDgzNjQ3bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzAsIDB4ODAwMDAwMDBuKSwgMG4p
Oworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzMSwgMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRC
ZShCaWdJbnQuYXNJbnROKDMyLCAweDgwMDAwMDAwbiksIC0yMTQ3NDgzNjQ4bik7CitzaG91bGRC
ZShCaWdJbnQuYXNJbnROKDMzLCAweDgwMDAwMDAwbiksIDIxNDc0ODM2NDhuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc0ludE4oMzQsIDB4ODAwMDAwMDBuKSwgMjE0NzQ4MzY0OG4pOworCitzaG91bGRC
ZShCaWdJbnQuYXNJbnROKDMwLCAtMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQu
YXNJbnROKDMxLCAtMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMy
LCAtMHg4MDAwMDAwMG4pLCAtMjE0NzQ4MzY0OG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigz
MywgLTB4ODAwMDAwMDBuKSwgLTIxNDc0ODM2NDhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4o
MzQsIC0weDgwMDAwMDAwbiksIC0yMTQ3NDgzNjQ4bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0lu
dE4oMzAsIC0weDgwMDAwMDAxbiksIC0xbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMxLCAt
MHg4MDAwMDAwMW4pLCAtMW4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzMiwgLTB4ODAwMDAw
MDFuKSwgMjE0NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzMywgLTB4ODAwMDAw
MDFuKSwgLTIxNDc0ODM2NDluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzQsIC0weDgwMDAw
MDAxbiksIC0yMTQ3NDgzNjQ5bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjIsIDB4N2Zm
ZmZmZmZmZmZmZmZmZm4pLCAtMW4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2MywgMHg3ZmZm
ZmZmZmZmZmZmZmZmbiksIC0xbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY0LCAweDdmZmZm
ZmZmZmZmZmZmZmZuKSwgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworc2hvdWxkQmUoQmlnSW50LmFz
SW50Tig2NSwgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKK3No
b3VsZEJlKEJpZ0ludC5hc0ludE4oNjYsIDB4N2ZmZmZmZmZmZmZmZmZmZm4pLCA5MjIzMzcyMDM2
ODU0Nzc1ODA3bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjIsIDB4ODAwMDAwMDAwMDAw
MDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDYzLCAweDgwMDAwMDAwMDAwMDAw
MDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2NCwgMHg4MDAwMDAwMDAwMDAwMDAw
biksIC05MjIzMzcyMDM2ODU0Nzc1ODA4bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY1LCAw
eDgwMDAwMDAwMDAwMDAwMDBuKSwgOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworc2hvdWxkQmUoQmln
SW50LmFzSW50Tig2NiwgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDhu
KTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2MiwgLTB4ODAwMDAwMDAwMDAwMDAwbiksIC01
NzY0NjA3NTIzMDM0MjM0ODhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjMsIC0weDgwMDAw
MDAwMDAwMDAwMG4pLCAtNTc2NDYwNzUyMzAzNDIzNDg4bik7CitzaG91bGRCZShCaWdJbnQuYXNJ
bnROKDY0LCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OG4pOworc2hv
dWxkQmUoQmlnSW50LmFzSW50Tig2NSwgLTB4ODAwMDAwMDAwMDAwMDAwbiksIC01NzY0NjA3NTIz
MDM0MjM0ODhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjYsIC0weDgwMDAwMDAwMDAwMDAw
MG4pLCAtNTc2NDYwNzUyMzAzNDIzNDg4bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjIs
IC0weDgwMDAwMDAwMDAwMDAwMW4pLCAtNTc2NDYwNzUyMzAzNDIzNDg5bik7CitzaG91bGRCZShC
aWdJbnQuYXNJbnROKDYzLCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4
OW4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2NCwgLTB4ODAwMDAwMDAwMDAwMDAxbiksIC01
NzY0NjA3NTIzMDM0MjM0ODluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjUsIC0weDgwMDAw
MDAwMDAwMDAwMW4pLCAtNTc2NDYwNzUyMzAzNDIzNDg5bik7CitzaG91bGRCZShCaWdJbnQuYXNJ
bnROKDY2LCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OW4pOwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYmlnaW50LWFzdWludG4uanMgYi9KU1Rlc3RzL3N0cmVz
cy9iaWdpbnQtYXN1aW50bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGM0MjcyMjUwMjc1MjUzNDZlMWQ5YmVm
ZTU4MjlkZjA3ZGM5YjU1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnaW50
LWFzdWludG4uanMKQEAgLTAsMCArMSwxMzEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwg
ZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvck1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsK
KyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yVGhyb3duKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ25vdCB0aHJvd24nKTsKKyAgICBpZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdl
KQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGJhZCBlcnJvcjogJHtTdHJpbmcoZXJyb3IpfWAp
OworfQorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgQmlnSW50LmFzVWludE4oLTEsIDBuKQor
fSwgYFJhbmdlRXJyb3I6IGJpdHMgY2Fubm90IGJlIG5lZ2F0aXZlYCk7CisKK3sKKyAgICBsZXQg
dG9JbmRleCA9IGZhbHNlOworICAgIGxldCB0b0JpZ0ludCA9IGZhbHNlOworICAgIGxldCBpbmRl
eCA9IHsKKyAgICAgICAgW1N5bWJvbC50b1ByaW1pdGl2ZV0oKSB7CisgICAgICAgICAgICBzaG91
bGRCZSh0b0luZGV4LCBmYWxzZSk7CisgICAgICAgICAgICBzaG91bGRCZSh0b0JpZ0ludCwgZmFs
c2UpOworICAgICAgICAgICAgdG9JbmRleCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMzI7
CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBiaWdpbnQgPSB7CisgICAgICAgIFtTeW1ib2wu
dG9QcmltaXRpdmVdKCkgeworICAgICAgICAgICAgc2hvdWxkQmUodG9JbmRleCwgdHJ1ZSk7Cisg
ICAgICAgICAgICBzaG91bGRCZSh0b0JpZ0ludCwgZmFsc2UpOworICAgICAgICAgICAgdG9CaWdJ
bnQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIDEwbjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBzaG91bGRCZShCaWdJbnQuYXNVaW50TihpbmRleCwgYmlnaW50KSwgMTBuKTsKKyAgICBzaG91
bGRCZSh0b0luZGV4LCB0cnVlKTsKKyAgICBzaG91bGRCZSh0b0JpZ0ludCwgdHJ1ZSk7Cit9CisK
K3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKC0wLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c1VpbnROKDAsIDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMSwgMG4pLCAwbik7
CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigyLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c1VpbnROKDMsIDBuKSwgMG4pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50TigwLCAxbiksIDBu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDEsIDFuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50
LmFzVWludE4oMiwgMW4pLCAxbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzLCAxbiksIDFu
KTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzAsIDB4N2ZmZmZmZmZuKSwgMTA3Mzc0MTgy
M24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzEsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0
N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzIsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0
N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzMsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0
N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzQsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0
N24pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMCwgMHg4MDAwMDAwMG4pLCAwbik7Citz
aG91bGRCZShCaWdJbnQuYXNVaW50TigzMSwgMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShC
aWdJbnQuYXNVaW50TigzMiwgMHg4MDAwMDAwMG4pLCAyMTQ3NDgzNjQ4bik7CitzaG91bGRCZShC
aWdJbnQuYXNVaW50TigzMywgMHg4MDAwMDAwMG4pLCAyMTQ3NDgzNjQ4bik7CitzaG91bGRCZShC
aWdJbnQuYXNVaW50TigzNCwgMHg4MDAwMDAwMG4pLCAyMTQ3NDgzNjQ4bik7CisKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDMwLCAweGZmZmZmZmZmbiksIDEwNzM3NDE4MjNuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDMxLCAweGZmZmZmZmZmbiksIDIxNDc0ODM2NDduKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDMyLCAweGZmZmZmZmZmbiksIDQyOTQ5NjcyOTVuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDMzLCAweGZmZmZmZmZmbiksIDQyOTQ5NjcyOTVuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDM0LCAweGZmZmZmZmZmbiksIDQyOTQ5NjcyOTVuKTsKKworc2hvdWxk
QmUoQmlnSW50LmFzVWludE4oMzAsIC0weDgwMDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0lu
dC5hc1VpbnROKDMxLCAtMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50
TigzMiwgLTB4ODAwMDAwMDBuKSwgMjE0NzQ4MzY0OG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oMzMsIC0weDgwMDAwMDAwbiksIDY0NDI0NTA5NDRuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1Vp
bnROKDM0LCAtMHg4MDAwMDAwMG4pLCAxNTAzMjM4NTUzNm4pOworCitzaG91bGRCZShCaWdJbnQu
YXNVaW50TigzMCwgLTB4ODAwMDAwMDFuKSwgMTA3Mzc0MTgyM24pOworc2hvdWxkQmUoQmlnSW50
LmFzVWludE4oMzEsIC0weDgwMDAwMDAxbiksIDIxNDc0ODM2NDduKTsKK3Nob3VsZEJlKEJpZ0lu
dC5hc1VpbnROKDMyLCAtMHg4MDAwMDAwMW4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJ
bnQuYXNVaW50TigzMywgLTB4ODAwMDAwMDFuKSwgNjQ0MjQ1MDk0M24pOworc2hvdWxkQmUoQmln
SW50LmFzVWludE4oMzQsIC0weDgwMDAwMDAxbiksIDE1MDMyMzg1NTM1bik7CisKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDMwLCAtMHhmZmZmZmZmZm4pLCAxbik7CitzaG91bGRCZShCaWdJbnQu
YXNVaW50TigzMSwgLTB4ZmZmZmZmZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4o
MzIsIC0weGZmZmZmZmZmbiksIDFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMzLCAtMHhm
ZmZmZmZmZm4pLCA0Mjk0OTY3Mjk3bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzNCwgLTB4
ZmZmZmZmZmZuKSwgMTI4ODQ5MDE4ODluKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIs
IDB4N2ZmZmZmZmZmZmZmZmZmZm4pLCA0NjExNjg2MDE4NDI3Mzg3OTAzbik7CitzaG91bGRCZShC
aWdJbnQuYXNVaW50Tig2MywgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4
MDduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0LCAweDdmZmZmZmZmZmZmZmZmZmZuKSwg
OTIyMzM3MjAzNjg1NDc3NTgwN24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjUsIDB4N2Zm
ZmZmZmZmZmZmZmZmZm4pLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7CitzaG91bGRCZShCaWdJbnQu
YXNVaW50Tig2NiwgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsK
Kworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCAwbik7
CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MywgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDBuKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0LCAweDgwMDAwMDAwMDAwMDAwMDBuKSwgOTIyMzM3
MjAzNjg1NDc3NTgwOG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjUsIDB4ODAwMDAwMDAw
MDAwMDAwMG4pLCA5MjIzMzcyMDM2ODU0Nzc1ODA4bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50
Tig2NiwgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsKKworc2hv
dWxkQmUoQmlnSW50LmFzVWludE4oNjIsIDB4ZmZmZmZmZmZmZmZmZmZmZm4pLCA0NjExNjg2MDE4
NDI3Mzg3OTAzbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MywgMHhmZmZmZmZmZmZmZmZm
ZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0
LCAweGZmZmZmZmZmZmZmZmZmZmZuKSwgMTg0NDY3NDQwNzM3MDk1NTE2MTVuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDY1LCAweGZmZmZmZmZmZmZmZmZmZmZuKSwgMTg0NDY3NDQwNzM3MDk1
NTE2MTVuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY2LCAweGZmZmZmZmZmZmZmZmZmZmZu
KSwgMTg0NDY3NDQwNzM3MDk1NTE2MTVuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIs
IC0weDgwMDAwMDAwMDAwMDAwMG4pLCA0MDM1MjI1MjY2MTIzOTY0NDE2bik7CitzaG91bGRCZShC
aWdJbnQuYXNVaW50Tig2MywgLTB4ODAwMDAwMDAwMDAwMDAwbiksIDg2NDY5MTEyODQ1NTEzNTIz
MjBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0LCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwg
MTc4NzAyODMzMjE0MDYxMjgxMjhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY1LCAtMHg4
MDAwMDAwMDAwMDAwMDBuKSwgMzYzMTcwMjczOTUxMTU2Nzk3NDRuKTsKK3Nob3VsZEJlKEJpZ0lu
dC5hc1VpbnROKDY2LCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwgNzMyMTA1MTU1NDI1MzQ3ODI5NzZu
KTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIsIC0weDgwMDAwMDAwMDAwMDAwMW4pLCA0
MDM1MjI1MjY2MTIzOTY0NDE1bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MywgLTB4ODAw
MDAwMDAwMDAwMDAxbiksIDg2NDY5MTEyODQ1NTEzNTIzMTluKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c1VpbnROKDY0LCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgMTc4NzAyODMzMjE0MDYxMjgxMjduKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY1LCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgMzYzMTcw
MjczOTUxMTU2Nzk3NDNuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY2LCAtMHg4MDAwMDAw
MDAwMDAwMDFuKSwgNzMyMTA1MTU1NDI1MzQ3ODI5NzVuKTsKKworc2hvdWxkQmUoQmlnSW50LmFz
VWludE4oNjIsIC0weGZmZmZmZmZmZmZmZmZmZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFz
VWludE4oNjMsIC0weGZmZmZmZmZmZmZmZmZmZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFz
VWludE4oNjQsIC0weGZmZmZmZmZmZmZmZmZmZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFz
VWludE4oNjUsIC0weGZmZmZmZmZmZmZmZmZmZmZuKSwgMTg0NDY3NDQwNzM3MDk1NTE2MTduKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY2LCAtMHhmZmZmZmZmZmZmZmZmZmZmbiksIDU1MzQw
MjMyMjIxMTI4NjU0ODQ5bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2NywgLTB4ZmZmZmZm
ZmZmZmZmZmZmZm4pLCAxMjkxMjcyMDg1MTU5NjY4NjEzMTNuKTsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlv
bnMueWFtbAppbmRleCAyYzFhY2FhZjgwMDFhMzUyZTgyYTA3MDI2NTc1ZDE2MjUzMjU4ZDU2Li40
NGY0OGZiMjVjNDM1ZTRlNzczODEzMjZmOWY2YTFmOTVmNTM2YTA0IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVj
dGF0aW9ucy55YW1sCkBAIC02NzgsNjYgKzY3OCw2IEBAIHRlc3QvYnVpbHQtaW5zL0FycmF5SXRl
cmF0b3JQcm90b3R5cGUvbmV4dC9kZXRhY2gtdHlwZWRhcnJheS1pbi1wcm9ncmVzcy5qczoKIHRl
c3QvYnVpbHQtaW5zL0FzeW5jR2VuZXJhdG9yUHJvdG90eXBlL3JldHVybi9yZXR1cm4tc3VzcGVu
ZGVkWWllbGQtcHJvbWlzZS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVy
ZTpUZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJvcjogQXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVy
YXRvciwgcmVzdWx0VmFsdWUsIHRydWUpIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgUHJv
bWlzZV3Cuywgwqt1bndyYXBwZWQtdmFsdWXCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1cmU6VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6IEFz
eW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0b3IsIHJlc3VsdFZhbHVlLCB0cnVlKSBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqtbb2JqZWN0IFByb21pc2VdwrssIMKrdW53cmFwcGVkLXZhbHVlwrspIHRv
IGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2FyaXRobWV0aWMuanM6Ci0g
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7
LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVp
bHQtaW5zL0JpZ0ludC9hc0ludE4vYmlnaW50LXRvYmlnaW50LWVycm9ycy5qczoKLSAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6IG5vIGFyZ3VtZW50ID0+IHVuZGVmaW5lZCA9PiBU
eXBlRXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRp
b24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb0Jp
Z0ludDogbm8gYXJndW1lbnQgPT4gdW5kZWZpbmVkID0+IFR5cGVFcnJvciBFeHBlY3RlZCBhIFR5
cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
LXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYmlnaW50LXRvYmlnaW50LXRvcHJpbWl0aXZl
LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2
ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHC
uykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZl
OiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5k
ZWZpbmVkwrssIMKrMcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50
Ti9iaWdpbnQtdG9iaWdpbnQtd3JhcHBlZC12YWx1ZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IFRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRl
cm5hbCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYmlnaW50LXRvYmlnaW50LmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTC
uywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1
aWx0LWlucy9CaWdJbnQvYXNJbnROL2JpdHMtdG9pbmRleC1lcnJvcnMuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IFRvSW5kZXg6IHRocm93IHdoZW4gaW50ZWdlckluZGV4IDwgMCBFeHBl
Y3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb0luZGV4OiB0aHJvdyB3
aGVuIGludGVnZXJJbmRleCA8IDAgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBi
dXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQmlnSW50
L2FzSW50Ti9iaXRzLXRvaW5kZXgtdG9wcmltaXRpdmUuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrLTHCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHBy
ZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrLTHCuykgdG8gYmUg
dHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYml0cy10b2luZGV4LXdyYXBwZWQt
dmFsdWVzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3gg
b2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTC
uywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1By
aW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFs
dWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJ
bnQvYXNJbnROL2JpdHMtdG9pbmRleC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9vcmRlci1v
Zi1zdGVwcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrMMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywgwqsywrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0
LWlucy9CaWdJbnQvYXNVaW50Ti9hcml0aG1ldGljLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUn
Ci0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRl
ZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50
Ti9iaWdpbnQtdG9iaWdpbnQtZXJyb3JzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBU
b0JpZ0ludDogbm8gYXJndW1lbnQgPT4gdW5kZWZpbmVkID0+IFR5cGVFcnJvciBFeHBlY3RlZCBh
IFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvQmlnSW50OiBubyBhcmd1bWVudCA9
PiB1bmRlZmluZWQgPT4gVHlwZUVycm9yIEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93
biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQmln
SW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50LXRvcHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNl
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLSAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRh
a2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMcK7KSB0
byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50
LXdyYXBwZWQtdmFsdWVzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2
ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1
bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0
LWlucy9CaWdJbnQvYXNVaW50Ti9iaWdpbnQtdG9iaWdpbnQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
q3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9h
c1VpbnROL2JpdHMtdG9pbmRleC1lcnJvcnMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IFRvSW5kZXg6IHRocm93IHdoZW4gaW50ZWdlckluZGV4IDwgMCBFeHBlY3RlZCBhIFJhbmdlRXJy
b3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb0luZGV4OiB0aHJvdyB3aGVuIGludGVnZXJJbmRl
eCA8IDAgRXhwZWN0ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYml0cy10
b2luZGV4LXRvcHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1p
dGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
q3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWls
dC1pbnMvQmlnSW50L2FzVWludE4vYml0cy10b2luZGV4LXdyYXBwZWQtdmFsdWVzLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50
ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJl
IHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3gg
b2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTC
uywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaXRz
LXRvaW5kZXguanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL29yZGVyLW9mLXN0ZXBzLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrMsK7
KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrMMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3
L2N1c3RvbS1wcm90by1hY2Nlc3MtZGV0YWNoZXMtYnVmZmVyLmpzOgogICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2Vw
dGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJv
d24gYXQgYWxsJwo=
</data>
<flag name="review"
          id="413789"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398519</attachid>
            <date>2020-05-05 09:30:21 -0700</date>
            <delta_ts>2020-05-05 14:15:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181144-20200505093017.patch</filename>
            <type>text/plain</type>
            <size>37376</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
YTNjOTFkNDcwMTViMGM4NmU2MmNiNWQ1ZjFiNjgwMjAzZTRhNDY4Li5lNDJkNGFjOTM4ZDU1ZjA5
YThkZTE3OTAwYjliY2JhN2RiMTg2OTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAyMC0wNS0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBCaWdJbnQuYXNJbnROIGFuZCBCaWdJbnQuYXNV
aW50TgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
MTQ0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBpbXBsZW1lbnRzIEJpZ0ludC5hc0ludE5bMV0gYW5kIEJpZ0ludC5hc1VpbnROWzJdIGZl
YXR1cmVzLgorICAgICAgICBBcyB0aGUgc2FtZSB0byB0aGUgb3RoZXIgQmlnSW50IHJ1bnRpbWUg
QysrIGNvZGUsIHdlIHBvcnQgVjggY29kZSB0byBKU0MgdG8gaW1wbGVtZW50IGJvdGguCisKKyAg
ICAgICAgQmlnSW50LmFzSW50TiBpcyBgc3RhdGljX2Nhc3Q8aW50Tl90PihCaWdJbnQgdmFsdWUp
YCBhbmQgQmlnSW50LmFzVWludE4gaXMgYHN0YXRpY19jYXN0PHVpbnROX3Q+KEJpZ0ludCB2YWx1
ZSlgLgorICAgICAgICBUaGV5IGFyZSBnZXR0aW5nIHNsaWNlIG9mIE4gYml0cyBmcm9tIHR3bydz
IGNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIEJpZ0ludC4gVGhlIGRpZmZl
cmVuY2UgYmV0d2VlbgorICAgICAgICBhc0ludE4gYW5kIGFzVWludE4gaXMgYXNJbnROIHJlbmRl
cnMgTVNCIGFzIGEgc2lnbi4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIG9uY2Ugcm9sbGVkIG91
dCBkdWUgdG8gQVJNNjRfMzIgYnVpbGQgZmFpbHVyZSwgd2hpY2ggaXMgY2F1c2VkIGJ5IHRoZSBl
eGlzdGluZyBidWdbM10uIFJlbGFuZGluZyBpdAorICAgICAgICBzaW5jZSBpdCBpcyBub3cgZml4
ZWQuCisKKyAgICAgICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWJpZ2ludC5h
c2ludG4KKyAgICAgICAgWzJdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWJpZ2ludC5h
c3VpbnRuCisgICAgICAgIFszXTogaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzI2
MTE3NC93ZWJraXQKKworICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjp0b0JpZ0ludCk6CisgICAgICAgIChKU0M6OmJpZ0ludENvbnN0cnVjdG9y
RnVuY0FzVWludE4pOgorICAgICAgICAoSlNDOjpiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjp6ZXJvSW1w
bCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpkaXZpZGVJbXBsKToKKyAgICAgICAgKEpTQzo6
SlNCaWdJbnQ6OnVuYXJ5TWludXNJbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnJlbWFp
bmRlckltcGwpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6ZGlnaXREaXYpOgorICAgICAgICAo
SlNDOjpKU0JpZ0ludDo6YWJzb2x1dGVTdWIpOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YXNJ
bnROSW1wbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50Ojphc1VpbnROSW1wbCk6CisgICAgICAg
IChKU0M6OkpTQmlnSW50Ojp0cnVuY2F0ZVRvTkJpdHMpOgorICAgICAgICAoSlNDOjpKU0JpZ0lu
dDo6dHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byk6CisgICAgICAgIChKU0M6OkpTQmlnSW50
Ojphc0ludE4pOgorICAgICAgICAoSlNDOjpKU0JpZ0ludDo6YXNVaW50Tik6CisgICAgICAgICog
cnVudGltZS9KU0JpZ0ludC5oOgorCiAyMDIwLTA1LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVr
aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gSlNCaWdJbnQ6Om1heExlbmd0aEJpdHMgYW5k
IEpTQmlnSW50OjptYXhMZW5ndGggYXJlIHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQ5NjRmMzg3ZGE1NDBj
YTU4YTQwYmIzYjY5ZjkxOTQwNWNkZGI0ZS4uZjU5MDQxODI3OGRhODRhM2FhNjE2ZjhkNjI2NjBk
Y2E0M2U3OWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmln
SW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jp
Z0ludENvbnN0cnVjdG9yLmNwcApAQCAtNzcsMjkgKzc3LDMxIEBAIHZvaWQgQmlnSW50Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90
b3R5cGUpCiAKIEpTVmFsdWUgdG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBhcmd1bWVudCkKIHsKLSAgICBBU1NFUlQoYXJndW1lbnQuaXNQcmltaXRpdmUoKSk7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gYXJndW1lbnQu
dG9QcmltaXRpdmUoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIAotICAgIGlmIChhcmd1bWVudC5pc0JpZ0ludCgpKQotICAgICAgICByZXR1
cm4gYXJndW1lbnQ7CisgICAgaWYgKHByaW1pdGl2ZS5pc0JpZ0ludCgpKQorICAgICAgICByZXR1
cm4gcHJpbWl0aXZlOwogCi0gICAgaWYgKGFyZ3VtZW50LmlzQm9vbGVhbigpKSB7CisgICAgaWYg
KHByaW1pdGl2ZS5pc0Jvb2xlYW4oKSkgewogI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgcmV0
dXJuIGpzQmlnSW50MzIoYXJndW1lbnQuYXNCb29sZWFuKCkpOworICAgICAgICByZXR1cm4ganNC
aWdJbnQzMihwcmltaXRpdmUuYXNCb29sZWFuKCkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIEpT
QmlnSW50OjpjcmVhdGVGcm9tKHZtLCBhcmd1bWVudC5hc0Jvb2xlYW4oKSk7CisgICAgICAgIHJl
dHVybiBKU0JpZ0ludDo6Y3JlYXRlRnJvbSh2bSwgcHJpbWl0aXZlLmFzQm9vbGVhbigpKTsKICNl
bmRpZgogICAgIH0KIAotICAgIGlmIChhcmd1bWVudC5pc1N0cmluZygpKSB7CisgICAgaWYgKHBy
aW1pdGl2ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAg
cmV0dXJuIHRvU3RyaW5nVmlldyhnbG9iYWxPYmplY3QsIGFyZ3VtZW50LCBbJl0gKFN0cmluZ1Zp
ZXcgdmlldykgeworICAgICAgICByZXR1cm4gdG9TdHJpbmdWaWV3KGdsb2JhbE9iamVjdCwgcHJp
bWl0aXZlLCBbJl0gKFN0cmluZ1ZpZXcgdmlldykgewogICAgICAgICAgICAgcmV0dXJuIEpTQmln
SW50OjpwYXJzZUludChnbG9iYWxPYmplY3QsIHZpZXcpOwogICAgICAgICB9KTsKICAgICB9CiAK
LSAgICBBU1NFUlQoYXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSB8fCBhcmd1bWVudC5pc051
bWJlcigpIHx8IGFyZ3VtZW50LmlzU3ltYm9sKCkpOworICAgIEFTU0VSVChwcmltaXRpdmUuaXNV
bmRlZmluZWRPck51bGwoKSB8fCBwcmltaXRpdmUuaXNOdW1iZXIoKSB8fCBwcmltaXRpdmUuaXNT
eW1ib2woKSk7CiAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFs
aWQgYXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3MpOwogICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogfQpAQCAtMTMxLDE4ICsxMzMsNDQgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgY2FsbEJpZ0ludENvbnN0cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWwKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZSh0b0Jp
Z0ludChnbG9iYWxPYmplY3QsIHByaW1pdGl2ZSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc1VpbnROKEpTR2xvYmFsT2JqZWN0Kiwg
Q2FsbEZyYW1lKikKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYmlnSW50Q29uc3RydWN0
b3JGdW5jQXNVaW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKIHsKLSAgICAvLyBGSVhNRTogW0VTTmV4dF1bQmlnSW50XSBJbXBsZW1lbnQgQmln
SW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTQ0Ci0gICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5l
ZCgpOworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG51bWJlck9mQml0cyA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJudW1iZXIgb2YgYml0cyIp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGJp
Z0ludCA9IHRvQmlnSW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworI2lmIFVTRShCSUdJTlQzMikK
KyAgICBpZiAoYmlnSW50LmlzQmlnSW50MzIoKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzVWludE4oZ2xvYmFsT2JqZWN0LCBu
dW1iZXJPZkJpdHMsIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSkpKTsKKyNlbmRpZgorCisgICAg
QVNTRVJUKGJpZ0ludC5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzVWludE4oZ2xvYmFsT2JqZWN0LCBudW1i
ZXJPZkJpdHMsIGJpZ0ludC5hc0hlYXBCaWdJbnQoKSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1Y3RvckZ1bmNBc0ludE4oSlNHbG9iYWxPYmplY3Qq
LCBDYWxsRnJhbWUqKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBiaWdJbnRDb25zdHJ1
Y3RvckZ1bmNBc0ludE4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpCiB7Ci0gICAgLy8gRklYTUU6IFtFU05leHRdW0JpZ0ludF0gSW1wbGVtZW50IEJp
Z0ludC5hc0ludE4gYW5kIEJpZ0ludC5hc1VpbnROCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NAotICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmlu
ZWQoKTsKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBudW1iZXJPZkJpdHMgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgoZ2xvYmFsT2JqZWN0LCAibnVtYmVyIG9mIGJpdHMi
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBi
aWdJbnQgPSB0b0JpZ0ludChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyNpZiBVU0UoQklHSU5UMzIp
CisgICAgaWYgKGJpZ0ludC5pc0JpZ0ludDMyKCkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKEpTQmlnSW50Ojphc0ludE4oZ2xvYmFsT2JqZWN0LCBu
dW1iZXJPZkJpdHMsIGJpZ0ludC5iaWdJbnQzMkFzSW50MzIoKSkpKTsKKyNlbmRpZgorCisgICAg
QVNTRVJUKGJpZ0ludC5pc0hlYXBCaWdJbnQoKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6OmFzSW50TihnbG9iYWxPYmplY3QsIG51bWJl
ck9mQml0cywgYmlnSW50LmFzSGVhcEJpZ0ludCgpKSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCA1OWVm
ZjZlZGJlNTZhY2MzMmZhOGQzZmVjYWMwODlhMjU5ZmY3ODcwLi44MmI3ZmIxOWQwYzdhNDc2NmM0
MTUwZDJkNDgwYzI1OTc1OWFjMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0JpZ0ludC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCaWdJbnQuY3BwCkBAIC01NSw4ICs1NSw2IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKLSNkZWZpbmUgU1RBVElDX0FTU0VSVChjb25kKSBz
dGF0aWNfYXNzZXJ0KGNvbmQsICJKU0JpZ0ludCBhc3N1bWVzICIgI2NvbmQpCi0KIG5hbWVzcGFj
ZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8gSlNCaWdJbnQ6OnNfaW5mbyA9IHsgIkJpZ0ludCIs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNCaWdJbnQp
IH07CkBAIC0zOTUsNiArMzkzLDE2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgdHJ5
Q29udmVydFRvQmlnSW50MzIoSlNCaWdJbnQ6OkltcGxSZXN1bHQgaW1wbFJlc3VsCiAgICAgcmV0
dXJuIHRyeUNvbnZlcnRUb0JpZ0ludDMyKGltcGxSZXN1bHQucGF5bG9hZC5hc0hlYXBCaWdJbnQo
KSk7CiB9CiAKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEpTQmlnSW50OjpJbXBsUmVzdWx0IHplcm9J
bXBsKFZNJiB2bSkKK3sKKyNpZiBVU0UoQklHSU5UMzIpCisgICAgVU5VU0VEX1BBUkFNKHZtKTsK
KyAgICByZXR1cm4ganNCaWdJbnQzMigwKTsKKyNlbHNlCisgICAgcmV0dXJuIEpTQmlnSW50Ojpj
cmVhdGVaZXJvKHZtKTsKKyNlbmRpZgorfQorCiAvLyBNdWx0aXBsaWVzIHt0aGlzfSB3aXRoIHtm
YWN0b3J9IGFuZCBhZGRzIHtzdW1tYW5kfSB0byB0aGUgcmVzdWx0Lgogdm9pZCBKU0JpZ0ludDo6
aW5wbGFjZU11bHRpcGx5QWRkKERpZ2l0IGZhY3RvciwgRGlnaXQgc3VtbWFuZCkKIHsKQEAgLTU2
NiwxMyArNTc0LDggQEAgSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmRpdmlkZUltcGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmlnSW50SW0KICAgICAvLyAyLiBMZXQgcXVv
dGllbnQgYmUgdGhlIG1hdGhlbWF0aWNhbCB2YWx1ZSBvZiB4IGRpdmlkZWQgYnkgeS4KICAgICAv
LyAzLiBSZXR1cm4gYSBCaWdJbnQgcmVwcmVzZW50aW5nIHF1b3RpZW50IHJvdW5kZWQgdG93YXJk
cyAwIHRvIHRoZSBuZXh0CiAgICAgLy8gICAgaW50ZWdyYWwgdmFsdWUuCi0gICAgaWYgKGFic29s
dXRlQ29tcGFyZSh4LCB5KSA9PSBDb21wYXJpc29uUmVzdWx0OjpMZXNzVGhhbikgewotI2lmIFVT
RShCSUdJTlQzMikKLSAgICAgICAgcmV0dXJuIGpzQmlnSW50MzIoMCk7Ci0jZWxzZQotICAgICAg
ICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOwotI2VuZGlmCi0gICAgfQorICAgIGlm
IChhYnNvbHV0ZUNvbXBhcmUoeCwgeSkgPT0gQ29tcGFyaXNvblJlc3VsdDo6TGVzc1RoYW4pCisg
ICAgICAgIHJldHVybiB6ZXJvSW1wbCh2bSk7CiAKICAgICBKU0JpZ0ludCogcXVvdGllbnQgPSBu
dWxscHRyOwogICAgIGJvb2wgcmVzdWx0U2lnbiA9IHguc2lnbigpICE9IHkuc2lnbigpOwpAQCAt
NjIyLDEzICs2MjUsOCBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmNvcHkoVk0mIHZtLCBCaWdJbnRJ
bXBsIHgpCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KIEpTQmlnSW50OjpJbXBsUmVz
dWx0IEpTQmlnSW50Ojp1bmFyeU1pbnVzSW1wbChWTSYgdm0sIEJpZ0ludEltcGwgeCkKIHsKLSAg
ICBpZiAoeC5pc1plcm8oKSkgewotI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgcmV0dXJuIGpz
QmlnSW50MzIoMCk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8o
dm0pOwotI2VuZGlmCi0gICAgfQorICAgIGlmICh4LmlzWmVybygpKQorICAgICAgICByZXR1cm4g
emVyb0ltcGwodm0pOwogCiAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IGNvcHkodm0sIHgpOwogICAg
IHJlc3VsdC0+c2V0U2lnbigheC5zaWduKCkpOwpAQCAtNjYwLDIzICs2NTgsMTMgQEAgSlNCaWdJ
bnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OnJlbWFpbmRlckltcGwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQmlnSW4KICAgICBKU0JpZ0ludCogcmVtYWluZGVyOwogICAgIGlmICh5Lmxl
bmd0aCgpID09IDEpIHsKICAgICAgICAgRGlnaXQgZGl2aXNvciA9IHkuZGlnaXQoMCk7Ci0gICAg
ICAgIGlmIChkaXZpc29yID09IDEpIHsKLSNpZiBVU0UoQklHSU5UMzIpCi0gICAgICAgIHJldHVy
biBqc0JpZ0ludDMyKDApOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIEpTQmlnSW50OjpjcmVhdGVa
ZXJvKHZtKTsKLSNlbmRpZgotICAgICAgICB9CisgICAgICAgIGlmIChkaXZpc29yID09IDEpCisg
ICAgICAgICAgICByZXR1cm4gemVyb0ltcGwodm0pOwogCiAgICAgICAgIERpZ2l0IHJlbWFpbmRl
ckRpZ2l0OwogICAgICAgICBhYnNvbHV0ZURpdldpdGhEaWdpdERpdmlzb3Iodm0sIHgsIGRpdmlz
b3IsIG51bGxwdHIsIHJlbWFpbmRlckRpZ2l0KTsKLSAgICAgICAgaWYgKCFyZW1haW5kZXJEaWdp
dCkgewotI2lmIFVTRShCSUdJTlQzMikKLSAgICAgICAgICAgIHJldHVybiBqc0JpZ0ludDMyKDAp
OwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBKU0JpZ0ludDo6Y3JlYXRlWmVybyh2bSk7Ci0j
ZW5kaWYKLSAgICAgICAgfQorICAgICAgICBpZiAoIXJlbWFpbmRlckRpZ2l0KQorICAgICAgICAg
ICAgcmV0dXJuIHplcm9JbXBsKHZtKTsKIAogICAgICAgICByZW1haW5kZXIgPSBjcmVhdGVXaXRo
TGVuZ3RoVW5jaGVja2VkKHZtLCAxKTsKICAgICAgICAgcmVtYWluZGVyLT5zZXREaWdpdCgwLCBy
ZW1haW5kZXJEaWdpdCk7CkBAIC0xMTg1LDcgKzExNzMsNyBAQCBpbmxpbmUgSlNCaWdJbnQ6OkRp
Z2l0IEpTQmlnSW50OjpkaWdpdERpdihEaWdpdCBoaWdoLCBEaWdpdCBsb3csIERpZ2l0IGRpdmlz
b3IsCiAgICAgLy8gbGVmdCBvcGVyYW5kIi4gV2UgbWFzayB0aGUgcmlnaHQgb3BlcmFuZCBvZiB0
aGUgc2hpZnQgYnkge3NoaWZ0TWFza30gKGBkaWdpdEJpdHMgLSAxYCksIHdoaWNoIG1ha2VzIGBk
aWdpdEJpdHMgLSAwYCB6ZXJvLgogICAgIC8vIFRoaXMgc2hpZnRpbmcgcHJvZHVjZXMgYSB2YWx1
ZSB3aGljaCBjb3ZlcnMgMCA8IHtzfSA8PSAoZGlnaXRCaXRzIC0gMSkgY2FzZXMuIHtzfSA9PSBk
aWdpdEJpdHMgbmV2ZXIgaGFwcGVuIGFzIHdlIGFzc2VydGVkLgogICAgIC8vIFNpbmNlIHtzWmVy
b01hc2t9IGNsZWFycyB0aGUgdmFsdWUgaW4gdGhlIGNhc2Ugb2Yge3N9ID09IDAsIHtzfSA9PSAw
IGNhc2UgaXMgYWxzbyBjb3ZlcmVkLgotICAgIFNUQVRJQ19BU1NFUlQoc2l6ZW9mKENQVVJlZ2lz
dGVyKSA9PSBzaXplb2YoRGlnaXQpKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihDUFVSZWdp
c3RlcikgPT0gc2l6ZW9mKERpZ2l0KSk7CiAgICAgRGlnaXQgc1plcm9NYXNrID0gc3RhdGljX2Nh
c3Q8RGlnaXQ+KCgtc3RhdGljX2Nhc3Q8Q1BVUmVnaXN0ZXI+KHMpKSA+PiAoZGlnaXRCaXRzIC0g
MSkpOwogICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2hpZnRNYXNrID0gZGlnaXRCaXRz
IC0gMTsKICAgICBEaWdpdCB1bjMyID0gKGhpZ2ggPDwgcykgfCAoKGxvdyA+PiAoKGRpZ2l0Qml0
cyAtIHMpICYgc2hpZnRNYXNrKSkgJiBzWmVyb01hc2spOwpAQCAtMTQyNSw3ICsxNDEzLDcgQEAg
SlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmFic29sdXRlU3ViKFZNJiB2bSwgQmlnSW50
SW1wbDEgeCwgQmlnSW50SW1wbDIgeSwKICAgICAgICAgcmV0dXJuIHJlc3VsdFNpZ24gPT0geC5z
aWduKCkgPyBJbXBsUmVzdWx0IHsgeCB9IDogSlNCaWdJbnQ6OnVuYXJ5TWludXNJbXBsKHZtLCB4
KTsKIAogICAgIGlmIChjb21wYXJpc29uUmVzdWx0ID09IENvbXBhcmlzb25SZXN1bHQ6OkVxdWFs
KQotICAgICAgICByZXR1cm4gSlNCaWdJbnQ6OmNyZWF0ZVplcm8odm0pOworICAgICAgICByZXR1
cm4gemVyb0ltcGwodm0pOwogCiAgICAgSlNCaWdJbnQqIHJlc3VsdCA9IEpTQmlnSW50OjpjcmVh
dGVXaXRoTGVuZ3RoVW5jaGVja2VkKHZtLCB4Lmxlbmd0aCgpKTsKIApAQCAtMjczMSw0ICsyNzE5
LDIwNSBAQCBKU1ZhbHVlIEpTQmlnSW50Ojp0b051bWJlckhlYXAoSlNCaWdJbnQqIGJpZ0ludCkK
ICAgICByZXR1cm4ganNOdW1iZXIoYml0d2lzZV9jYXN0PGRvdWJsZT4oZG91YmxlQml0cykpOwog
fQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1wbD4KK0pTQmlnSW50OjpJbXBsUmVzdWx0
IEpTQmlnSW50Ojphc0ludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVpbnQ2
NF90IG4sIEJpZ0ludEltcGwgYmlnSW50KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKworICAgIGlmIChiaWdJbnQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybiBiaWdJbnQ7
CisgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgcmV0dXJuIHplcm9JbXBsKHZtKTsKKworICAgIHVp
bnQ2NF90IG5lZWRlZExlbmd0aCA9IChuICsgZGlnaXRCaXRzIC0gMSkgLyBkaWdpdEJpdHM7Cisg
ICAgdWludDY0X3QgbGVuZ3RoID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJpZ0ludC5sZW5ndGgo
KSk7CisgICAgLy8gSWYgYmlnSW50IGhhcyBsZXNzIHRoYW4gbiBiaXRzLCByZXR1cm4gaXQgZGly
ZWN0bHkuCisgICAgaWYgKGxlbmd0aCA8IG5lZWRlZExlbmd0aCkKKyAgICAgICAgcmV0dXJuIGJp
Z0ludDsKKyAgICBBU1NFUlQobmVlZGVkTGVuZ3RoIDw9IElOVDMyX01BWCk7CisgICAgRGlnaXQg
dG9wRGlnaXQgPSBiaWdJbnQuZGlnaXQoc3RhdGljX2Nhc3Q8aW50MzJfdD4obmVlZGVkTGVuZ3Ro
KSAtIDEpOworICAgIERpZ2l0IGNvbXBhcmVEaWdpdCA9IHN0YXRpY19jYXN0PERpZ2l0PigxKSA8
PCAoKG4gLSAxKSAlIGRpZ2l0Qml0cyk7CisgICAgaWYgKGxlbmd0aCA9PSBuZWVkZWRMZW5ndGgg
JiYgdG9wRGlnaXQgPCBjb21wYXJlRGlnaXQpCisgICAgICAgIHJldHVybiBiaWdJbnQ7CisKKyAg
ICAvLyBPdGhlcndpc2Ugd2UgaGF2ZSB0byB0cnVuY2F0ZSAod2hpY2ggaXMgYSBuby1vcCBpbiB0
aGUgc3BlY2lhbCBjYXNlCisgICAgLy8gb2YgYmlnSW50ID09IC0yXihuLTEpKSwgYW5kIGRldGVy
bWluZSB0aGUgcmlnaHQgc2lnbi4gV2UgYWxzbyBtaWdodCBoYXZlCisgICAgLy8gdG8gc3VidHJh
Y3QgZnJvbSAyXm4gdG8gc2ltdWxhdGUgaGF2aW5nIHR3bydzIGNvbXBsZW1lbnQgcmVwcmVzZW50
YXRpb24uCisgICAgLy8gSW4gbW9zdCBjYXNlcywgdGhlIHJlc3VsdCdzIHNpZ24gaXMgYmlnSW50
LnNpZ24oKSB4b3IgIihuLTEpdGggYml0IHByZXNlbnQiLgorICAgIC8vIFRoZSBvbmx5IGV4Y2Vw
dGlvbiBpcyB3aGVuIGJpZ0ludCBpcyBuZWdhdGl2ZSwgaGFzIHRoZSAobi0xKXRoIGJpdCwgYW5k
IGFsbAorICAgIC8vIGl0cyBiaXRzIGJlbG93IChuLTEpIGFyZSB6ZXJvLiBJbiB0aGF0IGNhc2Us
IHRoZSByZXN1bHQgaXMgdGhlIG1pbmltdW0KKyAgICAvLyBuLWJpdCBpbnRlZ2VyIChleGFtcGxl
OiBhc0ludE4oMywgLTEybikgPT4gLTRuKS4KKyAgICBib29sIGhhc0JpdCA9ICh0b3BEaWdpdCAm
IGNvbXBhcmVEaWdpdCkgPT0gY29tcGFyZURpZ2l0OworICAgIEFTU0VSVChuIDw9IElOVDMyX01B
WCk7CisgICAgaW50MzJfdCBOID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4obik7CisgICAgaWYgKCFo
YXNCaXQpCisgICAgICAgIHJldHVybiB0cnVuY2F0ZVRvTkJpdHModm0sIE4sIGJpZ0ludCk7Cisg
ICAgaWYgKCFiaWdJbnQuc2lnbigpKQorICAgICAgICByZXR1cm4gdHJ1bmNhdGVBbmRTdWJGcm9t
UG93ZXJPZlR3byh2bSwgTiwgYmlnSW50LCB0cnVlKTsKKworICAgIC8vIE5lZ2F0aXZlIG51bWJl
cnMgbXVzdCBzdWJ0cmFjdCBmcm9tIDJebiwgZXhjZXB0IGZvciB0aGUgc3BlY2lhbCBjYXNlCisg
ICAgLy8gZGVzY3JpYmVkIGFib3ZlLgorICAgIGlmICgodG9wRGlnaXQgJiAoY29tcGFyZURpZ2l0
IC0gMSkpID09IDApIHsKKyAgICAgICAgZm9yIChpbnQzMl90IGkgPSBzdGF0aWNfY2FzdDxpbnQz
Ml90PihuZWVkZWRMZW5ndGgpIC0gMjsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgIGlmIChi
aWdJbnQuZGlnaXQoaSkgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1bmNhdGVBbmRT
dWJGcm9tUG93ZXJPZlR3byh2bSwgTiwgYmlnSW50LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICAg
ICAgLy8gVHJ1bmNhdGlvbiBpcyBuby1vcCBpZiBiaWdJbnQgPT0gLTJeKG4tMSkuCisgICAgICAg
IGlmIChsZW5ndGggPT0gbmVlZGVkTGVuZ3RoICYmIHRvcERpZ2l0ID09IGNvbXBhcmVEaWdpdCkK
KyAgICAgICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgICAgIHJldHVybiB0cnVuY2F0ZVRvTkJp
dHModm0sIE4sIGJpZ0ludCk7CisgICAgfQorICAgIHJldHVybiB0cnVuY2F0ZUFuZFN1YkZyb21Q
b3dlck9mVHdvKHZtLCBOLCBiaWdJbnQsIGZhbHNlKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IEJpZ0ludEltcGw+CitKU0JpZ0ludDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6YXNVaW50TkltcGwo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgbiwgQmlnSW50SW1wbCBiaWdJ
bnQpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChiaWdJbnQuaXNaZXJvKCkpCisg
ICAgICAgIHJldHVybiBiaWdJbnQ7CisgICAgaWYgKG4gPT0gMCkKKyAgICAgICAgcmV0dXJuIHpl
cm9JbXBsKHZtKTsKKworICAgIC8vIElmIGJpZ0ludCBpcyBuZWdhdGl2ZSwgc2ltdWxhdGUgdHdv
J3MgY29tcGxlbWVudCByZXByZXNlbnRhdGlvbi4KKyAgICBpZiAoYmlnSW50LnNpZ24oKSkgewor
ICAgICAgICBpZiAobiA+IG1heExlbmd0aEJpdHMpIHsKKyAgICAgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRo
aXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28o
dm0sIHN0YXRpY19jYXN0PGludDMyX3Q+KG4pLCBiaWdJbnQsIGZhbHNlKTsKKyAgICB9CisKKyAg
ICAvLyBJZiBiaWdJbnQgaXMgcG9zaXRpdmUgYW5kIGhhcyB1cCB0byBuIGJpdHMsIHJldHVybiBp
dCBkaXJlY3RseS4KKyAgICBpZiAobiA+PSBtYXhMZW5ndGhCaXRzKQorICAgICAgICByZXR1cm4g
YmlnSW50OworICAgIHN0YXRpY19hc3NlcnQobWF4TGVuZ3RoQml0cyA8IElOVDMyX01BWCAtIGRp
Z2l0Qml0cyk7CisgICAgaW50MzJfdCBuZWVkZWRMZW5ndGggPSBzdGF0aWNfY2FzdDxpbnQzMl90
PigobiArIGRpZ2l0Qml0cyAtIDEpIC8gZGlnaXRCaXRzKTsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oYmlnSW50Lmxlbmd0aCgpKSA8IG5lZWRlZExlbmd0aCkKKyAgICAgICAgcmV0dXJu
IGJpZ0ludDsKKworICAgIGludDMyX3QgYml0c0luVG9wRGlnaXQgPSBuICUgZGlnaXRCaXRzOwor
ICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihiaWdJbnQubGVuZ3RoKCkpID09IG5lZWRlZExl
bmd0aCkgeworICAgICAgICBpZiAoYml0c0luVG9wRGlnaXQgPT0gMCkKKyAgICAgICAgICAgIHJl
dHVybiBiaWdJbnQ7CisgICAgICAgIERpZ2l0IHRvcERpZ2l0ID0gYmlnSW50LmRpZ2l0KG5lZWRl
ZExlbmd0aCAtIDEpOworICAgICAgICBpZiAoKHRvcERpZ2l0ID4+IGJpdHNJblRvcERpZ2l0KSA9
PSAwKQorICAgICAgICAgICAgcmV0dXJuIGJpZ0ludDsKKyAgICB9CisKKyAgICAvLyBPdGhlcndp
c2UsIHRydW5jYXRlLgorICAgIEFTU0VSVChuIDw9IElOVDMyX01BWCk7CisgICAgcmV0dXJuIHRy
dW5jYXRlVG9OQml0cyh2bSwgc3RhdGljX2Nhc3Q8aW50MzJfdD4obiksIGJpZ0ludCk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNC
aWdJbnQ6OnRydW5jYXRlVG9OQml0cyhWTSYgdm0sIGludDMyX3QgbiwgQmlnSW50SW1wbCBiaWdJ
bnQpCit7CisgICAgQVNTRVJUKG4gIT0gMCk7CisgICAgQVNTRVJUKGJpZ0ludC5sZW5ndGgoKSA+
IG4gLyBkaWdpdEJpdHMpOworCisgICAgaW50MzJfdCBuZWVkZWREaWdpdHMgPSAobiArIChkaWdp
dEJpdHMgLSAxKSkgLyBkaWdpdEJpdHM7CisgICAgQVNTRVJUKG5lZWRlZERpZ2l0cyA8PSBzdGF0
aWNfY2FzdDxpbnQzMl90PihiaWdJbnQubGVuZ3RoKCkpKTsKKyAgICBKU0JpZ0ludCogcmVzdWx0
ID0gY3JlYXRlV2l0aExlbmd0aFVuY2hlY2tlZCh2bSwgbmVlZGVkRGlnaXRzKTsKKyAgICBBU1NF
UlQocmVzdWx0KTsKKworICAgIC8vIENvcHkgYWxsIGRpZ2l0cyBleGNlcHQgdGhlIE1TRC4KKyAg
ICBpbnQzMl90IGxhc3QgPSBuZWVkZWREaWdpdHMgLSAxOworICAgIGZvciAoaW50MzJfdCBpID0g
MDsgaSA8IGxhc3Q7IGkrKykKKyAgICAgICAgcmVzdWx0LT5zZXREaWdpdChpLCBiaWdJbnQuZGln
aXQoaSkpOworCisgICAgLy8gVGhlIE1TRCBtaWdodCBjb250YWluIGV4dHJhIGJpdHMgdGhhdCB3
ZSBkb24ndCB3YW50LgorICAgIERpZ2l0IG1zZCA9IGJpZ0ludC5kaWdpdChsYXN0KTsKKyAgICBp
ZiAobiAlIGRpZ2l0Qml0cyAhPSAwKSB7CisgICAgICAgIGludDMyX3QgZHJvcCA9IGRpZ2l0Qml0
cyAtIChuICUgZGlnaXRCaXRzKTsKKyAgICAgICAgbXNkID0gKG1zZCA8PCBkcm9wKSA+PiBkcm9w
OworICAgIH0KKyAgICByZXN1bHQtPnNldERpZ2l0KGxhc3QsIG1zZCk7CisgICAgcmVzdWx0LT5z
ZXRTaWduKGJpZ0ludC5zaWduKCkpOworICAgIHJldHVybiByZXN1bHQtPnJpZ2h0VHJpbSh2bSk7
Cit9CisKKy8vIFN1YnRyYWN0cyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgbiBiaXRzIG9mIGFicyhi
aWdJbnQpIGZyb20gMl5uLgordGVtcGxhdGUgPHR5cGVuYW1lIEJpZ0ludEltcGw+CitKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6dHJ1bmNhdGVBbmRTdWJGcm9tUG93ZXJPZlR3byhWTSYg
dm0sIGludDMyX3QgbiwgQmlnSW50SW1wbCBiaWdJbnQsIGJvb2wgcmVzdWx0U2lnbikKK3sKKyAg
ICBBU1NFUlQobiAhPSAwKTsKKyAgICBBU1NFUlQobiA8PSBzdGF0aWNfY2FzdDxpbnQzMl90Piht
YXhMZW5ndGhCaXRzKSk7CisKKyAgICBpbnQzMl90IG5lZWRlZERpZ2l0cyA9IChuICsgKGRpZ2l0
Qml0cyAtIDEpKSAvIGRpZ2l0Qml0czsKKyAgICBBU1NFUlQobmVlZGVkRGlnaXRzIDw9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KG1heExlbmd0aCkpOyAvLyBGb2xsb3dzIGZyb20gbiA8PSBtYXhMZW5n
dGhCaXRzLgorICAgIEpTQmlnSW50KiByZXN1bHQgPSBjcmVhdGVXaXRoTGVuZ3RoVW5jaGVja2Vk
KHZtLCBuZWVkZWREaWdpdHMpOworICAgIEFTU0VSVChyZXN1bHQpOworCisgICAgLy8gUHJvY2Vz
cyBhbGwgZGlnaXRzIGV4Y2VwdCB0aGUgTVNELgorICAgIGludDMyX3QgaSA9IDA7CisgICAgaW50
MzJfdCBsYXN0ID0gbmVlZGVkRGlnaXRzIC0gMTsKKyAgICBpbnQzMl90IGxlbmd0aCA9IGJpZ0lu
dC5sZW5ndGgoKTsKKyAgICBEaWdpdCBib3Jyb3cgPSAwOworICAgIC8vIFRha2UgZGlnaXRzIGZy
b20gYmlnSW50IHVubGVzcyBpdHMgbGVuZ3RoIGlzIGV4aGF1c3RlZC4KKyAgICBpbnQzMl90IGxp
bWl0ID0gc3RkOjptaW4obGFzdCwgbGVuZ3RoKTsKKyAgICBmb3IgKDsgaSA8IGxpbWl0OyBpKysp
IHsKKyAgICAgICAgRGlnaXQgbmV3Qm9ycm93ID0gMDsKKyAgICAgICAgRGlnaXQgZGlmZmVyZW5j
ZSA9IGRpZ2l0U3ViKDAsIGJpZ0ludC5kaWdpdChpKSwgbmV3Qm9ycm93KTsKKyAgICAgICAgZGlm
ZmVyZW5jZSA9IGRpZ2l0U3ViKGRpZmZlcmVuY2UsIGJvcnJvdywgbmV3Qm9ycm93KTsKKyAgICAg
ICAgcmVzdWx0LT5zZXREaWdpdChpLCBkaWZmZXJlbmNlKTsKKyAgICAgICAgYm9ycm93ID0gbmV3
Qm9ycm93OworICAgIH0KKyAgICAvLyBUaGVuIHNpbXVsYXRlIGxlYWRpbmcgemVyb2VzIGluIHti
aWdJbnR9IGFzIG5lZWRlZC4KKyAgICBmb3IgKDsgaSA8IGxhc3Q7IGkrKykgeworICAgICAgICBE
aWdpdCBuZXdCb3Jyb3cgPSAwOworICAgICAgICBEaWdpdCBkaWZmZXJlbmNlID0gZGlnaXRTdWIo
MCwgYm9ycm93LCBuZXdCb3Jyb3cpOworICAgICAgICByZXN1bHQtPnNldERpZ2l0KGksIGRpZmZl
cmVuY2UpOworICAgICAgICBib3Jyb3cgPSBuZXdCb3Jyb3c7CisgICAgfQorCisgICAgLy8gVGhl
IE1TRCBtaWdodCBjb250YWluIGV4dHJhIGJpdHMgdGhhdCB3ZSBkb24ndCB3YW50LgorICAgIERp
Z2l0IG1zZCA9IGxhc3QgPCBsZW5ndGggPyBiaWdJbnQuZGlnaXQobGFzdCkgOiAwOworICAgIGlu
dDMyX3QgbXNkQml0c0NvbnN1bWVkID0gbiAlIGRpZ2l0Qml0czsKKyAgICBEaWdpdCByZXN1bHRN
U0Q7CisgICAgaWYgKG1zZEJpdHNDb25zdW1lZCA9PSAwKSB7CisgICAgICAgIERpZ2l0IG5ld0Jv
cnJvdyA9IDA7CisgICAgICAgIHJlc3VsdE1TRCA9IGRpZ2l0U3ViKDAsIG1zZCwgbmV3Qm9ycm93
KTsKKyAgICAgICAgcmVzdWx0TVNEID0gZGlnaXRTdWIocmVzdWx0TVNELCBib3Jyb3csIG5ld0Jv
cnJvdyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50MzJfdCBkcm9wID0gZGlnaXRCaXRzIC0g
bXNkQml0c0NvbnN1bWVkOworICAgICAgICBtc2QgPSAobXNkIDw8IGRyb3ApID4+IGRyb3A7Cisg
ICAgICAgIERpZ2l0IG1pbnVlbmRNU0QgPSBzdGF0aWNfY2FzdDxEaWdpdD4oMSkgPDwgKGRpZ2l0
Qml0cyAtIGRyb3ApOworICAgICAgICBEaWdpdCBuZXdCb3Jyb3cgPSAwOworICAgICAgICByZXN1
bHRNU0QgPSBkaWdpdFN1YihtaW51ZW5kTVNELCBtc2QsIG5ld0JvcnJvdyk7CisgICAgICAgIHJl
c3VsdE1TRCA9IGRpZ2l0U3ViKHJlc3VsdE1TRCwgYm9ycm93LCBuZXdCb3Jyb3cpOworICAgICAg
ICBBU1NFUlQobmV3Qm9ycm93ID09IDApOyAvLyByZXN1bHQgPCAyXm4uCisgICAgICAgIC8vIElm
IGFsbCBzdWJ0cmFjdGVkIGJpdHMgd2VyZSB6ZXJvLCB3ZSBoYXZlIHRvIGdldCByaWQgb2YgdGhl
CisgICAgICAgIC8vIG1hdGVyaWFsaXplZCBtaW51ZW5kTVNEIGFnYWluLgorICAgICAgICByZXN1
bHRNU0QgJj0gKG1pbnVlbmRNU0QgLSAxKTsKKyAgICB9CisgICAgcmVzdWx0LT5zZXREaWdpdChs
YXN0LCByZXN1bHRNU0QpOworICAgIHJlc3VsdC0+c2V0U2lnbihyZXN1bHRTaWduKTsKKyAgICBy
ZXR1cm4gcmVzdWx0LT5yaWdodFRyaW0odm0pOworfQorCitKU1ZhbHVlIEpTQmlnSW50Ojphc0lu
dE4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgbiwgSlNCaWdJbnQqIGJp
Z0ludCkKK3sKKyAgICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoYXNJbnROSW1wbChnbG9i
YWxPYmplY3QsIG4sIEhlYXBCaWdJbnRJbXBsIHsgYmlnSW50IH0pKTsKK30KKworSlNWYWx1ZSBK
U0JpZ0ludDo6YXNVaW50TihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBu
LCBKU0JpZ0ludCogYmlnSW50KQoreworICAgIHJldHVybiB0cnlDb252ZXJ0VG9CaWdJbnQzMihh
c1VpbnROSW1wbChnbG9iYWxPYmplY3QsIG4sIEhlYXBCaWdJbnRJbXBsIHsgYmlnSW50IH0pKTsK
K30KKworI2lmIFVTRShCSUdJTlQzMikKK0pTVmFsdWUgSlNCaWdJbnQ6OmFzSW50TihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfdCBuLCBpbnQzMl90IGJpZ0ludCkKK3sKKyAg
ICByZXR1cm4gdHJ5Q29udmVydFRvQmlnSW50MzIoYXNJbnROSW1wbChnbG9iYWxPYmplY3QsIG4s
IEludDMyQmlnSW50SW1wbCB7IGJpZ0ludCB9KSk7Cit9CisKK0pTVmFsdWUgSlNCaWdJbnQ6OmFz
VWludE4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdWludDY0X3QgbiwgaW50MzJfdCBi
aWdJbnQpCit7CisgICAgcmV0dXJuIHRyeUNvbnZlcnRUb0JpZ0ludDMyKGFzVWludE5JbXBsKGds
b2JhbE9iamVjdCwgbiwgSW50MzJCaWdJbnRJbXBsIHsgYmlnSW50IH0pKTsKK30KKyNlbmRpZgor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0lu
dC5oCmluZGV4IGQxNDY2ZGMwM2UyYjFhNmMyN2U0NWM4NWQ2OGI4YmY5YWIzOGViMzQuLjcwMDg0
YTdmN2Q1NTY2YjgzYTM2MDczM2Q3OTVlZGU2MDcyODM4NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtNDEyLDYgKzQxMiwxNCBAQCBjbGFzcyBKU0JpZ0lu
dCBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gdG9OdW1iZXJIZWFwKGpz
Q2FzdDxKU0JpZ0ludCo+KGJpZ0ludCkpOwogICAgIH0KIAorCisgICAgc3RhdGljIEpTVmFsdWUg
YXNJbnROKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0X3QgbnVtYmVyT2ZCaXRzLCBKU0JpZ0ludCop
OworICAgIHN0YXRpYyBKU1ZhbHVlIGFzVWludE4oSlNHbG9iYWxPYmplY3QqLCB1aW50NjRfdCBu
dW1iZXJPZkJpdHMsIEpTQmlnSW50Kik7CisjaWYgVVNFKEJJR0lOVDMyKQorICAgIHN0YXRpYyBK
U1ZhbHVlIGFzSW50TihKU0dsb2JhbE9iamVjdCosIHVpbnQ2NF90IG51bWJlck9mQml0cywgaW50
MzJfdCBiaWdJbnRBc0ludDMyKTsKKyAgICBzdGF0aWMgSlNWYWx1ZSBhc1VpbnROKEpTR2xvYmFs
T2JqZWN0KiwgdWludDY0X3QgbnVtYmVyT2ZCaXRzLCBpbnQzMl90IGJpZ0ludEFzSW50MzIpOwor
I2VuZGlmCisKICAgICBEaWdpdCBkaWdpdCh1bnNpZ25lZCk7CiAgICAgdm9pZCBzZXREaWdpdCh1
bnNpZ25lZCwgRGlnaXQpOyAvLyBVc2Ugb25seSB3aGVuIGluaXRpYWxpemluZy4KICAgICBKU19F
WFBPUlRfUFJJVkFURSBKU0JpZ0ludCogcmlnaHRUcmltKFZNJik7CkBAIC01NDIsNiArNTUwLDE1
IEBAIGNsYXNzIEpTQmlnSW50IGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEJpZ0ludEltcGw+CiAgICAgc3RhdGljIE9wdGlvbmFsPERpZ2l0PiB0b1NoaWZ0
QW1vdW50KEJpZ0ludEltcGwgeCk7CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQmlnSW50SW1w
bD4KKyAgICBzdGF0aWMgSW1wbFJlc3VsdCBhc0ludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiwgdWlu
dDY0X3QsIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgor
ICAgIHN0YXRpYyBJbXBsUmVzdWx0IGFzVWludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiwgdWludDY0
X3QsIEJpZ0ludEltcGwpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorICAg
IHN0YXRpYyBJbXBsUmVzdWx0IHRydW5jYXRlVG9OQml0cyhWTSYsIGludDMyX3QsIEJpZ0ludElt
cGwpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCaWdJbnRJbXBsPgorICAgIHN0YXRpYyBJbXBs
UmVzdWx0IHRydW5jYXRlQW5kU3ViRnJvbVBvd2VyT2ZUd28oVk0mLCBpbnQzMl90LCBCaWdJbnRJ
bXBsLCBib29sIHJlc3VsdFNpZ24pOworCiAgICAgaW5saW5lIHN0YXRpYyBzaXplX3Qgb2Zmc2V0
T2ZEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoSlNCaWdJbnQs
IG1fZGF0YSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDg5Y2NkMDljMzQ0YTI3YTI4YTk4NDgwMWI0ZWZlYjg2YTYyODYyM2YuLmE5M2Mw
NzlmMTY5OWFjZmI2ZmRkMjQyMzZjMmQ4M2Q4OGYzNDFkZjEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAt
MDUtMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlND
XSBJbXBsZW1lbnQgQmlnSW50LmFzSW50TiBhbmQgQmlnSW50LmFzVWludE4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTE0NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3RyZXNzL2JpZ2ludC1hc2ludG4u
anM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoQmlnSW50LmFzSW50Tik6CisgICAgICAgICogc3RyZXNzL2JpZ2ludC1hc3VpbnRu
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToK
KyAgICAgICAgKEJpZ0ludC5hc1VpbnROKToKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9u
cy55YW1sOgorCiAyMDIwLTA1LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjExNTYuCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXNpbnRuLmpzIGIvSlNUZXN0cy9zdHJlc3MvYmlnaW50LWFz
aW50bi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mNGZlZTQ2MzEwZWUxMDQ1MTJiNmQ5MTIxMTRlMjIwMDBlODIy
YzBjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYmlnaW50LWFzaW50bi5qcwpA
QCAtMCwwICsxLDEwNyBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVy
cm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJv
ciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQor
ICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93
bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3Vs
ZFRocm93KCgpID0+IHsKKyAgICBCaWdJbnQuYXNJbnROKC0xLCAwbikKK30sIGBSYW5nZUVycm9y
OiBudW1iZXIgb2YgYml0cyBjYW5ub3QgYmUgbmVnYXRpdmVgKTsKKworeworICAgIGxldCB0b0lu
ZGV4ID0gZmFsc2U7CisgICAgbGV0IHRvQmlnSW50ID0gZmFsc2U7CisgICAgbGV0IGluZGV4ID0g
eworICAgICAgICBbU3ltYm9sLnRvUHJpbWl0aXZlXSgpIHsKKyAgICAgICAgICAgIHNob3VsZEJl
KHRvSW5kZXgsIGZhbHNlKTsKKyAgICAgICAgICAgIHNob3VsZEJlKHRvQmlnSW50LCBmYWxzZSk7
CisgICAgICAgICAgICB0b0luZGV4ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiAzMjsKKyAg
ICAgICAgfQorICAgIH07CisgICAgbGV0IGJpZ2ludCA9IHsKKyAgICAgICAgW1N5bWJvbC50b1By
aW1pdGl2ZV0oKSB7CisgICAgICAgICAgICBzaG91bGRCZSh0b0luZGV4LCB0cnVlKTsKKyAgICAg
ICAgICAgIHNob3VsZEJlKHRvQmlnSW50LCBmYWxzZSk7CisgICAgICAgICAgICB0b0JpZ0ludCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMTBuOworICAgICAgICB9CisgICAgfQorICAgIHNo
b3VsZEJlKEJpZ0ludC5hc0ludE4oaW5kZXgsIGJpZ2ludCksIDEwbik7CisgICAgc2hvdWxkQmUo
dG9JbmRleCwgdHJ1ZSk7CisgICAgc2hvdWxkQmUodG9CaWdJbnQsIHRydWUpOworfQorCitzaG91
bGRCZShCaWdJbnQuYXNJbnROKC0wLCAwbiksIDBuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50
TigwLCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMSwgMG4pLCAwbik7CitzaG91
bGRCZShCaWdJbnQuYXNJbnROKDIsIDBuKSwgMG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigz
LCAwbiksIDBuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50TigwLCAxbiksIDBuKTsKK3Nob3Vs
ZEJlKEJpZ0ludC5hc0ludE4oMSwgMW4pLCAtMW4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigy
LCAxbiksIDFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMywgMW4pLCAxbik7CisKK3Nob3Vs
ZEJlKEJpZ0ludC5hc0ludE4oMzAsIDB4N2ZmZmZmZmZuKSwgLTFuKTsKK3Nob3VsZEJlKEJpZ0lu
dC5hc0ludE4oMzEsIDB4N2ZmZmZmZmZuKSwgLTFuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4o
MzIsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigz
MywgMHg3ZmZmZmZmZm4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDM0
LCAweDdmZmZmZmZmbiksIDIxNDc0ODM2NDduKTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50Tigz
MCwgMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDMxLCAweDgwMDAw
MDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzIsIDB4ODAwMDAwMDBuKSwgLTIx
NDc0ODM2NDhuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzMsIDB4ODAwMDAwMDBuKSwgMjE0
NzQ4MzY0OG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50TigzNCwgMHg4MDAwMDAwMG4pLCAyMTQ3
NDgzNjQ4bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzAsIC0weDgwMDAwMDAwbiksIDBu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oMzEsIC0weDgwMDAwMDAwbiksIDBuKTsKK3Nob3Vs
ZEJlKEJpZ0ludC5hc0ludE4oMzIsIC0weDgwMDAwMDAwbiksIC0yMTQ3NDgzNjQ4bik7CitzaG91
bGRCZShCaWdJbnQuYXNJbnROKDMzLCAtMHg4MDAwMDAwMG4pLCAtMjE0NzQ4MzY0OG4pOworc2hv
dWxkQmUoQmlnSW50LmFzSW50TigzNCwgLTB4ODAwMDAwMDBuKSwgLTIxNDc0ODM2NDhuKTsKKwor
c2hvdWxkQmUoQmlnSW50LmFzSW50TigzMCwgLTB4ODAwMDAwMDFuKSwgLTFuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc0ludE4oMzEsIC0weDgwMDAwMDAxbiksIC0xbik7CitzaG91bGRCZShCaWdJbnQu
YXNJbnROKDMyLCAtMHg4MDAwMDAwMW4pLCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQu
YXNJbnROKDMzLCAtMHg4MDAwMDAwMW4pLCAtMjE0NzQ4MzY0OW4pOworc2hvdWxkQmUoQmlnSW50
LmFzSW50TigzNCwgLTB4ODAwMDAwMDFuKSwgLTIxNDc0ODM2NDluKTsKKworc2hvdWxkQmUoQmln
SW50LmFzSW50Tig2MiwgMHg3ZmZmZmZmZmZmZmZmZmZmbiksIC0xbik7CitzaG91bGRCZShCaWdJ
bnQuYXNJbnROKDYzLCAweDdmZmZmZmZmZmZmZmZmZmZuKSwgLTFuKTsKK3Nob3VsZEJlKEJpZ0lu
dC5hc0ludE4oNjQsIDB4N2ZmZmZmZmZmZmZmZmZmZm4pLCA5MjIzMzcyMDM2ODU0Nzc1ODA3bik7
CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY1LCAweDdmZmZmZmZmZmZmZmZmZmZuKSwgOTIyMzM3
MjAzNjg1NDc3NTgwN24pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2NiwgMHg3ZmZmZmZmZmZm
ZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKworc2hvdWxkQmUoQmlnSW50LmFzSW50
Tig2MiwgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4o
NjMsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY0
LCAweDgwMDAwMDAwMDAwMDAwMDBuKSwgLTkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc0ludE4oNjUsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCA5MjIzMzcyMDM2ODU0Nzc1
ODA4bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY2LCAweDgwMDAwMDAwMDAwMDAwMDBuKSwg
OTIyMzM3MjAzNjg1NDc3NTgwOG4pOworCitzaG91bGRCZShCaWdJbnQuYXNJbnROKDYyLCAtMHg4
MDAwMDAwMDAwMDAwMDBuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OG4pOworc2hvdWxkQmUoQmlnSW50
LmFzSW50Tig2MywgLTB4ODAwMDAwMDAwMDAwMDAwbiksIC01NzY0NjA3NTIzMDM0MjM0ODhuKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjQsIC0weDgwMDAwMDAwMDAwMDAwMG4pLCAtNTc2NDYw
NzUyMzAzNDIzNDg4bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY1LCAtMHg4MDAwMDAwMDAw
MDAwMDBuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OG4pOworc2hvdWxkQmUoQmlnSW50LmFzSW50Tig2
NiwgLTB4ODAwMDAwMDAwMDAwMDAwbiksIC01NzY0NjA3NTIzMDM0MjM0ODhuKTsKKworc2hvdWxk
QmUoQmlnSW50LmFzSW50Tig2MiwgLTB4ODAwMDAwMDAwMDAwMDAxbiksIC01NzY0NjA3NTIzMDM0
MjM0ODluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjMsIC0weDgwMDAwMDAwMDAwMDAwMW4p
LCAtNTc2NDYwNzUyMzAzNDIzNDg5bik7CitzaG91bGRCZShCaWdJbnQuYXNJbnROKDY0LCAtMHg4
MDAwMDAwMDAwMDAwMDFuKSwgLTU3NjQ2MDc1MjMwMzQyMzQ4OW4pOworc2hvdWxkQmUoQmlnSW50
LmFzSW50Tig2NSwgLTB4ODAwMDAwMDAwMDAwMDAxbiksIC01NzY0NjA3NTIzMDM0MjM0ODluKTsK
K3Nob3VsZEJlKEJpZ0ludC5hc0ludE4oNjYsIC0weDgwMDAwMDAwMDAwMDAwMW4pLCAtNTc2NDYw
NzUyMzAzNDIzNDg5bik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXN1aW50
bi5qcyBiL0pTVGVzdHMvc3RyZXNzL2JpZ2ludC1hc3VpbnRuLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViNGU4
M2Y4Y2U2NzliYTEyMmEzYTNmYTM5YmY5MDRkZTM2OGYxOTIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9iaWdpbnQtYXN1aW50bi5qcwpAQCAtMCwwICsxLDEzMSBAQAorZnVuY3Rp
b24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVj
dGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBl
cnJvclRocm93biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0
cnVlOworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisg
ICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJy
b3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9y
OiAke1N0cmluZyhlcnJvcil9YCk7Cit9CisKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBCaWdJ
bnQuYXNVaW50TigtMSwgMG4pCit9LCBgUmFuZ2VFcnJvcjogbnVtYmVyIG9mIGJpdHMgY2Fubm90
IGJlIG5lZ2F0aXZlYCk7CisKK3sKKyAgICBsZXQgdG9JbmRleCA9IGZhbHNlOworICAgIGxldCB0
b0JpZ0ludCA9IGZhbHNlOworICAgIGxldCBpbmRleCA9IHsKKyAgICAgICAgW1N5bWJvbC50b1By
aW1pdGl2ZV0oKSB7CisgICAgICAgICAgICBzaG91bGRCZSh0b0luZGV4LCBmYWxzZSk7CisgICAg
ICAgICAgICBzaG91bGRCZSh0b0JpZ0ludCwgZmFsc2UpOworICAgICAgICAgICAgdG9JbmRleCA9
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gMzI7CisgICAgICAgIH0KKyAgICB9OworICAgIGxl
dCBiaWdpbnQgPSB7CisgICAgICAgIFtTeW1ib2wudG9QcmltaXRpdmVdKCkgeworICAgICAgICAg
ICAgc2hvdWxkQmUodG9JbmRleCwgdHJ1ZSk7CisgICAgICAgICAgICBzaG91bGRCZSh0b0JpZ0lu
dCwgZmFsc2UpOworICAgICAgICAgICAgdG9CaWdJbnQgPSB0cnVlOworICAgICAgICAgICAgcmV0
dXJuIDEwbjsKKyAgICAgICAgfQorICAgIH0KKyAgICBzaG91bGRCZShCaWdJbnQuYXNVaW50Tihp
bmRleCwgYmlnaW50KSwgMTBuKTsKKyAgICBzaG91bGRCZSh0b0luZGV4LCB0cnVlKTsKKyAgICBz
aG91bGRCZSh0b0JpZ0ludCwgdHJ1ZSk7Cit9CisKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKC0w
LCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDAsIDBuKSwgMG4pOworc2hvdWxk
QmUoQmlnSW50LmFzVWludE4oMSwgMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tigy
LCAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMsIDBuKSwgMG4pOworCitzaG91
bGRCZShCaWdJbnQuYXNVaW50TigwLCAxbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnRO
KDEsIDFuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMiwgMW4pLCAxbik7CitzaG91
bGRCZShCaWdJbnQuYXNVaW50TigzLCAxbiksIDFuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oMzAsIDB4N2ZmZmZmZmZuKSwgMTA3Mzc0MTgyM24pOworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oMzEsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oMzIsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oMzMsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0N24pOworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oMzQsIDB4N2ZmZmZmZmZuKSwgMjE0NzQ4MzY0N24pOworCitzaG91bGRCZShCaWdJbnQuYXNV
aW50TigzMCwgMHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMSwg
MHg4MDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMiwgMHg4MDAwMDAw
MG4pLCAyMTQ3NDgzNjQ4bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMywgMHg4MDAwMDAw
MG4pLCAyMTQ3NDgzNjQ4bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzNCwgMHg4MDAwMDAw
MG4pLCAyMTQ3NDgzNjQ4bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMwLCAweGZmZmZm
ZmZmbiksIDEwNzM3NDE4MjNuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMxLCAweGZmZmZm
ZmZmbiksIDIxNDc0ODM2NDduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMyLCAweGZmZmZm
ZmZmbiksIDQyOTQ5NjcyOTVuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMzLCAweGZmZmZm
ZmZmbiksIDQyOTQ5NjcyOTVuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDM0LCAweGZmZmZm
ZmZmbiksIDQyOTQ5NjcyOTVuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzAsIC0weDgw
MDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMxLCAtMHg4MDAwMDAwMG4p
LCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMiwgLTB4ODAwMDAwMDBuKSwgMjE0NzQ4
MzY0OG4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzMsIC0weDgwMDAwMDAwbiksIDY0NDI0
NTA5NDRuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDM0LCAtMHg4MDAwMDAwMG4pLCAxNTAz
MjM4NTUzNm4pOworCitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMCwgLTB4ODAwMDAwMDFuKSwg
MTA3Mzc0MTgyM24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzEsIC0weDgwMDAwMDAxbiks
IDIxNDc0ODM2NDduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMyLCAtMHg4MDAwMDAwMW4p
LCAyMTQ3NDgzNjQ3bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMywgLTB4ODAwMDAwMDFu
KSwgNjQ0MjQ1MDk0M24pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzQsIC0weDgwMDAwMDAx
biksIDE1MDMyMzg1NTM1bik7CisKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDMwLCAtMHhmZmZm
ZmZmZm4pLCAxbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50TigzMSwgLTB4ZmZmZmZmZmZuKSwg
MW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oMzIsIC0weGZmZmZmZmZmbiksIDFuKTsKK3No
b3VsZEJlKEJpZ0ludC5hc1VpbnROKDMzLCAtMHhmZmZmZmZmZm4pLCA0Mjk0OTY3Mjk3bik7Citz
aG91bGRCZShCaWdJbnQuYXNVaW50TigzNCwgLTB4ZmZmZmZmZmZuKSwgMTI4ODQ5MDE4ODluKTsK
Kworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIsIDB4N2ZmZmZmZmZmZmZmZmZmZm4pLCA0NjEx
Njg2MDE4NDI3Mzg3OTAzbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MywgMHg3ZmZmZmZm
ZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1Vp
bnROKDY0LCAweDdmZmZmZmZmZmZmZmZmZmZuKSwgOTIyMzM3MjAzNjg1NDc3NTgwN24pOworc2hv
dWxkQmUoQmlnSW50LmFzVWludE4oNjUsIDB4N2ZmZmZmZmZmZmZmZmZmZm4pLCA5MjIzMzcyMDM2
ODU0Nzc1ODA3bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2NiwgMHg3ZmZmZmZmZmZmZmZm
ZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDduKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4o
NjIsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCAwbik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2
MywgMHg4MDAwMDAwMDAwMDAwMDAwbiksIDBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0
LCAweDgwMDAwMDAwMDAwMDAwMDBuKSwgOTIyMzM3MjAzNjg1NDc3NTgwOG4pOworc2hvdWxkQmUo
QmlnSW50LmFzVWludE4oNjUsIDB4ODAwMDAwMDAwMDAwMDAwMG4pLCA5MjIzMzcyMDM2ODU0Nzc1
ODA4bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2NiwgMHg4MDAwMDAwMDAwMDAwMDAwbiks
IDkyMjMzNzIwMzY4NTQ3NzU4MDhuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIsIDB4
ZmZmZmZmZmZmZmZmZmZmZm4pLCA0NjExNjg2MDE4NDI3Mzg3OTAzbik7CitzaG91bGRCZShCaWdJ
bnQuYXNVaW50Tig2MywgMHhmZmZmZmZmZmZmZmZmZmZmbiksIDkyMjMzNzIwMzY4NTQ3NzU4MDdu
KTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0LCAweGZmZmZmZmZmZmZmZmZmZmZuKSwgMTg0
NDY3NDQwNzM3MDk1NTE2MTVuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY1LCAweGZmZmZm
ZmZmZmZmZmZmZmZuKSwgMTg0NDY3NDQwNzM3MDk1NTE2MTVuKTsKK3Nob3VsZEJlKEJpZ0ludC5h
c1VpbnROKDY2LCAweGZmZmZmZmZmZmZmZmZmZmZuKSwgMTg0NDY3NDQwNzM3MDk1NTE2MTVuKTsK
Kworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIsIC0weDgwMDAwMDAwMDAwMDAwMG4pLCA0MDM1
MjI1MjY2MTIzOTY0NDE2bik7CitzaG91bGRCZShCaWdJbnQuYXNVaW50Tig2MywgLTB4ODAwMDAw
MDAwMDAwMDAwbiksIDg2NDY5MTEyODQ1NTEzNTIzMjBuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1Vp
bnROKDY0LCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwgMTc4NzAyODMzMjE0MDYxMjgxMjhuKTsKK3No
b3VsZEJlKEJpZ0ludC5hc1VpbnROKDY1LCAtMHg4MDAwMDAwMDAwMDAwMDBuKSwgMzYzMTcwMjcz
OTUxMTU2Nzk3NDRuKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY2LCAtMHg4MDAwMDAwMDAw
MDAwMDBuKSwgNzMyMTA1MTU1NDI1MzQ3ODI5NzZuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWlu
dE4oNjIsIC0weDgwMDAwMDAwMDAwMDAwMW4pLCA0MDM1MjI1MjY2MTIzOTY0NDE1bik7CitzaG91
bGRCZShCaWdJbnQuYXNVaW50Tig2MywgLTB4ODAwMDAwMDAwMDAwMDAxbiksIDg2NDY5MTEyODQ1
NTEzNTIzMTluKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY0LCAtMHg4MDAwMDAwMDAwMDAw
MDFuKSwgMTc4NzAyODMzMjE0MDYxMjgxMjduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY1
LCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgMzYzMTcwMjczOTUxMTU2Nzk3NDNuKTsKK3Nob3VsZEJl
KEJpZ0ludC5hc1VpbnROKDY2LCAtMHg4MDAwMDAwMDAwMDAwMDFuKSwgNzMyMTA1MTU1NDI1MzQ3
ODI5NzVuKTsKKworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjIsIC0weGZmZmZmZmZmZmZmZmZm
ZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjMsIC0weGZmZmZmZmZmZmZmZmZm
ZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjQsIC0weGZmZmZmZmZmZmZmZmZm
ZmZuKSwgMW4pOworc2hvdWxkQmUoQmlnSW50LmFzVWludE4oNjUsIC0weGZmZmZmZmZmZmZmZmZm
ZmZuKSwgMTg0NDY3NDQwNzM3MDk1NTE2MTduKTsKK3Nob3VsZEJlKEJpZ0ludC5hc1VpbnROKDY2
LCAtMHhmZmZmZmZmZmZmZmZmZmZmbiksIDU1MzQwMjMyMjIxMTI4NjU0ODQ5bik7CitzaG91bGRC
ZShCaWdJbnQuYXNVaW50Tig2NywgLTB4ZmZmZmZmZmZmZmZmZmZmZm4pLCAxMjkxMjcyMDg1MTU5
NjY4NjEzMTNuKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFt
bCBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCBhNWNkNGMxZjY3Njll
ODU1NGIzMjE5YmE3MGNkM2E0ZjNiNDZmNzYzLi40N2Y0ZGY1MDhlMTQxMzYyMTlmNTNlYzg5MWUy
YTRhZTE1ZWYwY2EzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlh
bWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC02NzgsNjYgKzY3
OCw2IEBAIHRlc3QvYnVpbHQtaW5zL0FycmF5SXRlcmF0b3JQcm90b3R5cGUvbmV4dC9kZXRhY2gt
dHlwZWRhcnJheS1pbi1wcm9ncmVzcy5qczoKIHRlc3QvYnVpbHQtaW5zL0FzeW5jR2VuZXJhdG9y
UHJvdG90eXBlL3JldHVybi9yZXR1cm4tc3VzcGVuZGVkWWllbGQtcHJvbWlzZS5qczoKICAgZGVm
YXVsdDogJ1Rlc3QyNjI6QXN5bmNUZXN0RmFpbHVyZTpUZXN0MjYyRXJyb3I6IFRlc3QyNjJFcnJv
cjogQXN5bmNHZW5lcmF0b3JSZXNvbHZlKGdlbmVyYXRvciwgcmVzdWx0VmFsdWUsIHRydWUpIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgUHJvbWlzZV3Cuywgwqt1bndyYXBwZWQtdmFsdWXC
uykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyOkFzeW5jVGVzdEZhaWx1cmU6
VGVzdDI2MkVycm9yOiBUZXN0MjYyRXJyb3I6IEFzeW5jR2VuZXJhdG9yUmVzb2x2ZShnZW5lcmF0
b3IsIHJlc3VsdFZhbHVlLCB0cnVlKSBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IFByb21p
c2VdwrssIMKrdW53cmFwcGVkLXZhbHVlwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9C
aWdJbnQvYXNJbnROL2FyaXRobWV0aWMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7
LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0ludE4vYmlnaW50
LXRvYmlnaW50LWVycm9ycy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogVG9CaWdJbnQ6
IG5vIGFyZ3VtZW50ID0+IHVuZGVmaW5lZCA9PiBUeXBlRXJyb3IgRXhwZWN0ZWQgYSBUeXBlRXJy
b3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb0JpZ0ludDogbm8gYXJndW1lbnQgPT4gdW5kZWZp
bmVkID0+IFR5cGVFcnJvciBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc0lu
dE4vYmlnaW50LXRvYmlnaW50LXRvcHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNl
ZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMcK7KSB0byBiZSB0cnVl
JwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaWdpbnQtdG9iaWdpbnQtd3JhcHBlZC12
YWx1ZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiB1bmJveCBv
YmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7
LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJp
bWl0aXZlOiB1bmJveCBvYmplY3Qgd2l0aCBpbnRlcm5hbCBzbG90IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0lu
dC9hc0ludE4vYmlnaW50LXRvYmlnaW50LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTC
uywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2JpdHMt
dG9pbmRleC1lcnJvcnMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvSW5kZXg6IHRo
cm93IHdoZW4gaW50ZWdlckluZGV4IDwgMCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhy
b3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBUb0luZGV4OiB0aHJvdyB3aGVuIGludGVnZXJJbmRleCA8IDAgRXhwZWN0
ZWQgYSBSYW5nZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24g
YXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzSW50Ti9iaXRzLXRvaW5kZXgtdG9wcmlt
aXRpdmUuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJp
bWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrLTHCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJp
bWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrdW5kZWZpbmVkwrssIMKrLTHCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0lu
dC9hc0ludE4vYml0cy10b2luZGV4LXdyYXBwZWQtdmFsdWVzLmpzOgotICBkZWZhdWx0OiAnVGVz
dDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBF
eHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGgg
aW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRv
IGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNJbnROL2JpdHMtdG9pbmRleC5qczoK
LSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVk
wrssIMKrMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMMK7KSB0byBiZSB0cnVlJwotdGVzdC9i
dWlsdC1pbnMvQmlnSW50L2FzSW50Ti9vcmRlci1vZi1zdGVwcy5qczoKLSAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCqzLCuykgdG8gYmUgdHJ1ZScK
LSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzDCuywg
wqsywrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9hcml0aG1l
dGljLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1
bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUn
Ci10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaWdpbnQtdG9iaWdpbnQtZXJyb3JzLmpz
OgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb0JpZ0ludDogbm8gYXJndW1lbnQgPT4gdW5k
ZWZpbmVkID0+IFR5cGVFcnJvciBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0
IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IFRvQmlnSW50OiBubyBhcmd1bWVudCA9PiB1bmRlZmluZWQgPT4gVHlwZUVycm9yIEV4
cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJv
d24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50
LXRvcHJpbWl0aXZlLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTog
QEB0b1ByaW1pdGl2ZSB0YWtlcyBwcmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVm
aW5lZMK7LCDCqzHCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IFRvUHJpbWl0aXZlOiBAQHRvUHJpbWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrdW5kZWZpbmVkwrssIMKrMcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMv
QmlnSW50L2FzVWludE4vYmlnaW50LXRvYmlnaW50LXdyYXBwZWQtdmFsdWVzLmpzOgotICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJu
YWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRy
dWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2Jq
ZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywg
wqswwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaWdpbnQt
dG9iaWdpbnQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUg
dHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0ludC9hc1VpbnROL2JpdHMtdG9pbmRleC1lcnJvcnMu
anM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IFRvSW5kZXg6IHRocm93IHdoZW4gaW50ZWdl
ckluZGV4IDwgMCBFeHBlY3RlZCBhIFJhbmdlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBU
b0luZGV4OiB0aHJvdyB3aGVuIGludGVnZXJJbmRleCA8IDAgRXhwZWN0ZWQgYSBSYW5nZUVycm9y
IHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9i
dWlsdC1pbnMvQmlnSW50L2FzVWludE4vYml0cy10b2luZGV4LXRvcHJpbWl0aXZlLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogQEB0b1ByaW1pdGl2ZSB0YWtlcyBw
cmVjZWRlbmNlIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzHCuykgdG8gYmUg
dHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IFRvUHJpbWl0aXZlOiBAQHRvUHJp
bWl0aXZlIHRha2VzIHByZWNlZGVuY2UgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kZWZpbmVkwrss
IMKrMcK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvQmlnSW50L2FzVWludE4vYml0cy10
b2luZGV4LXdyYXBwZWQtdmFsdWVzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBUb1By
aW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBFeHBlY3RlZCBTYW1lVmFs
dWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBUb1ByaW1pdGl2ZTogdW5ib3ggb2JqZWN0IHdpdGggaW50ZXJuYWwgc2xvdCBF
eHBlY3RlZCBTYW1lVmFsdWUowqt1bmRlZmluZWTCuywgwqswwrspIHRvIGJlIHRydWUnCi10ZXN0
L2J1aWx0LWlucy9CaWdJbnQvYXNVaW50Ti9iaXRzLXRvaW5kZXguanM6Ci0gIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8g
YmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq3VuZGVmaW5lZMK7LCDCqzDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0JpZ0lu
dC9hc1VpbnROL29yZGVyLW9mLXN0ZXBzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBTYW1lVmFsdWUowqswwrssIMKrMsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMMK7LCDCqzLCuykgdG8gYmUg
dHJ1ZScKIHRlc3QvYnVpbHQtaW5zL0RhdGFWaWV3L2N1c3RvbS1wcm90by1hY2Nlc3MtZGV0YWNo
ZXMtYnVmZmVyLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKICAg
c3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRo
cm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>