<?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>150438</bug_id>
          
          <creation_ts>2015-10-22 01:10:08 -0700</creation_ts>
          <short_desc>IDL functions and attributes should be JSBuiltin by default if interface is marked as JSBuiltinConstructor</short_desc>
          <delta_ts>2015-11-02 03:01:32 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1135624</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-22 01:10:08 -0700</bug_when>
    <thetext>IDL functions and attributes should be JSBuiltin by default if interface is marked as JSBuiltinConstructor.
One exception is for custom attributes/functions which should remain implemented in C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135626</commentid>
    <comment_count>1</comment_count>
      <attachid>263806</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-22 01:18:45 -0700</bug_when>
    <thetext>Created attachment 263806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135629</commentid>
    <comment_count>2</comment_count>
      <attachid>263808</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-22 01:23:33 -0700</bug_when>
    <thetext>Created attachment 263808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135642</commentid>
    <comment_count>3</comment_count>
      <attachid>263808</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-10-22 02:44:20 -0700</bug_when>
    <thetext>Comment on attachment 263808
Patch

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

I would also rename the custom attribute from JSBuiltinConstructor to JSBuiltinInterface since it forces not only the constructor but the whole interface to be builtin unless said otherwise.

Another thing would be ensuring that CustomConstructor also works here, maybe adding also some small test for it.

Would you be also so kind of adding Igalia to the copyright section at CodeGeneratorJS.pm since I introduced some new tag and I forgot to do it at the moment? O:-)

&gt; Source/WebCore/ChangeLog:15
&gt; +        No change in behavior.

What does this mean? I think there&apos;s change in behavior, isn&apos;t it? Actually a big one.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5034
&gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Custom&quot;};
&gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomGetter&quot;};
&gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};
&gt; +
&gt; +    return 1 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSBuiltin&quot;};
&gt; +    return 1 if $interface-&gt;extendedAttributes-&gt;{&quot;JSBuiltinConstructor&quot;};

So I guess the idea is that if there is some method you want to write in C++ you set it as custom and then you implement it in C++.

I think you should add CustomBinding here too as it is even more restrictive than Custom.

&gt; Source/WebCore/bindings/scripts/test/TestJSBuiltinConstructor.idl:38
&gt; +    [ Custom ] void testCustomFunction();
&gt; +    [ CustomGetter ] readonly attribute boolean testAttributeCustom;
&gt; +    [ CustomGetter, CustomSetter ] attribute boolean testAttributeRWCustom;

If you add [ CustomBinding ] above do not forget to add it here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135672</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-22 05:06:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 263808 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263808&amp;action=review
&gt; 
&gt; I would also rename the custom attribute from JSBuiltinConstructor to
&gt; JSBuiltinInterface since it forces not only the constructor but the whole
&gt; interface to be builtin unless said otherwise.

I would not do the renaming yet since we would loose the fact that the interface has a constructor.
Following your suggestion, I think this would be good ultimately to remove JSBuiltinConstructor and have JSBuiltin at the interface level.

The current patch is a first step in that direction.
In particular, I would like ReadableStreamController and ReadableStreamReader interfaces to be JSBuiltin+CustomConstructor+NoInterfaceObject.
One or two follow-up patches should handle that.

&gt; Would you be also so kind of adding Igalia to the copyright section at
&gt; CodeGeneratorJS.pm since I introduced some new tag and I forgot to do it at
&gt; the moment? O:-)

I can do it, but maybe it is better to to do that as a separate patch, mentioning the patch in question?

&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        No change in behavior.
&gt; 
&gt; What does this mean? I think there&apos;s change in behavior, isn&apos;t it? Actually
&gt; a big one.

There is a change in the binding generator but no change in the currently generated code.
I can clarify this.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5034
&gt; &gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;Custom&quot;};
&gt; &gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomGetter&quot;};
&gt; &gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};
&gt; &gt; +
&gt; &gt; +    return 1 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSBuiltin&quot;};
&gt; &gt; +    return 1 if $interface-&gt;extendedAttributes-&gt;{&quot;JSBuiltinConstructor&quot;};
&gt; 
&gt; So I guess the idea is that if there is some method you want to write in C++
&gt; you set it as custom and then you implement it in C++.

Yes.

&gt; I think you should add CustomBinding here too as it is even more restrictive
&gt; than Custom.

IIRC, CustomBinding is no more used since we switched to JS builtins in streams API.
Should we plan to remove it from the binding generator if we do not foresee future uses?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135674</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2015-10-22 06:43:39 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I would not do the renaming yet since we would loose the fact that the
&gt; interface has a constructor.
&gt; Following your suggestion, I think this would be good ultimately to remove
&gt; JSBuiltinConstructor and have JSBuiltin at the interface level.

Whichever name is fine but JSBuiltinConstructor, that&apos;s the one I think it is misleading.

&gt; &gt; Would you be also so kind of adding Igalia to the copyright section at
&gt; &gt; CodeGeneratorJS.pm since I introduced some new tag and I forgot to do it at
&gt; &gt; the moment? O:-)
&gt; 
&gt; I can do it, but maybe it is better to to do that as a separate patch,
&gt; mentioning the patch in question?

Ok.

&gt; &gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; &gt; +        No change in behavior.
&gt; &gt; 
&gt; &gt; What does this mean? I think there&apos;s change in behavior, isn&apos;t it? Actually
&gt; &gt; a big one.
&gt; 
&gt; There is a change in the binding generator but no change in the currently
&gt; generated code.
&gt; I can clarify this.

I think it would be useful.

&gt; &gt; I think you should add CustomBinding here too as it is even more restrictive
&gt; &gt; than Custom.
&gt; 
&gt; IIRC, CustomBinding is no more used since we switched to JS builtins in
&gt; streams API.
&gt; Should we plan to remove it from the binding generator if we do not foresee
&gt; future uses?

As long as it isn&apos;t removed yet, I think it would be interesting to have it here for coherence unless it creates issues.

If it doesn&apos;t create any issue, I&apos;d keep it as I think it might be useful for anybody in the future. It is not like dead code that gets compiled, if you don&apos;t use it nothing gets generated with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135682</commentid>
    <comment_count>6</comment_count>
      <attachid>263808</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-10-22 08:05:02 -0700</bug_when>
    <thetext>Comment on attachment 263808
Patch

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

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:158
&gt; +EncodedJSValue jsTestJSBuiltinConstructorTestAttributeCustom(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
&gt; +{
&gt; +    UNUSED_PARAM(state);
&gt; +    UNUSED_PARAM(slotBase);
&gt; +    UNUSED_PARAM(thisValue);
&gt; +    auto* castedThis = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(slotBase);
&gt; +    return JSValue::encode(castedThis-&gt;testAttributeCustom(*state));
&gt; +}

state and slotBase parameters are used. thisValue is really unused, 
but in this case omitting the parameter name would be better.

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:168
&gt; +EncodedJSValue jsTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, JSObject* slotBase, EncodedJSValue thisValue, PropertyName)
&gt; +{
&gt; +    UNUSED_PARAM(state);
&gt; +    UNUSED_PARAM(slotBase);
&gt; +    UNUSED_PARAM(thisValue);
&gt; +    auto* castedThis = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(slotBase);
&gt; +    return JSValue::encode(castedThis-&gt;testAttributeRWCustom(*state));
&gt; +}

ditto

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:188
&gt; +void setJSTestJSBuiltinConstructorTestAttributeRWCustom(ExecState* state, JSObject* baseObject, EncodedJSValue thisValue, EncodedJSValue encodedValue)
&gt; +{
&gt; +    JSValue value = JSValue::decode(encodedValue);
&gt; +    UNUSED_PARAM(baseObject);
&gt; +    UNUSED_PARAM(thisValue);
&gt; +    auto* castedThis = jsCast&lt;JSTestJSBuiltinConstructor*&gt;(baseObject);
&gt; +    UNUSED_PARAM(thisValue);
&gt; +    UNUSED_PARAM(state);
&gt; +    castedThis-&gt;setTestAttributeRWCustom(*state, value);
&gt; +}

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1135688</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-22 08:16:15 -0700</bug_when>
    <thetext>Good catch!
I filed bug 150446 to keep track of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136394</commentid>
    <comment_count>8</comment_count>
      <attachid>264010</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-25 07:49:46 -0700</bug_when>
    <thetext>Created attachment 264010
Making all changes at once</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136395</commentid>
    <comment_count>9</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-25 07:54:48 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 263808 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=263808&amp;action=review
&gt; &gt; 
&gt; &gt; I would also rename the custom attribute from JSBuiltinConstructor to
&gt; &gt; JSBuiltinInterface since it forces not only the constructor but the whole
&gt; &gt; interface to be builtin unless said otherwise.
&gt; 
&gt; I would not do the renaming yet since we would loose the fact that the
&gt; interface has a constructor.
&gt; Following your suggestion, I think this would be good ultimately to remove
&gt; JSBuiltinConstructor and have JSBuiltin at the interface level.
&gt; 
&gt; The current patch is a first step in that direction.
&gt; In particular, I would like ReadableStreamController and
&gt; ReadableStreamReader interfaces to be
&gt; JSBuiltin+CustomConstructor+NoInterfaceObject.
&gt; One or two follow-up patches should handle that.

I did tried to do everything as one patch and this might be actually be ok, as uploaded.
Only JSBuiltIn keyword is surviving in this patch.
At the interface level, JSBuiltIn means that DOM class is not needed and if there is a constructor (not custom) it should call a JS built-in init function.

If it is better to do that as two patches, previous patch remains valid.

I did not added CustomBinding handling, since I am not sure we should continue supporting it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138166</commentid>
    <comment_count>10</comment_count>
      <attachid>264010</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-10-31 10:27:02 -0700</bug_when>
    <thetext>Comment on attachment 264010
Making all changes at once

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

&gt; Source/WebCore/Modules/streams/ReadableStreamController.idl:37
&gt;      [JSBuiltin] void enqueue([Default=Undefined] optional any chunk);

Patch doesn’t remove [JSBuiltin] from the methods and attributes in this interface. Why?

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.idl:37
&gt;      [JSBuiltin] Promise read();

Patch doesn’t remove [JSBuiltin] from the methods and attributes in this interface. Why?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5031
&gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomGetter&quot;};
&gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};

I don’t think this is right. It will make both the getter and setter be non-JS-built-in even if only one or the other is custom. We should consider a test case where the getter is JavaScript but the setter is C++ code and vice versa. Or we can just leave this broken until we need it, since it’s only used within the WebKit project.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5034
&gt; +    return 1 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSBuiltin&quot;};
&gt; +    return 1 if $interface-&gt;extendedAttributes-&gt;{&quot;JSBuiltin&quot;};

What if the class is JSBuiltin, but we don’t want this attribute or method to be? No keyword to mark a function as an exception? Or maybe that is exactly what Custom means in those cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138498</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-02 02:04:25 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/WebCore/Modules/streams/ReadableStreamReader.idl:37
&gt; &gt;      [JSBuiltin] Promise read();
&gt; 
&gt; Patch doesn’t remove [JSBuiltin] from the methods and attributes in this
&gt; interface. Why?

Will fix that in landing patch.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5031
&gt; &gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomGetter&quot;};
&gt; &gt; +    return 0 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CustomSetter&quot;};
&gt; 
&gt; I don’t think this is right. It will make both the getter and setter be
&gt; non-JS-built-in even if only one or the other is custom. We should consider
&gt; a test case where the getter is JavaScript but the setter is C++ code and
&gt; vice versa. Or we can just leave this broken until we need it, since it’s
&gt; only used within the WebKit project.

In the binding generator, some parts are already ready for setters.
AFAICT, JSBuiltin attribute setters are not supported yet within JSC (see reifyStaticAccessor in Lookup.cpp).
I would prefer to not tackle it until we actually have a usecase for it.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5034
&gt; &gt; +    return 1 if $object-&gt;signature-&gt;extendedAttributes-&gt;{&quot;JSBuiltin&quot;};
&gt; &gt; +    return 1 if $interface-&gt;extendedAttributes-&gt;{&quot;JSBuiltin&quot;};
&gt; 
&gt; What if the class is JSBuiltin, but we don’t want this attribute or method
&gt; to be? No keyword to mark a function as an exception? Or maybe that is
&gt; exactly what Custom means in those cases?

Yes, Custom should be used.
This is matching pretty well since JSBuiltin classes have no DOM class and Custom leads to using JSXX methods.
I will add documentation in https://trac.webkit.org/wiki/WebKitIDL about this and attribute setters missing support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138500</commentid>
    <comment_count>12</comment_count>
      <attachid>264570</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-11-02 02:10:45 -0800</bug_when>
    <thetext>Created attachment 264570
Cleaning IDLs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138511</commentid>
    <comment_count>13</comment_count>
      <attachid>264570</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 03:01:27 -0800</bug_when>
    <thetext>Comment on attachment 264570
Cleaning IDLs

Clearing flags on attachment: 264570

Committed r191885: &lt;http://trac.webkit.org/changeset/191885&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138512</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-02 03:01:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263806</attachid>
            <date>2015-10-22 01:18:45 -0700</date>
            <delta_ts>2015-10-22 01:23:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150438-20151022101759.patch</filename>
            <type>text/plain</type>
            <size>38798</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZmYzRiNmI3ZDAwOGYw
YTJhNTNmYjViOWNmODdmMTAwOTY0MDY2Ny4uYzZhNDI2ZTRkMTIwYTlkMjdiMGI4ZTRmNWUxYzEz
N2UzMjI2YzQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE1LTEwLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgSURMIGZ1
bmN0aW9ucyBhbmQgYXR0cmlidXRlcyBzaG91bGQgYmUgSlNCdWlsdGluIGJ5IGRlZmF1bHQgaWYg
aW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmluZGluZyBnZW5lcmF0b3IgaXMg
bm93IGRlZHVjaW5nIHRoYXQgZnVuY3Rpb24vYXR0cmlidXRlIGlzIEpTQnVpbHRpbiBpZiB0aGUg
aW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBKU0J1aWx0aW5Db25zdHJ1Y3Rvci4KKyAgICAgICAgT25l
IGV4Y2VwdGlvbiBpcyBjdXN0b20gc2V0dGVycywgZ2V0dGVycyBvciBmdW5jdGlvbnMgd2hpY2gg
cmVtYWluIEMrKyBoYW5kbGVkLgorICAgICAgICBVcGRhdGVkIFJlYWRhYmxlU3RyZWFtIGFuZCBX
cml0YWJsZVN0cmVhbSBJRExzIGFjY29yZGluZ2x5LgorCisgICAgICAgIFJlbW92ZWQgdW5uZWVk
ZWQgIkRlZmF1bHQiIGtleXdvcmQgZm9yIGNhbmNlbCBmdW5jdGlvbiBpbiBXZWJJREwuCisKKyAg
ICAgICAgQWRkZWQgYSBiaW5kaW5nIHRlc3QgY2FzZS4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDoK
KyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0QXR0cmli
dXRlR2V0dGVyTmFtZSk6CisgICAgICAgIChHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKToKKyAgICAg
ICAgKEdldEZ1bmN0aW9uTmFtZSk6CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAg
IChHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbik6CisgICAgICAgIChDb21wdXRlRnVuY3Rpb25TcGVjaWFsKToKKyAgICAgICAgKElz
SlNCdWlsdGluKToKKyAgICAgICAgKEFkZEpTQnVpbHRpbkluY2x1ZGVzSWZOZWVkZWQpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9j
b25zdHJ1Y3Rvcl9zZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2pzX2J1
aWx0aW5fY29uc3RydWN0b3JfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfdGVzdF9mdW5jdGlvbik6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfdGVzdF9hdHRyaWJ1dGUp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jfc2V0X3Rl
c3RfYXR0cmlidXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1
dGVDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JU
ZXN0QXR0cmlidXRlUldDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5j
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLm1tOgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ig
dGVzdEF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ig
c2V0VGVzdEF0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yIHRlc3RBdHRyaWJ1dGVDdXN0b21dKToKKyAgICAgICAgKC1bRE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yIHRlc3RBdHRyaWJ1dGVSV0N1c3RvbV0pOgorICAgICAgICAoLVtET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3Igc2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tOl0pOgorICAgICAgICAo
LVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgdGVzdEZ1bmN0aW9uXSk6CisgICAgICAgICgt
W0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciB0ZXN0Q3VzdG9tRnVuY3Rpb25dKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlkbDoK
KwogMjAxNS0xMC0yMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgTmV0d29ya1Byb2Nlc3M6IEROUyBwcmVmZXRjaCBoYXBwZW5zIGluIHRoZSBX
ZWIgUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5pZGwKaW5kZXggMDQ5Y2M5ZjNiNmY0ZmRhNjI4YjIxODYwMGMyNjM4ZDYxYWM4MDAz
OC4uNTJiMDM4NTRiZmE4OGIwNTY1NmJhNmZlMTdmZDczODQ0Y2NhODAzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCkBAIC0zMSwx
MSArMzEsMTEgQEAKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKICAgICBKU0J1aWx0aW5D
b25zdHJ1Y3RvcgogXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW0gewotICAgIFtKU0J1aWx0aW5d
IFByb21pc2UgY2FuY2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7
Ci0gICAgW0pTQnVpbHRpbl0gT2JqZWN0IGdldFJlYWRlcigpOwotICAgIFtKU0J1aWx0aW5dIFBy
b21pc2UgcGlwZVRvKGFueSBzdHJlYW1zLCBhbnkgb3B0aW9ucyk7Ci0gICAgW0pTQnVpbHRpbl0g
T2JqZWN0IHBpcGVUaHJvdWdoKGFueSBkZXN0LCBhbnkgb3B0aW9ucyk7Ci0gICAgW0pTQnVpbHRp
bl0gT2JqZWN0IHRlZSgpOworICAgIFByb21pc2UgY2FuY2VsKG9wdGlvbmFsIGFueSByZWFzb24p
OworICAgIE9iamVjdCBnZXRSZWFkZXIoKTsKKyAgICBQcm9taXNlIHBpcGVUbyhhbnkgc3RyZWFt
cywgYW55IG9wdGlvbnMpOworICAgIE9iamVjdCBwaXBlVGhyb3VnaChhbnkgZGVzdCwgYW55IG9w
dGlvbnMpOworICAgIE9iamVjdCB0ZWUoKTsKIAotICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIGxvY2tlZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBs
b2NrZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dy
aXRhYmxlU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJs
ZVN0cmVhbS5pZGwKaW5kZXggZDgyMWEzYjRlNTYwOThhN2ZlODljNjQ2OGZjMmQ5ZTE0ZjhlMTVj
Yi4uMGUwMDI2OWM5MTFhODVhZWM5NWI2NzBmMTkwMWMzOTFhNzk1M2JiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCkBAIC0zMSwx
MSArMzEsMTEgQEAKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKICAgICBKU0J1aWx0aW5D
b25zdHJ1Y3RvcgogXSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW0geyAKLSAgICBbSlNCdWlsdGlu
XSBQcm9taXNlIGFib3J0KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7
Ci0gICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBjbG9zZSgpOwotICAgIFtKU0J1aWx0aW5dIFByb21p
c2Ugd3JpdGUoYW55IGNodW5rKTsKKyAgICBQcm9taXNlIGFib3J0KG9wdGlvbmFsIGFueSByZWFz
b24pOworICAgIFByb21pc2UgY2xvc2UoKTsKKyAgICBQcm9taXNlIHdyaXRlKGFueSBjaHVuayk7
CiAKLSAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSBjbG9zZWQ7Ci0g
ICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgcmVhZHk7Ci0gICAgW0pT
QnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdGF0ZTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgUHJvbWlzZSBjbG9zZWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21p
c2UgcmVhZHk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdGF0ZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IDIxNmJjOTljODA1MWM2ZmM2YzMwYTRiOTA1ZTYyMGZkNzVkYjFkNmQuLjk0ODUzODY5
NTI2OWRiNGFiZjVmZjFmMmJjMWQxMmI4YzFiMDAxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01NjcsMTEgKzU2Nywx
MSBAQCBzdWIgU2hvdWxkR2VuZXJhdGVUb0pTSW1wbGVtZW50YXRpb24KIAogc3ViIEdldEF0dHJp
YnV0ZUdldHRlck5hbWUKIHsKLSAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpID0gQF87CisgICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwogICAgIGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykg
ewogICAgICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGNsYXNzTmFtZSkg
LiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKICAgICB9Ci0gICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9KSB7CisgICAgaWYgKElzSlNCdWlsdGlu
KCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CiAgICAgICAgIHJldHVybiBHZXRKU0J1aWx0aW5G
dW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgfQogICAgIHJldHVybiAi
anMiIC4gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAv
Q29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CkBAIC01NzksMTEgKzU3OSwxMSBA
QCBzdWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogCiBzdWIgR2V0QXR0cmlidXRlU2V0dGVyTmFt
ZQogewotICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBA
XzsKKyAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpID0gQF87CiAgICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgIHJl
dHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNv
bnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSk7CiAgICAgfQotICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifSkgeworICAgIGlmIChJc0pTQnVpbHRpbigkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSkgewogICAgICAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSkpOwogICAgIH0KICAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2VOYW1lIC4g
JGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAu
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAiQ29uc3Ry
dWN0b3IiIDogIiIpOwpAQCAtNTkxLDkgKzU5MSw5IEBAIHN1YiBHZXRBdHRyaWJ1dGVTZXR0ZXJO
YW1lCiAKIHN1YiBHZXRGdW5jdGlvbk5hbWUKIHsKLSAgICBteSAoJGNsYXNzTmFtZSwgJGZ1bmN0
aW9uKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0g
QF87CiAKLSAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJKU0J1aWx0aW4ifSkgeworICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rp
b24pKSB7CiAgICAgICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFt
ZSwgJGZ1bmN0aW9uKTsKICAgICB9CiAKQEAgLTEyODgsNyArMTI4OCw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVy
YXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1l
ID0gR2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBt
eSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSop
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTEzMDQsMTAgKzEzMDQsMTAgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0
dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVy
TmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAk
e2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9u
bHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmli
dXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVy
ZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ2b2lkICR7c2V0dGVyfShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTM4NiwxOCArMTM4Niwx
OCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlCiAKICAgICAgICAgcHVzaChAc3Bl
Y2lhbHMsICJEb250RW51bSIpIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJOb3RFbnVtZXJhYmxlIn0gfHwgJGlzX2dsb2JhbF9jb25zdHJ1Y3Rvcik7CiAg
ICAgICAgIHB1c2goQHNwZWNpYWxzLCAiUmVhZE9ubHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1
dGUpOwotICAgICAgICBwdXNoKEBzcGVjaWFscywgIkN1c3RvbUFjY2Vzc29yIikgdW5sZXNzICRp
c19nbG9iYWxfY29uc3RydWN0b3Igb3IgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07Ci0gICAgICAgIHB1c2goQHNwZWNpYWxzLCAiQWNjZXNz
b3IgfCBCdWlsdGluIikgaWYgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkN1c3RvbUFjY2Vz
c29yIikgdW5sZXNzICRpc19nbG9iYWxfY29uc3RydWN0b3Igb3IgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiQWNjZXNzb3IgfCBC
dWlsdGluIikgaWYgIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAg
ICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykg
OiAiMCI7CiAgICAgICAgIHB1c2goQCRoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAgICAg
ICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVH
ZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwogCiAgICAgICAgIGlm
IChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVl
MiwgIjAiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRB
dHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRl
KTsKKyAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRl
cmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAg
ICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAgfQogCkBAIC0xODAyLDcg
KzE4MDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbmV4dCBp
ZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4
fSA+IDE7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRm9yd2FyZERlY2xhcmVJbkhlYWRlciJ9OwogICAgICAgICAgICAgbmV4
dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUJp
bmRpbmcifTsKLSAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKyAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1
aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKIAogICAgICAgICAgICAgbXkgJG5lZWRzQXBw
bGVDb3B5cmlnaHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkFwcGxlQ29weXJpZ2h0In07CiAgICAgICAgICAgICBpZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQp
IHsKQEAgLTE4MTcsNyArMTgxNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25O
YW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1l
ID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgfQpAQCAtMTgzMSwxNCArMTgzMSwxNCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi8vIEF0dHJpYnV0ZXNcblxuIik7CiAg
ICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkg
ewogICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJGb3J3YXJkRGVjbGFyZUluSGVhZGVyIn07Ci0gICAgICAgICAgICBuZXh0IGlm
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9
OworICAgICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKIAogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3It
PkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmli
dXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNl
TmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7
Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgICAgIG15
ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCos
IEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xuIik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwpAQCAtMTkyOCwxMyArMTkyOCwxMyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJHNwZWNpYWwgPSAoQHNwZWNpYWxzID4gMCkgPyBq
b2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogICAgICAgICAgICAgcHVzaChAaGFzaFNwZWNp
YWxzLCAkc3BlY2lhbCk7CiAKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVH
ZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAg
ICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1l
LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2go
QGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwogCiAgICAgICAgICAgICBpZiAoSXNSZWFkb25seSgkYXR0
cmlidXRlKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICIwIik7CiAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1
dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAg
ICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRlcik7CiAgICAgICAgICAgICB9CiAKQEAgLTE5
NTIsNyArMTk1Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBt
eSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChA
aGFzaEtleXMsICRuYW1lKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1
bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJGZ1bmN0
aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOwogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAg
ICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlv
bik7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBwdXNo
KEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5j
dGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwog
ICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAogICAgICAgICBteSAk
ZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwpAQCAtMjEwMCw3
ICsyMTAwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWTUNsaWVudERhdGEmIGNsaWVudERhdGEgPSAq
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTtcbiIpIGlmICRmaXJz
dFByaXZhdGVGdW5jdGlvbjsKICAgICAgICAgICAgICAgICAkZmlyc3RQcml2YXRlRnVuY3Rpb24g
PSAwOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2
bSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5h
bWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qo
KSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9u
KSAuICIpLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMo
KS4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5j
dGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSAuICIpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTtcbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CkBAIC0yMjYyLDE0ICsyMjYyLDE0IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgJG51bUF0dHJpYnV0ZXMgPSAkbnVtQXR0cmlidXRlcyArIDEg
aWYgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwogICAgIGlmICgkbnVtQXR0
cmlidXRlcyA+IDApIHsKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZh
Y2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICAgICAgbmV4
dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAogICAgICAgICAgICAg
bXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBteSAk
dHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICMgTnVsbGFi
bGUgd3JhcHBlciB0eXBlcyBkbyBub3QgbmVlZCBhbnkgc3BlY2lhbCBoYW5kbGluZyBhcyB0aGUg
aW1wbGVtZW50YXRpb24gY2FuIHJldHVybiBhIG51bGwgcG9pbnRlci4KICAgICAgICAgICAgIG15
ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxhYmxlICYmICEkY29k
ZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7CiAgICAgICAgICAgICAkY29kZUdlbmVy
YXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICAgICAgICAgIG15ICRnZXRG
dW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xh
c3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBH
ZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1l
ID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRuYW1lKTsKICAgICAgICAgICAg
IG15ICRnZXR0ZXJFeGNlcHRpb25zID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn07CiAKQEAgLTI2MDgsMTEgKzI2MDgs
MTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGZvcmVhY2ggbXkgJGF0dHJp
YnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBpZiAoIUlzUmVhZG9u
bHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAgICAgICBuZXh0
IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgICAgICAgICBt
eSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIG15ICR0
eXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwotICAgICAgICAgICAgbXkgJHB1dEZ1
bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFz
c05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHB1dEZ1bmN0aW9uTmFtZSA9IEdl
dEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZh
Y2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUg
PSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CiAgICAgICAgICAgICBteSAkc2V0
dGVyUmFpc2VzRXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIn07CiAKQEAgLTI4NDQsNyArMjg0NCw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0
ID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rp
b25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUJpbmRpbmcifTsKLSAgICAgICAgICAgIG5leHQgaWYgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKyAg
ICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKICAg
ICAgICAgICAgIG15ICRuZWVkc0FwcGxlQ29weXJpZ2h0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9OwogICAgICAgICAgICAgaWYg
KCRuZWVkc0FwcGxlQ29weXJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNv
cHlyaWdodCkgewpAQCAtMjg2NCw3ICsyODY0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KIAogICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT50eXBlKSB1bmxlc3MgJGlzQ3VzdG9tIG9yIElzUmV0dXJuaW5nUHJvbWlzZSgkZnVu
Y3Rpb24pOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1l
KCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
R2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKICAgICAgICAgICAgIGlmICgkY29uZGl0aW9u
YWwpIHsKQEAgLTUwMTMsNyArNTAxMyw3IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAg
ICAgcHVzaChAc3BlY2lhbHMsICJEb250RGVsZXRlIikgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJVbmZvcmdlYWJsZSJ9CiAgICAgICAgfHwgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVuZm9yZ2VhYmxlIn07CiAgICAgcHVzaChAc3BlY2lh
bHMsICJEb250RW51bSIpIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiTm90RW51bWVyYWJsZSJ9OwotICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9KSB7CisgICAgaWYgKElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRmdW5jdGlvbikpIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkJ1
aWx0aW4iKTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC01MDIyLDYgKzUwMjIsMjAgQEAgc3ViIENv
bXB1dGVGdW5jdGlvblNwZWNpYWwKICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigi
IHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKIH0KIAorc3ViIElzSlNCdWlsdGluCit7CisgICAgbXkg
KCRpbnRlcmZhY2UsICRvYmplY3QpID0gQF87CisKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b20ifTsKKyAgICByZXR1cm4gMCBp
ZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIi
fTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21TZXR0ZXIifTsKKworICAgIHJldHVybiAxIGlmICRvYmplY3QtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgIHJldHVybiAxIGlmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25zdHJ1Y3RvciJ9Owor
CisgICAgcmV0dXJuIDA7Cit9CisKIHN1YiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUKIHsKICAg
ICBteSAoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9IEBfOwpAQCAtNTA1NSwxMSArNTA2OSwxMSBA
QCBzdWIgQWRkSlNCdWlsdGluSW5jbHVkZXNJZk5lZWRlZCgpCiAgICAgfQogCiAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGZ1bmN0aW9u
KSAuICJCdWlsdGlucy5oIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDb25kaXRpb25hbCJ9KSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRKU0J1
aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSAuICJCdWlsdGlucy5oIiwgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSBp
ZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogICAgIH0KIAogICAgIGZvcmVh
Y2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSkgLiAiQnVpbHRpbnMuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhH
ZXRKU0J1aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgLiAiQnVpbHRpbnMu
aCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlv
bmFsIn0pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggZGJjNmIyZDE2MTM5OTFjNmVmMDg4M2VmYzRjNjY2NTg4NmMwMzdk
Yi4uZDA3NGY1NGMzYjVkZWNlMDFkZjE3YjEwYjEzMWJiZTUwYjZmNTEzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3Bw
CkBAIC02Nyw2ICs2NywxMSBAQCBXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHdy
YXBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoV2ViQ29yZTo6VGVzdEpTQgogCiBHX0RFRklORV9U
WVBFKFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciwgd2Via2l0X2RvbV90ZXN0X2pz
X2J1aWx0aW5fY29uc3RydWN0b3IsIFdFQktJVF9ET01fVFlQRV9PQkpFQ1QpCiAKK2VudW0gewor
ICAgIFBST1BfMCwKKyAgICBQUk9QX1RFU1RfQVRUUklCVVRFLAorfTsKKwogc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZmluYWxpemUoR09iamVjdCog
b2JqZWN0KQogewogICAgIFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByaXZhdGUq
IHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUl9HRVRfUFJJVkFU
RShvYmplY3QpOwpAQCAtNzcsNiArODIsMzQgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0
X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21f
dGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3Qs
IGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVj
KQoreworICAgIFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogc2VsZiA9IFdFQktJ
VF9ET01fVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SKG9iamVjdCk7CisKKyAgICBzd2l0Y2gg
KHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfVEVTVF9BVFRSSUJVVEU6CisgICAgICAgIHdl
YmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF90ZXN0X2F0dHJpYnV0ZShz
ZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3Qs
IHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1T
cGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNl
bGYgPSBXRUJLSVRfRE9NX1RFU1RfSlNfQlVJTFRJTl9DT05TVFJVQ1RPUihvYmplY3QpOworCisg
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9QX1RFU1RfQVRUUklCVVRFOgor
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVp
bHRpbl9jb25zdHJ1Y3Rvcl9nZXRfdGVzdF9hdHRyaWJ1dGUoc2VsZikpOworICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlf
SUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwogc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9y
X2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwg
R09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0aWVzKQogewogICAgIEdPYmpl
Y3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2Nv
bnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5cGUsIGNvbnN0cnVjdFByb3Bl
cnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CkBAIC05NCw2ICsxMjcsMTkgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfY2xhc3NfaW5p
dChXZWJLaXRET01UZXN0SlNCdWkKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoZ29iamVj
dENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJpdmF0ZSkp
OwogICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJraXRfZG9tX3Rlc3RfanNfYnVp
bHRpbl9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3RvcjsKICAgICBnb2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZmluYWxpemU7CisgICAg
Z29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9j
b25zdHJ1Y3Rvcl9zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkg
PSB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHk7CisK
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAorICAgICAgICBnb2JqZWN0Q2xh
c3MsCisgICAgICAgIFBST1BfVEVTVF9BVFRSSUJVVEUsCisgICAgICAgIGdfcGFyYW1fc3BlY19i
b29sZWFuKAorICAgICAgICAgICAgInRlc3QtYXR0cmlidXRlIiwKKyAgICAgICAgICAgICJUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3I6dGVzdC1hdHRyaWJ1dGUiLAorICAgICAgICAgICAgInJlYWQt
d3JpdGUgZ2Jvb2xlYW4gVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOnRlc3QtYXR0cmlidXRlIiwK
KyAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OworCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVj
dG9yX2luaXQoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiByZXF1ZXN0KQpAQCAt
MTAyLDMgKzE0OCwyOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9j
b25zdHJ1Y3Rvcl9pbml0KFdlYktpdERPTVRlc3RKU0J1aWx0aW5DbwogICAgIG5ldyAocHJpdikg
V2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJpdmF0ZSgpOwogfQogCit2b2lkIHdl
YmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3Rlc3RfZnVuY3Rpb24oV2ViS2l0
RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBzZWxmKQoreworICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01f
SVNfVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRl
bS0+dGVzdEZ1bmN0aW9uKCk7Cit9CisKK2dib29sZWFuIHdlYmtpdF9kb21fdGVzdF9qc19idWls
dGluX2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9KU19C
VUlMVElOX0NPTlNUUlVDVE9SKHNlbGYpLCBGQUxTRSk7CisgICAgV2ViQ29yZTo6VGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdib29sZWFu
IHJlc3VsdCA9IGl0ZW0tPnRlc3RBdHRyaWJ1dGUoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
Cit2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF90ZXN0X2F0
dHJpYnV0ZShXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNlbGYsIGdib29sZWFu
IHZhbHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9KU19CVUlMVElOX0NPTlNUUlVD
VE9SKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGl0ZW0g
PSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0VGVzdEF0dHJpYnV0ZSh2YWx1ZSk7
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmgKaW5kZXggM2EwYjNmMzdlOGQyYWRiN2E5ZWMxYjNkZGFjMTAyZGUxYTVkNWFm
Yi4uMWQ1MGM4NzBmMTQ5OWFmNTMzNmM4YjZkM2M4YTYxODNhNzBiM2VkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKQEAg
LTQ3LDYgKzQ3LDM2IEBAIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Q2xhc3MgewogV0VCS0lUX0FQSSBHVHlwZQogd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29u
c3RydWN0b3JfZ2V0X3R5cGUodm9pZCk7CiAKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2pzX2J1
aWx0aW5fY29uc3RydWN0b3JfdGVzdF9mdW5jdGlvbjoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01U
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IKKyAqCisgKiBTdGFiaWxpdHk6IFVuc3RhYmxlCisqKi8K
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jf
dGVzdF9mdW5jdGlvbihXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNlbGYpOwor
CisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF90ZXN0
X2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IKKyAqCisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFi
bGUKKyoqLworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5f
Y29uc3RydWN0b3JfZ2V0X3Rlc3RfYXR0cmlidXRlKFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvciogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29u
c3RydWN0b3Jfc2V0X3Rlc3RfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvcgorICogQHZhbHVlOiBBICNnYm9vbGVhbgorICoKKyAqIFN0YWJp
bGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3RfanNf
YnVpbHRpbl9jb25zdHJ1Y3Rvcl9zZXRfdGVzdF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7CisKIEdfRU5EX0RFQ0xTCiAK
ICNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkgKi8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDI1NzZkODQzMDhlNjc5ZGY2NTUwNDNh
YzFjODcyMDVlZjMzMGU3MzYuLmJmN2NjMzI3MjIwMzE5MDQzNGVjZThmNWUxYTU2YzdkMzFjOGI1
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMjQs
MTQgKzI0LDIyIEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01D
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckJ1aWx0aW5z
LmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBGdW5j
dGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oSlNDOjpFeGVj
U3RhdGUqKTsKKwogLy8gQXR0cmlidXRlcwogCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogCiBjbGFzcyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSA6IHB1
YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtNjEsNiArNjksMjMgQEAgcHJpdmF0ZToK
IAogdHlwZWRlZiBKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cj4gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcjsKIAorLyogSGFzaCB0YWJs
ZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaElu
ZGV4IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGVJbmRleFs0XSA9IHsKKyAgICB7IDAs
IC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
K307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAidGVzdEF0dHJpYnV0ZUN1c3RvbSIsIERv
bnREZWxldGUgfCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nh
c3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJ0ZXN0QXR0
cmlidXRlUldDdXN0b20iLCBEb250RGVsZXRlIHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20pLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSkgfSB9LAorfTsKKworc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRhYmxlID0geyAyLCAz
LCB0cnVlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRhYmxlVmFsdWVzLCBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclRhYmxlSW5kZXggfTsKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpn
ZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CkBAIC04MCw2ICsxMDUsOSBAQCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZQogc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90
eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0b3IiLCBEb250RW51bSB8IFJl
YWRPbmx5LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpLCAo
aW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9
IH0sCisgICAgeyAidGVzdEF0dHJpYnV0ZSIsIEFjY2Vzc29yIHwgQnVpbHRpbiwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KHRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDb2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSAoc2V0
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNvZGVHZW5lcmF0b3IpIH0gfSwK
KyAgICB7ICJ0ZXN0RnVuY3Rpb24iLCBKU0M6OkJ1aWx0aW4sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPih0ZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JUZXN0RnVuY3Rpb25Db2RlR2VuZXJhdG9yKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsg
InRlc3RDdXN0b21GdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0g
fSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3Rv
dHlwZTo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSkgfTsKQEAgLTkwLDcgKzExOCw3IEBAIHZvaWQgSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICAgICByZWlmeVN0
YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlVGFi
bGVWYWx1ZXMsICp0aGlzKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
KSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OkpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogICAgIDogSlNET01PYmplY3Qoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpIHsgfQpAQCAtMTExLDYgKzEzOSwzNSBAQCB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRoaXNPYmplY3QtPkpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yOjp+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoKTsKIH0KIAor
Ym9vbCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4ob2JqZWN0KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNU
X0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgaWYgKGdldFN0YXRpY1ZhbHVlU2xv
dDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciwgQmFzZT4oc3RhdGUsIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgc2xvdCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKEV4ZWNTdGF0ZSog
c3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0o
c2xvdEJhc2UpOworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOworICAgIGF1dG8qIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihzbG90QmFzZSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0QXR0cmlidXRlQ3VzdG9t
KCpzdGF0ZSkpOworfQorCisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOworICAgIFVOVVNF
RF9QQVJBTSh0aGlzVmFsdWUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IqPihzbG90QmFzZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYXN0ZWRUaGlzLT50ZXN0QXR0cmlidXRlUldDdXN0b20oKnN0YXRlKSk7Cit9CisKKwog
RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21P
YmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBl
Kj4oYmFzZVZhbHVlKTsKQEAgLTExOSwxMSArMTc2LDMzIEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkp
KTsKIH0KIAordm9pZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVS
V0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOworICAgIFVOVVNFRF9Q
QVJBTShiYXNlT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBhdXRv
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4oYmFzZU9i
amVjdCk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBjYXN0ZWRUaGlzLT5zZXRUZXN0QXR0cmlidXRlUldDdXN0b20oKnN0YXRlLCB2
YWx1ZSk7Cit9CisKKwogSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVj
dG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
UHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFsdWUoKTsKKyAgICBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqPih0aGlzVmFsdWUpOworICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RDdXN0b21GdW5jdGlvbiIpOworICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6
OmluZm8oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0Q3Vz
dG9tRnVuY3Rpb24oKnN0YXRlKSk7Cit9CisKIHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Kj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCmluZGV4IDQy
MDI5NDJkMmI3OTI2ZWZlYzZjMDhjYWU3ODFkZTAzNzFiMjg4MGQuLjhjMWRmNWRjNGU4OTlmZTI2
MjE3NzQzNTRhODFiZWYwMjU0YzZiYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
ICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OlByb3Bl
cnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDOjpKU0NlbGwqKTsKIAogICAg
IERFQ0xBUkVfSU5GTzsKQEAgLTQ5LDYgKzUwLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlND
OjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9y
Jik7CiAKKworICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCisgICAgSlNDOjpKU1ZhbHVlIHRlc3RB
dHRyaWJ1dGVDdXN0b20oSlNDOjpFeGVjU3RhdGUmKSBjb25zdDsKKyAgICBKU0M6OkpTVmFsdWUg
dGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CisgICAgdm9pZCBz
ZXRUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwor
CisgICAgLy8gQ3VzdG9tIGZ1bmN0aW9ucworICAgIEpTQzo6SlNWYWx1ZSB0ZXN0Q3VzdG9tRnVu
Y3Rpb24oSlNDOjpFeGVjU3RhdGUmKTsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJh
c2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgogICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCBjNTJkYzcyZDAyMjZmZTMx
ZDExM2M0ZTgwM2VhYmFkYzk5ZDJjM2RmLi5jOTRmODk4MWY5MDU4YzUwMThlY2RhZDc0M2I3ZjFj
N2VmOGQyYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
aApAQCAtMjgsNCArMjgsMTAgQEAKIAogV0VCS0lUX0NMQVNTX0FWQUlMQUJMRV9NQUMoOTg3Nl81
KQogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ig
OiBET01PYmplY3QKK0Bwcm9wZXJ0eSBCT09MIHRlc3RBdHRyaWJ1dGU7CitAcHJvcGVydHkgKHJl
YWRvbmx5KSBCT09MIHRlc3RBdHRyaWJ1dGVDdXN0b207CitAcHJvcGVydHkgQk9PTCB0ZXN0QXR0
cmlidXRlUldDdXN0b207CisKKy0gKHZvaWQpdGVzdEZ1bmN0aW9uOworLSAodm9pZCl0ZXN0Q3Vz
dG9tRnVuY3Rpb247CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IubW0KaW5kZXggN2JiOWFiMjExNWVkNGQ0MTc1MTUxMDA4NDJjNzdjNjNjYWUzZjI1OS4u
ZTI3MzgyMmY2Y2JkOWUxNGNhODU0YjQyODhkN2I1YjgzZjA0YjkzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5tbQpAQCAtNjAsNiArNjAsNDggQEAKICAg
ICBbc3VwZXIgZmluYWxpemVdOwogfQogCistIChCT09MKXRlc3RBdHRyaWJ1dGUKK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnRl
c3RBdHRyaWJ1dGUoKTsKK30KKworLSAodm9pZClzZXRUZXN0QXR0cmlidXRlOihCT09MKW5ld1Rl
c3RBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CisgICAgSU1QTC0+c2V0VGVzdEF0dHJpYnV0ZShuZXdUZXN0QXR0cmlidXRlKTsKK30KKworLSAo
Qk9PTCl0ZXN0QXR0cmlidXRlQ3VzdG9tCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT50ZXN0QXR0cmlidXRlQ3VzdG9tKCk7Cit9
CisKKy0gKEJPT0wpdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT50ZXN0QXR0cmlidXRlUldD
dXN0b20oKTsKK30KKworLSAodm9pZClzZXRUZXN0QXR0cmlidXRlUldDdXN0b206KEJPT0wpbmV3
VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIElNUEwtPnNldFRlc3RBdHRyaWJ1dGVSV0N1c3RvbShuZXdUZXN0QXR0
cmlidXRlUldDdXN0b20pOworfQorCistICh2b2lkKXRlc3RGdW5jdGlvbgoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT50ZXN0RnVuY3Rpb24o
KTsKK30KKworLSAodm9pZCl0ZXN0Q3VzdG9tRnVuY3Rpb24KK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dGVzdEN1c3RvbUZ1bmN0aW9uKCk7
Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjb3JlKERP
TVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciAqd3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5pZGwKaW5kZXggNmExZjFkZGZhMTU2YjQxODYyZGUwNjY1MDc4ODljODg5YmMwY2E1
MC4uZjBjMWYyNTM5MDA5ZTZkMGFmN2RlMzI4YjYwZDgxZjFkNDRmN2NjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwKQEAgLTI5LDUgKzI5LDEyIEBACiBbCiAgICAgSlNCdWls
dGluQ29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciB7Ci19
OwogCisgICAgdm9pZCB0ZXN0RnVuY3Rpb24oKTsKKyAgICBhdHRyaWJ1dGUgYm9vbGVhbiB0ZXN0
QXR0cmlidXRlOworCisgICAgWyBDdXN0b20gXSB2b2lkIHRlc3RDdXN0b21GdW5jdGlvbigpOwor
ICAgIFsgQ3VzdG9tR2V0dGVyIF0gcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJp
YnV0ZUN1c3RvbTsKKyAgICBbIEN1c3RvbUdldHRlciwgQ3VzdG9tU2V0dGVyIF0gYXR0cmlidXRl
IGJvb2xlYW4gdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tOworCit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263808</attachid>
            <date>2015-10-22 01:23:33 -0700</date>
            <delta_ts>2015-10-25 07:49:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150438-20151022102247.patch</filename>
            <type>text/plain</type>
            <size>39940</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZmYzRiNmI3ZDAwOGYw
YTJhNTNmYjViOWNmODdmMTAwOTY0MDY2Ny4uY2MzMGM5ZjljN2EyMjEwMjgxOGRhYTg1Mjk0NDg3
OTc5NGJlODZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDE1LTEwLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgSURMIGZ1
bmN0aW9ucyBhbmQgYXR0cmlidXRlcyBzaG91bGQgYmUgSlNCdWlsdGluIGJ5IGRlZmF1bHQgaWYg
aW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmluZGluZyBnZW5lcmF0b3IgaXMg
bm93IGRlZHVjaW5nIHRoYXQgZnVuY3Rpb24vYXR0cmlidXRlIGlzIEpTQnVpbHRpbiBpZiB0aGUg
aW50ZXJmYWNlIGlzIG1hcmtlZCBhcyBKU0J1aWx0aW5Db25zdHJ1Y3Rvci4KKyAgICAgICAgT25l
IGV4Y2VwdGlvbiBpcyBjdXN0b20gc2V0dGVycywgZ2V0dGVycyBvciBmdW5jdGlvbnMgd2hpY2gg
cmVtYWluIEMrKyBoYW5kbGVkLgorICAgICAgICBVcGRhdGVkIHN0cmVhbXMgQVBJIElETHMgYWNj
b3JkaW5nbHkuCisKKyAgICAgICAgUmVtb3ZlZCB1bm5lZWRlZCAiRGVmYXVsdCIga2V5d29yZCBm
b3IgY2FuY2VsIGZ1bmN0aW9uIGluIFdlYklETC4KKworICAgICAgICBBZGRlZCBhIGJpbmRpbmcg
dGVzdCBjYXNlLgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBN
b2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGw6CisgICAgICAgICog
TW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmlkbDoKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFt
cy9Xcml0YWJsZVN0cmVhbS5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG06CisgICAgICAgIChHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKToKKyAgICAgICAg
KEdldEF0dHJpYnV0ZVNldHRlck5hbWUpOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAg
ICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlc0hhc2hU
YWJsZSk6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKENvbXB1
dGVGdW5jdGlvblNwZWNpYWwpOgorICAgICAgICAoSXNKU0J1aWx0aW4pOgorICAgICAgICAoQWRk
SlNCdWlsdGluSW5jbHVkZXNJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eSk6
CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfcHJv
cGVydHkpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jf
Y2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1
Y3Rvcl90ZXN0X2Z1bmN0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9zZXRfdGVzdF9hdHRyaWJ1dGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1
dGVSV0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
clByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IubW06CisgICAgICAg
ICgtW0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciB0ZXN0QXR0cmlidXRlXSk6CisgICAgICAg
ICgtW0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciBzZXRUZXN0QXR0cmlidXRlOl0pOgorICAg
ICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgdGVzdEF0dHJpYnV0ZUN1c3RvbV0p
OgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgdGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tXSk6CisgICAgICAgICgtW0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciBzZXRUZXN0
QXR0cmlidXRlUldDdXN0b206XSk6CisgICAgICAgICgtW0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvciB0ZXN0RnVuY3Rpb25dKToKKyAgICAgICAgKC1bRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yIHRlc3RDdXN0b21GdW5jdGlvbl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaWRsOgorCiAyMDE1LTEwLTIxICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOZXR3b3JrUHJvY2Vz
czogRE5TIHByZWZldGNoIGhhcHBlbnMgaW4gdGhlIFdlYiBQcm9jZXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneS5pZGwKaW5kZXggODhhMjljNTk3OTA4ZDJkYTFjNDYyOTJkZmYzODIxZTAzYWIyZTkwMS4u
NzUyZTIzMGZlNjU1MzdiODQwZTc0NTA3NWM0MmU1NDI3NDU1Mjg2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5LmlkbApAQCAtMzEsNSArMzEsNSBAQAogICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yLAog
ICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogXSBpbnRlcmZhY2UgQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneSB7Ci0gICAgW0pTQnVpbHRpbl0gZG91YmxlIHNpemUoKTsKKyAgICBkb3VibGUg
c2l6ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9D
b3VudFF1ZXVpbmdTdHJhdGVneS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
Q291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsCmluZGV4IDAxZWI3MDNiNDExZTJmNmI5YjBlZmUyYjM0
MjA2NTI3OGY4ZmYyN2UuLjZiYzAzNDdkYTk0ODNhYjRlNzkxY2FlZDcyNmVhYmE4NzQ0ZmRhMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdT
dHJhdGVneS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVl
dWluZ1N0cmF0ZWd5LmlkbApAQCAtMzEsNSArMzEsNSBAQAogICAgIEpTQnVpbHRpbkNvbnN0cnVj
dG9yLAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogXSBpbnRlcmZhY2UgQ291bnRRdWV1
aW5nU3RyYXRlZ3kgewotICAgIFtKU0J1aWx0aW5dIGRvdWJsZSBzaXplKCk7CisgICAgZG91Ymxl
IHNpemUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmlkbAppbmRleCAwNDljYzlmM2I2ZjRmZGE2MjhiMjE4NjAwYzI2MzhkNjFhYzgw
MDM4Li41MmIwMzg1NGJmYTg4YjA1NjU2YmE2ZmUxN2ZkNzM4NDRjY2E4MDMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTMx
LDExICszMSwxMSBAQAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogICAgIEpTQnVpbHRp
bkNvbnN0cnVjdG9yCiBdIGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbSB7Ci0gICAgW0pTQnVpbHRp
bl0gUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgcmVhc29u
KTsKLSAgICBbSlNCdWlsdGluXSBPYmplY3QgZ2V0UmVhZGVyKCk7Ci0gICAgW0pTQnVpbHRpbl0g
UHJvbWlzZSBwaXBlVG8oYW55IHN0cmVhbXMsIGFueSBvcHRpb25zKTsKLSAgICBbSlNCdWlsdGlu
XSBPYmplY3QgcGlwZVRocm91Z2goYW55IGRlc3QsIGFueSBvcHRpb25zKTsKLSAgICBbSlNCdWls
dGluXSBPYmplY3QgdGVlKCk7CisgICAgUHJvbWlzZSBjYW5jZWwob3B0aW9uYWwgYW55IHJlYXNv
bik7CisgICAgT2JqZWN0IGdldFJlYWRlcigpOworICAgIFByb21pc2UgcGlwZVRvKGFueSBzdHJl
YW1zLCBhbnkgb3B0aW9ucyk7CisgICAgT2JqZWN0IHBpcGVUaHJvdWdoKGFueSBkZXN0LCBhbnkg
b3B0aW9ucyk7CisgICAgT2JqZWN0IHRlZSgpOwogCi0gICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gbG9ja2VkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFu
IGxvY2tlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
V3JpdGFibGVTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRh
YmxlU3RyZWFtLmlkbAppbmRleCBkODIxYTNiNGU1NjA5OGE3ZmU4OWM2NDY4ZmMyZDllMTRmOGUx
NWNiLi4wZTAwMjY5YzkxMWE4NWFlYzk1YjY3MGYxOTAxYzM5MWE3OTUzYmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGwKQEAgLTMx
LDExICszMSwxMSBAQAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogICAgIEpTQnVpbHRp
bkNvbnN0cnVjdG9yCiBdIGludGVyZmFjZSBXcml0YWJsZVN0cmVhbSB7IAotICAgIFtKU0J1aWx0
aW5dIFByb21pc2UgYWJvcnQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgcmVhc29u
KTsKLSAgICBbSlNCdWlsdGluXSBQcm9taXNlIGNsb3NlKCk7Ci0gICAgW0pTQnVpbHRpbl0gUHJv
bWlzZSB3cml0ZShhbnkgY2h1bmspOworICAgIFByb21pc2UgYWJvcnQob3B0aW9uYWwgYW55IHJl
YXNvbik7CisgICAgUHJvbWlzZSBjbG9zZSgpOworICAgIFByb21pc2Ugd3JpdGUoYW55IGNodW5r
KTsKIAotICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIGNsb3NlZDsK
LSAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSByZWFkeTsKLSAgICBb
SlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0YXRlOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBQcm9taXNlIGNsb3NlZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJv
bWlzZSByZWFkeTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHN0YXRlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KaW5kZXggMjE2YmM5OWM4MDUxYzZmYzZjMzBhNGI5MDVlNjIwZmQ3NWRiMWQ2ZC4uOTQ4NTM4
Njk1MjY5ZGI0YWJmNWZmMWYyYmMxZDEyYjhjMWIwMDE4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTU2NywxMSArNTY3
LDExIEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRvSlNJbXBsZW1lbnRhdGlvbgogCiBzdWIgR2V0QXR0
cmlidXRlR2V0dGVyTmFtZQogewotICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87CiAgICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGlj
KSB7CiAgICAgICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1l
KSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWUpOwogICAgIH0KLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn0pIHsKKyAgICBpZiAoSXNKU0J1aWx0
aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgcmV0dXJuIEdldEpTQnVpbHRp
bkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICB9CiAgICAgcmV0dXJu
ICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+
IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKQEAgLTU3OSwxMSArNTc5LDEx
IEBAIHN1YiBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lCiAKIHN1YiBHZXRBdHRyaWJ1dGVTZXR0ZXJO
YW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9
IEBfOworICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0
dHJpYnV0ZSkgPSBAXzsKICAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAg
cmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFtZSkgLiAi
Q29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lKTsKICAgICB9Ci0gICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9KSB7CisgICAgaWYgKElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CiAgICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAk
YXR0cmlidXRlKSk7CiAgICAgfQogICAgIHJldHVybiAic2V0SlMiIC4gJGludGVyZmFjZU5hbWUg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUp
IC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25z
dHJ1Y3RvciIgOiAiIik7CkBAIC01OTEsOSArNTkxLDkgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRl
ck5hbWUKIAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewotICAgIG15ICgkY2xhc3NOYW1lLCAkZnVu
Y3Rpb24pID0gQF87CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikg
PSBAXzsKIAotICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQnVpbHRpbiJ9KSB7CisgICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5j
dGlvbikpIHsKICAgICAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NO
YW1lLCAkZnVuY3Rpb24pOwogICAgIH0KIApAQCAtMTI4OCw3ICsxMjg4LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsK
ICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5h
bWUgPSBHZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAg
IG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRl
Kik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtMTMwNCwxMCArMTMwNCwxMCBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKIAogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRp
b25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRn
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0
ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVl
ICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFk
b25seSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRy
aWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50
ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpT
VmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0xMzg2LDE4ICsxMzg2
LDE4IEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZXNIYXNoVGFibGUKIAogICAgICAgICBwdXNoKEBz
cGVjaWFscywgIkRvbnRFbnVtIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5vdEVudW1lcmFibGUifSB8fCAkaXNfZ2xvYmFsX2NvbnN0cnVjdG9yKTsK
ICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJSZWFkT25seSIpIGlmIElzUmVhZG9ubHkoJGF0dHJp
YnV0ZSk7Ci0gICAgICAgIHB1c2goQHNwZWNpYWxzLCAiQ3VzdG9tQWNjZXNzb3IiKSB1bmxlc3Mg
JGlzX2dsb2JhbF9jb25zdHJ1Y3RvciBvciAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKLSAgICAgICAgcHVzaChAc3BlY2lhbHMsICJBY2Nl
c3NvciB8IEJ1aWx0aW4iKSBpZiAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiQ3VzdG9tQWNj
ZXNzb3IiKSB1bmxlc3MgJGlzX2dsb2JhbF9jb25zdHJ1Y3RvciBvciBJc0pTQnVpbHRpbigkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgcHVzaChAc3BlY2lhbHMsICJBY2Nlc3NvciB8
IEJ1aWx0aW4iKSBpZiAgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAg
ICAgIG15ICRzcGVjaWFsID0gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxz
KSA6ICIwIjsKICAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgJHNwZWNpYWwpOwogCi0gICAg
ICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0
ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpOwogICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMSwgJGdldHRlcik7CiAKICAgICAgICAg
aWYgKElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFs
dWUyLCAiMCIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbXkgJHNldHRlciA9IEdl
dEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUpOworICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgcHVzaChAJGhhc2hWYWx1ZTIsICRzZXR0ZXIpOwogICAgICAgICB9CiAKQEAgLTE4MDIs
NyArMTgwMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBuZXh0
IGlmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5k
ZXh9ID4gMTsKICAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJGb3J3YXJkRGVjbGFyZUluSGVhZGVyIn07CiAgICAgICAgICAgICBu
ZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
QmluZGluZyJ9OwotICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICAgICAgbmV4dCBpZiBJc0pT
QnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogCiAgICAgICAgICAgICBteSAkbmVlZHNB
cHBsZUNvcHlyaWdodCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQXBwbGVDb3B5cmlnaHQifTsKICAgICAgICAgICAgIGlmICgkbmVlZHNBcHBsZUNvcHlyaWdo
dCkgewpAQCAtMTgxNyw3ICsxODE3LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAog
ICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlv
bk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5h
bWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICB9CkBAIC0xODMxLDE0ICsxODMxLDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLy8gQXR0cmlidXRlc1xuXG4iKTsK
ICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9
KSB7CiAgICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkZvcndhcmREZWNsYXJlSW5IZWFkZXIifTsKLSAgICAgICAgICAgIG5leHQg
aWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGlu
In07CisgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRy
aWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
KyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZh
Y2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkp
IHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAg
bXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFz
c05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7XG4iKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CkBAIC0xOTI4LDEzICsxOTI4LDEzIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/
IGpvaW4oIiB8ICIsIEBzcGVjaWFscykgOiAiMCI7CiAgICAgICAgICAgICBwdXNoKEBoYXNoU3Bl
Y2lhbHMsICRzcGVjaWFsKTsKIAotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0
ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAg
ICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5h
bWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVz
aChAaGFzaFZhbHVlMSwgJGdldHRlcik7CiAKICAgICAgICAgICAgIGlmIChJc1JlYWRvbmx5KCRh
dHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIjAiKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJp
YnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwor
ICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRl
cmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAgICAgIH0KIApAQCAt
MTk1Miw3ICsxOTUyLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
IG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBwdXNo
KEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0
RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkZnVu
Y3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5j
dGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAog
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0
aW9uKTsKQEAgLTIwMjQsNyArMjAyNCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIHB1
c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKLSAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1
bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICBteSAkZnVuY3Rpb25O
YW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7
CiAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRmdW5jdGlvbk5hbWUpOwogCiAgICAgICAgIG15
ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7CkBAIC0yMTAw
LDcgKzIxMDAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZNQ2xpZW50RGF0YSYgY2xpZW50RGF0YSA9
ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpO1xuIikgaWYgJGZp
cnN0UHJpdmF0ZUZ1bmN0aW9uOwogICAgICAgICAgICAgICAgICRmaXJzdFByaXZhdGVGdW5jdGlv
biA9IDA7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0
KHZtLCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZSAuICJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdldEZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pIC4gIiksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCBjbGllbnREYXRhLmJ1aWx0aW5OYW1l
cygpLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICJQcml2YXRlTmFtZSgpLCBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdldEZ1
bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pIC4gIiksIFJlYWRP
bmx5IHwgRG9udEVudW0pO1xuIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAgLTIyNjIsMTQgKzIyNjIsMTQgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAkbnVtQXR0cmlidXRlcyA9ICRudW1BdHRyaWJ1dGVzICsg
MSBpZiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSk7CiAgICAgaWYgKCRudW1B
dHRyaWJ1dGVzID4gMCkgewogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAgICAgICBu
ZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgICAgICAg
ICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIG15
ICR0eXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwogICAgICAgICAgICAgIyBOdWxs
YWJsZSB3cmFwcGVyIHR5cGVzIGRvIG5vdCBuZWVkIGFueSBzcGVjaWFsIGhhbmRsaW5nIGFzIHRo
ZSBpbXBsZW1lbnRhdGlvbiBjYW4gcmV0dXJuIGEgbnVsbCBwb2ludGVyLgogICAgICAgICAgICAg
bXkgJGlzTnVsbGFibGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmlzTnVsbGFibGUgJiYgISRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKICAgICAgICAgICAgICRjb2RlR2Vu
ZXJhdG9yLT5Bc3NlcnROb3RTZXF1ZW5jZVR5cGUoJHR5cGUpOwotICAgICAgICAgICAgbXkgJGdl
dEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdldEZ1bmN0aW9uTmFtZSA9
IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEFzIn0gfHwgJG5hbWUpOwogICAgICAgICAg
ICAgbXkgJGdldHRlckV4Y2VwdGlvbnMgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJHZXR0ZXJSYWlzZXNFeGNlcHRpb24ifTsKIApAQCAtMjYwOCwxMSArMjYw
OCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIGlmICghSXNSZWFk
b25seSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKyAgICAgICAgICAgIG5l
eHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgICAg
IG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAgbXkg
JHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7Ci0gICAgICAgICAgICBteSAkcHV0
RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1lID0g
R2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBteSAkaW1wbFNldHRlckZ1bmN0aW9uTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRuYW1lKTsKICAgICAgICAgICAgIG15ICRz
ZXR0ZXJSYWlzZXNFeGNlcHRpb24gPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJTZXR0ZXJSYWlzZXNFeGNlcHRpb24ifTsKIApAQCAtMjg0NCw3ICsyODQ0LDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgbXkgJGluQXBwbGVDb3B5cmln
aHQgPSAwOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5j
dGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQmluZGluZyJ9OwotICAgICAgICAgICAgbmV4dCBpZiAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9Owor
ICAgICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwog
ICAgICAgICAgICAgbXkgJG5lZWRzQXBwbGVDb3B5cmlnaHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In07CiAgICAgICAgICAgICBp
ZiAoJG5lZWRzQXBwbGVDb3B5cmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxl
Q29weXJpZ2h0KSB7CkBAIC0yODY0LDcgKzI4NjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogCiAgICAgICAgICAgICBBZGRJbmNsdWRlc0ZvclR5cGVJbkltcGwoJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPnR5cGUpIHVubGVzcyAkaXNDdXN0b20gb3IgSXNSZXR1cm5pbmdQcm9taXNlKCRm
dW5jdGlvbik7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5h
bWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKIAog
ICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9OwogICAgICAgICAgICAgaWYgKCRjb25kaXRp
b25hbCkgewpAQCAtNTAxMyw3ICs1MDEzLDcgQEAgc3ViIENvbXB1dGVGdW5jdGlvblNwZWNpYWwK
ICAgICBwdXNoKEBzcGVjaWFscywgIkRvbnREZWxldGUiKSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlVuZm9yZ2VhYmxlIn0KICAgICAgICB8fCAkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVW5mb3JnZWFibGUifTsKICAgICBwdXNoKEBzcGVj
aWFscywgIkRvbnRFbnVtIikgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOb3RFbnVtZXJhYmxlIn07Ci0gICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn0pIHsKKyAgICBpZiAoSXNKU0J1aWx0aW4o
JGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpTQzo6
QnVpbHRpbiIpOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTUwMjIsNiArNTAyMiwyMCBAQCBzdWIg
Q29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkgPyBqb2lu
KCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogfQogCitzdWIgSXNKU0J1aWx0aW4KK3sKKyAgICBt
eSAoJGludGVyZmFjZSwgJG9iamVjdCkgPSBAXzsKKworICAgIHJldHVybiAwIGlmICRvYmplY3Qt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbSJ9OworICAgIHJldHVybiAw
IGlmICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUdldHRl
ciJ9OworICAgIHJldHVybiAwIGlmICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbVNldHRlciJ9OworCisgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgcmV0dXJuIDEgaWYg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbkNvbnN0cnVjdG9yIn07
CisKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZQogewog
ICAgIG15ICgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CkBAIC01MDU1LDExICs1MDY5LDEx
IEBAIHN1YiBBZGRKU0J1aWx0aW5JbmNsdWRlc0lmTmVlZGVkKCkKICAgICB9CiAKICAgICBmb3Jl
YWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkZnVuY3Rp
b24pIC4gIkJ1aWx0aW5zLmgiLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkNvbmRpdGlvbmFsIn0pIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpT
QnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pIC4gIkJ1aWx0aW5zLmgiLCAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0p
IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CiAgICAgfQogCiAgICAgZm9y
ZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKSAuICJCdWlsdGlucy5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSAuICJCdWlsdGlu
cy5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0
aW9uYWwifSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcAppbmRleCBkYmM2YjJkMTYxMzk5MWM2ZWYwODgzZWZjNGM2NjY1ODg2YzAz
N2RiLi5kMDc0ZjU0YzNiNWRlY2UwMWRmMTdiMTBiMTMxYmJlNTBiNmY1MTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5j
cHAKQEAgLTY3LDYgKzY3LDExIEBAIFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciog
d3JhcFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcihXZWJDb3JlOjpUZXN0SlNCCiAKIEdfREVGSU5F
X1RZUEUoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLCB3ZWJraXRfZG9tX3Rlc3Rf
anNfYnVpbHRpbl9jb25zdHJ1Y3RvciwgV0VCS0lUX0RPTV9UWVBFX09CSkVDVCkKIAorZW51bSB7
CisgICAgUFJPUF8wLAorICAgIFBST1BfVEVTVF9BVFRSSUJVVEUsCit9OworCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SX0dFVF9QUklW
QVRFKG9iamVjdCk7CkBAIC03Nyw2ICs4MiwzNCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rl
c3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAg
R19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfcGFy
ZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpCit7CisgICAgV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBzZWxmID0gV0VC
S0lUX0RPTV9URVNUX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1Iob2JqZWN0KTsKKworICAgIHN3aXRj
aCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9URVNUX0FUVFJJQlVURToKKyAgICAgICAg
d2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jfc2V0X3Rlc3RfYXR0cmlidXRl
KHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJh
bVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciog
c2VsZiA9IFdFQktJVF9ET01fVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SKG9iamVjdCk7CisK
KyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfVEVTVF9BVFRSSUJVVEU6
CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHdlYmtpdF9kb21fdGVzdF9qc19i
dWlsdGluX2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0dHJpYnV0ZShzZWxmKSk7CisgICAgICAgIGJy
ZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
fQorCiBzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0
b3JfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQgY29uc3RydWN0UHJvcGVydGllc0NvdW50
LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVjdFByb3BlcnRpZXMpCiB7CiAgICAgR09i
amVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5f
Y29uc3RydWN0b3JfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0b3IodHlwZSwgY29uc3RydWN0UHJv
cGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVzKTsKQEAgLTk0LDYgKzEyNywxOSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9jbGFzc19p
bml0KFdlYktpdERPTVRlc3RKU0J1aQogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShnb2Jq
ZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcml2YXRl
KSk7CiAgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RvciA9IHdlYmtpdF9kb21fdGVzdF9qc19i
dWlsdGluX2NvbnN0cnVjdG9yX2NvbnN0cnVjdG9yOwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxp
emUgPSB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9maW5hbGl6ZTsKKyAg
ICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eTsKKyAgICBnb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0
eSA9IHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF9wcm9wZXJ0eTsK
KworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoCisgICAgICAgIGdvYmplY3RD
bGFzcywKKyAgICAgICAgUFJPUF9URVNUX0FUVFJJQlVURSwKKyAgICAgICAgZ19wYXJhbV9zcGVj
X2Jvb2xlYW4oCisgICAgICAgICAgICAidGVzdC1hdHRyaWJ1dGUiLAorICAgICAgICAgICAgIlRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjp0ZXN0LWF0dHJpYnV0ZSIsCisgICAgICAgICAgICAicmVh
ZC13cml0ZSBnYm9vbGVhbiBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6dGVzdC1hdHRyaWJ1dGUi
LAorICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRF
KSk7CisKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3Ry
dWN0b3JfaW5pdChXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHJlcXVlc3QpCkBA
IC0xMDIsMyArMTQ4LDI4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX2luaXQoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvCiAgICAgbmV3IChwcml2
KSBXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcml2YXRlKCk7CiB9CiAKK3ZvaWQg
d2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfdGVzdF9mdW5jdGlvbihXZWJL
aXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RP
TV9JU19URVNUX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1Ioc2VsZikpOworICAgIFdlYkNvcmU6OlRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBp
dGVtLT50ZXN0RnVuY3Rpb24oKTsKK30KKworZ2Jvb2xlYW4gd2Via2l0X2RvbV90ZXN0X2pzX2J1
aWx0aW5fY29uc3RydWN0b3JfZ2V0X3Rlc3RfYXR0cmlidXRlKFdlYktpdERPTVRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvciogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0pT
X0JVSUxUSU5fQ09OU1RSVUNUT1Ioc2VsZiksIEZBTFNFKTsKKyAgICBXZWJDb3JlOjpUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ2Jvb2xl
YW4gcmVzdWx0ID0gaXRlbS0+dGVzdEF0dHJpYnV0ZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK3ZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jfc2V0X3Rlc3Rf
YXR0cmlidXRlKFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogc2VsZiwgZ2Jvb2xl
YW4gdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOwor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0pTX0JVSUxUSU5fQ09OU1RS
VUNUT1Ioc2VsZikpOworICAgIFdlYkNvcmU6OlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogaXRl
bSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT5zZXRUZXN0QXR0cmlidXRlKHZhbHVl
KTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IuaAppbmRleCAzYTBiM2YzN2U4ZDJhZGI3YTllYzFiM2RkYWMxMDJkZTFhNWQ1
YWZiLi4xZDUwYzg3MGYxNDk5YWY1MzM2YzhiNmQzYzhhNjE4M2E3MGIzZWQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaApA
QCAtNDcsNiArNDcsMzYgQEAgc3RydWN0IF9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDbGFzcyB7CiBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9j
b25zdHJ1Y3Rvcl9nZXRfdHlwZSh2b2lkKTsKIAorLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfanNf
YnVpbHRpbl9jb25zdHJ1Y3Rvcl90ZXN0X2Z1bmN0aW9uOgorICogQHNlbGY6IEEgI1dlYktpdERP
TVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoq
LworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rv
cl90ZXN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogc2VsZik7
CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZ2V0X3Rl
c3RfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvcgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFuCisgKgorICogU3RhYmlsaXR5OiBVbnN0
YWJsZQorKiovCitXRUJLSVRfQVBJIGdib29sZWFuCit3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRp
bl9jb25zdHJ1Y3Rvcl9nZXRfdGVzdF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9j
b25zdHJ1Y3Rvcl9zZXRfdGVzdF9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yCisgKiBAdmFsdWU6IEEgI2dib29sZWFuCisgKgorICogU3Rh
YmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9q
c19idWlsdGluX2NvbnN0cnVjdG9yX3NldF90ZXN0X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqIHNlbGYsIGdib29sZWFuIHZhbHVlKTsKKwogR19FTkRfREVDTFMK
IAogI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RBQkxFX0FQSSAqLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMjU3NmQ4NDMwOGU2NzlkZjY1NTA0
M2FjMWM4NzIwNWVmMzMwZTczNi4uYmY3Y2MzMjcyMjAzMTkwNDM0ZWNlOGY1ZTFhNTZjN2QzMWM4
YjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC0y
NCwxNCArMjQsMjIgQEAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRp
bnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZ1
bmN0aW9ucworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOworCiAvLyBBdHRyaWJ1dGVzCiAKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmli
dXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9pZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CiAKIGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlIDog
cHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBAIC02MSw2ICs2OSwyMyBAQCBwcml2YXRl
OgogCiB0eXBlZGVmIEpTQnVpbHRpbkNvbnN0cnVjdG9yPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yPiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOwogCisvKiBIYXNoIHRh
YmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNo
SW5kZXggSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUYWJsZUluZGV4WzRdID0geworICAgIHsg
MCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9
LAorfTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJ0ZXN0QXR0cmlidXRlQ3VzdG9tIiwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IsIE5vSW50cmluc2ljLCB7IChp
bnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorICAgIHsgInRlc3RB
dHRyaWJ1dGVSV0N1c3RvbSIsIERvbnREZWxldGUgfCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSksIChpbnRwdHJf
dCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKSB9IH0sCit9OworCitzdGF0
aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGUgPSB7IDIs
IDMsIHRydWUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yVGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2
bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6
OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8
IERvbnRFbnVtKTsKQEAgLTgwLDYgKzEwNSw5IEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlCiBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtIHwg
UmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvciks
IChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDAp
IH0gfSwKKyAgICB7ICJ0ZXN0QXR0cmlidXRlIiwgQWNjZXNzb3IgfCBCdWlsdGluLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVpbHRpbkdlbmVyYXRvcj4odGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpIChz
ZXRUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ29kZUdlbmVyYXRvcikgfSB9
LAorICAgIHsgInRlc3RGdW5jdGlvbiIsIEpTQzo6QnVpbHRpbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0b3I+KHRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRlc3RGdW5jdGlvbkNvZGVHZW5lcmF0b3IpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAidGVzdEN1c3RvbUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkg
fSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJv
dG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yUHJvdG90eXBlKSB9OwpAQCAtOTAsNyArMTE4LDcgQEAgdm9pZCBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVU
YWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi1jb25zdCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNl
OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IpIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBKU0RPTU9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkgeyB9CkBAIC0xMTEsNiArMTM5LDM1IEBAIHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiAgICAgdGhpc09iamVjdC0+SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3I6On5KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcigpOwogfQog
Citib29sIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
YmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihvYmplY3QpOworICAgIEFTU0VSVF9HQ19PQkpF
Q1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBpZiAoZ2V0U3RhdGljVmFsdWVT
bG90PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLCBCYXNlPihzdGF0ZSwgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBzbG90KSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b20oRXhlY1N0YXRl
KiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJB
TShzbG90QmFzZSk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgYXV0byogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHNsb3RCYXNlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVDdXN0
b20oKnN0YXRlKSk7Cit9CisKKworRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNs
b3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CisgICAgVU5V
U0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHNsb3RCYXNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUpKTsKK30KKwor
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRv
bU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5
cGUqPihiYXNlVmFsdWUpOwpAQCAtMTE5LDExICsxNzYsMzMgQEAgRW5jb2RlZEpTVmFsdWUganNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09i
amVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpOwogfQogCit2b2lkIHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICBK
U1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgVU5VU0VE
X1BBUkFNKGJhc2VPYmplY3QpOworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOworICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihiYXNl
T2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIGNhc3RlZFRoaXMtPnNldFRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUs
IHZhbHVlKTsKK30KKworCiBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUtPnRoaXNWYWx1ZSgpOworICAgIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHRoaXNWYWx1ZSk7CisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEN1c3RvbUZ1bmN0aW9uIik7CisgICAgQVNTRVJU
X0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
cjo6aW5mbygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RD
dXN0b21GdW5jdGlvbigqc3RhdGUpKTsKK30KKwogdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKaW5kZXgg
NDIwMjk0MmQyYjc5MjZlZmVjNmMwOGNhZTc4MWRlMDM3MWIyODgwZC4uOGMxZGY1ZGM0ZTg5OWZl
MjYyMTc3NDM1NGE4MWJlZjAyNTRjNmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmgKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6
SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
OjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJv
cGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0M6OkpTQ2VsbCopOwogCiAg
ICAgREVDTEFSRV9JTkZPOwpAQCAtNDksNiArNTAsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBK
U0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0
b3ImKTsKIAorCisgICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKKyAgICBKU0M6OkpTVmFsdWUgdGVz
dEF0dHJpYnV0ZUN1c3RvbShKU0M6OkV4ZWNTdGF0ZSYpIGNvbnN0OworICAgIEpTQzo6SlNWYWx1
ZSB0ZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUmKSBjb25zdDsKKyAgICB2b2lk
IHNldFRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7
CisKKyAgICAvLyBDdXN0b20gZnVuY3Rpb25zCisgICAgSlNDOjpKU1ZhbHVlIHRlc3RDdXN0b21G
dW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6CiAgICAgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCmluZGV4IGM1MmRjNzJkMDIyNmZl
MzFkMTEzYzRlODAzZWFiYWRjOTlkMmMzZGYuLmM5NGY4OTgxZjkwNThjNTAxOGVjZGFkNzQzYjdm
MWM3ZWY4ZDJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oCkBAIC0yOCw0ICsyOCwxMCBAQAogCiBXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2
XzUpCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ciA6IERPTU9iamVjdAorQHByb3BlcnR5IEJPT0wgdGVzdEF0dHJpYnV0ZTsKK0Bwcm9wZXJ0eSAo
cmVhZG9ubHkpIEJPT0wgdGVzdEF0dHJpYnV0ZUN1c3RvbTsKK0Bwcm9wZXJ0eSBCT09MIHRlc3RB
dHRyaWJ1dGVSV0N1c3RvbTsKKworLSAodm9pZCl0ZXN0RnVuY3Rpb247CistICh2b2lkKXRlc3RD
dXN0b21GdW5jdGlvbjsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5tbQppbmRleCA3YmI5YWIyMTE1ZWQ0ZDQxNzUxNTEwMDg0MmM3N2M2M2NhZTNmMjU5
Li5lMjczODIyZjZjYmQ5ZTE0Y2E4NTRiNDI4OGQ3YjViODNmMDRiOTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLm1tCkBAIC02MCw2ICs2MCw0OCBAQAog
ICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKKy0gKEJPT0wpdGVzdEF0dHJpYnV0ZQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+
dGVzdEF0dHJpYnV0ZSgpOworfQorCistICh2b2lkKXNldFRlc3RBdHRyaWJ1dGU6KEJPT0wpbmV3
VGVzdEF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICBJTVBMLT5zZXRUZXN0QXR0cmlidXRlKG5ld1Rlc3RBdHRyaWJ1dGUpOworfQorCist
IChCT09MKXRlc3RBdHRyaWJ1dGVDdXN0b20KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnRlc3RBdHRyaWJ1dGVDdXN0b20oKTsK
K30KKworLSAoQk9PTCl0ZXN0QXR0cmlidXRlUldDdXN0b20KK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnRlc3RBdHRyaWJ1dGVS
V0N1c3RvbSgpOworfQorCistICh2b2lkKXNldFRlc3RBdHRyaWJ1dGVSV0N1c3RvbTooQk9PTClu
ZXdUZXN0QXR0cmlidXRlUldDdXN0b20KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxs
U3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKG5ld1Rlc3RB
dHRyaWJ1dGVSV0N1c3RvbSk7Cit9CisKKy0gKHZvaWQpdGVzdEZ1bmN0aW9uCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnRlc3RGdW5jdGlv
bigpOworfQorCistICh2b2lkKXRlc3RDdXN0b21GdW5jdGlvbgoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT50ZXN0Q3VzdG9tRnVuY3Rpb24o
KTsKK30KKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGNvcmUo
RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yICp3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmlkbAppbmRleCA2YTFmMWRkZmExNTZiNDE4NjJkZTA2NjUwNzg4OWM4ODliYzBj
YTUwLi5mMGMxZjI1MzkwMDllNmQwYWY3ZGUzMjhiNjBkODFmMWQ0NGY3Y2M0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlkbApAQCAtMjksNSArMjksMTIgQEAKIFsKICAgICBKU0J1
aWx0aW5Db25zdHJ1Y3RvcgogXSBpbnRlcmZhY2UgVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIHsK
LX07CiAKKyAgICB2b2lkIHRlc3RGdW5jdGlvbigpOworICAgIGF0dHJpYnV0ZSBib29sZWFuIHRl
c3RBdHRyaWJ1dGU7CisKKyAgICBbIEN1c3RvbSBdIHZvaWQgdGVzdEN1c3RvbUZ1bmN0aW9uKCk7
CisgICAgWyBDdXN0b21HZXR0ZXIgXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB0ZXN0QXR0
cmlidXRlQ3VzdG9tOworICAgIFsgQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIgXSBhdHRyaWJ1
dGUgYm9vbGVhbiB0ZXN0QXR0cmlidXRlUldDdXN0b207CisKK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264010</attachid>
            <date>2015-10-25 07:49:46 -0700</date>
            <delta_ts>2015-11-02 02:10:37 -0800</delta_ts>
            <desc>Making all changes at once</desc>
            <filename>bug-150438-20151025154851.patch</filename>
            <type>text/plain</type>
            <size>54264</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmRjNzUyMWU5NzhiMzFh
NGU2MjlmNzEwN2RmMDQxZGU1YjhiYWVjNi4uMTdlNmZkYjRkMWQxNWYzNjczNzI5NzczMTIwMjll
YWJmY2Q4MDczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0xMC0yNSAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIElETCBm
dW5jdGlvbnMgYW5kIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIEpTQnVpbHRpbiBieSBkZWZhdWx0IGlm
IGludGVyZmFjZSBpcyBtYXJrZWQgYXMgSlNCdWlsdGluQ29uc3RydWN0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDQzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJpbmRpbmcgZ2VuZXJhdG9yIGlz
IG5vdyBkZWR1Y2luZyB0aGF0IGZ1bmN0aW9uL2F0dHJpYnV0ZSBpcyBKU0J1aWx0aW4gaWYgdGhl
IGludGVyZmFjZSBpcyBtYXJrZWQgYXMgSlNCdWlsdGluLgorICAgICAgICBPbmUgZXhjZXB0aW9u
IGlzIGN1c3RvbSBzZXR0ZXJzLCBnZXR0ZXJzIG9yIGZ1bmN0aW9ucyB3aGljaCByZW1haW4gQysr
IGhhbmRsZWQuCisgICAgICAgIFVwZGF0ZWQgc3RyZWFtcyBBUEkgSURMcyBhY2NvcmRpbmdseS4K
KworICAgICAgICBCaW5kaW5nIGdlbmVyYXRvciBrbm93cyB3aGV0aGVyIGNsYXNzIG5lZWRzIGEg
RE9NIGNsYXNzIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhlIGludGVyZmFjZSBpcyBtYXJrZWQgYXMg
SlNCdWlsdGluLgorICAgICAgICBCaW5kaW5nIGdlbmVyYXRvciBrbm93cyB0aGF0IGNsYXNzIHVz
ZXMgYSBKUyBidWlsdC1pbiBjb25zdHJ1Y3RvciBpZiBtYXJrZWQgYXMgSlNCdWlsdGluK0NvbnN0
cnVjdG9yLgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCBKU0J1aWx0SW4rQ3VzdG9tQ29uc3RydWN0
b3IgbWVhbnMgdGhhdCBhIERPTSBjbGFzcyBpcyBub3QgbmVlZGVkIGFuZCBjb25zdHJ1Y3RvciBp
cyBub3QgSlMgYnVpbHQtaW4uCisKKyAgICAgICAgQXBwbGllZCBKU0J1aWx0aW4rQ3VzdG9tQ29u
c3RydWN0b3IgdG8gUmVhZGFibGVTdHJlYW1SZWFkZXIgYW5kIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlci4KKyAgICAgICAgUmVtb3ZpbmcgUmVhZGFibGVTdHJlYW1SZWFkZXIgYW5kIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlciBjbGFzc2VzLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWVkZWQgIkRl
ZmF1bHQiIGtleXdvcmQgZm9yIGNhbmNlbCBmdW5jdGlvbiBpbiBXZWJJREwuCisKKyAgICAgICAg
QWRkZWQgYSBiaW5kaW5nIHRlc3QgY2FzZS4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9y
LgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3ku
aWRsOiBNYXJraW5nIGludGVyZmFjZSBhcyBKU0J1aWx0aW4gYW5kIENvbnN0cnVjdGFibGUuCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmlkbDogRGl0dG8u
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOiBSZW1v
dmVkLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
aWRsOiBNYXJraW5nIGludGVyZmFjZSBhcyBKU0J1aWx0aW4gYW5kIENvbnN0cnVjdGFibGUuCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6IFJlbW92ZWQu
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDogTWFy
a2luZyBpbnRlcmZhY2UgYXMgSlNCdWlsdGluIGFuZCBDb25zdHJ1Y3RhYmxlLgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGw6IERpdHRvLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVj
dG9yOjpjcmVhdGVKU09iamVjdCk6IFVwZGF0ZWQgYWNjb3JkaW5nIG5ldyBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZh
dGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRzSW1wbGVtZW50YXRp
b25DbGFzcyk6CisgICAgICAgIChHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKToKKyAgICAgICAgKEdl
dEF0dHJpYnV0ZVNldHRlck5hbWUpOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAgICAg
ICAgKEluc3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVy
KToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZSk6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFz
c05hbWUpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAoSXNDb25zdHJ1
Y3RhYmxlKToKKyAgICAgICAgKENvbXB1dGVGdW5jdGlvblNwZWNpYWwpOgorICAgICAgICAoSXNK
U0J1aWx0aW4pOgorICAgICAgICAoSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcik6CisgICAgICAgIChB
ZGRKU0J1aWx0aW5JbmNsdWRlc0lmTmVlZGVkKToKKyAgICAgICAgKEdldEpTQnVpbHRpbkZ1bmN0
aW9uTmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9t
U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEdldEpTQnVpbHRpblNjb3BlTmFtZSk6IERlbGV0
ZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9qc19i
dWlsdGluX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfY2xhc3NfaW5pdCk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl90ZXN0X2Z1bmN0aW9uKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0
dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rv
cl9zZXRfdGVzdF9hdHRyaWJ1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RB
dHRyaWJ1dGVSV0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6
dG9KU05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp0b1dyYXBwZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpn
ZXRQcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
d3JhcHBlck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLm1tOgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IgdGVzdEF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29u
c3RydWN0b3Igc2V0VGVzdEF0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yIHRlc3RBdHRyaWJ1dGVDdXN0b21dKToKKyAgICAgICAgKC1bRE9NVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yIHRlc3RBdHRyaWJ1dGVSV0N1c3RvbV0pOgorICAgICAgICAoLVtE
T01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3Igc2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tOl0pOgor
ICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgdGVzdEZ1bmN0aW9uXSk6Cisg
ICAgICAgICgtW0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciB0ZXN0Q3VzdG9tRnVuY3Rpb25d
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmlkbDoKKwogMjAxNS0xMC0yMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IEdUSysgYnVpbGQgYWZ0ZXIgcjE5
MTQyMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9CeXRlTGVu
Z3RoUXVldWluZ1N0cmF0ZWd5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9C
eXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmlkbAppbmRleCA4OGEyOWM1OTc5MDhkMmRhMWM0NjI5
MmRmZjM4MjFlMDNhYjJlOTAxLi4wYWJlYTAzZWM4MjkzOGRlNjMwODU1MGQwMWMyNjRlZTRlODhm
ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQnl0ZUxlbmd0
aFF1ZXVpbmdTdHJhdGVneS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaWRsCkBAIC0yOCw4ICsyOCw5IEBACiAgKi8KIAog
WwotICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yLAorICAgIEpTQnVpbHRpbiwKKyAgICBDb25zdHJ1
Y3RvciwKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKIF0gaW50ZXJmYWNlIEJ5dGVMZW5n
dGhRdWV1aW5nU3RyYXRlZ3kgewotICAgIFtKU0J1aWx0aW5dIGRvdWJsZSBzaXplKCk7CisgICAg
ZG91YmxlIHNpemUoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmlkbAppbmRleCAwMWViNzAzYjQxMWUyZjZiOWIw
ZWZlMmIzNDIwNjUyNzhmOGZmMjdlLi5hNDEyNjNmNmZjOTc3MTgwNmYxNDNlZDUwY2U3MDgzNDgy
N2UwNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRR
dWV1aW5nU3RyYXRlZ3kuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9D
b3VudFF1ZXVpbmdTdHJhdGVneS5pZGwKQEAgLTI4LDggKzI4LDkgQEAKICAqLwogCiBbCi0gICAg
SlNCdWlsdGluQ29uc3RydWN0b3IsCisgICAgSlNCdWlsdGluLAorICAgIENvbnN0cnVjdG9yLAog
ICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogXSBpbnRlcmZhY2UgQ291bnRRdWV1aW5nU3Ry
YXRlZ3kgewotICAgIFtKU0J1aWx0aW5dIGRvdWJsZSBzaXplKCk7CisgICAgZG91YmxlIHNpemUo
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmlkbAppbmRleCAwNDljYzlmM2I2ZjRmZGE2MjhiMjE4NjAwYzI2MzhkNjFhYzgwMDM4Li5l
N2Q1ZjZkZmQwNzFmMjVkODdiNGY4OGJjNzQzYjZiMTcwOTU5NzY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTI5LDEzICsy
OSwxNCBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCi0gICAgSlNCdWlsdGlu
Q29uc3RydWN0b3IKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBKU0J1aWx0aW4KIF0gaW50ZXJmYWNl
IFJlYWRhYmxlU3RyZWFtIHsKLSAgICBbSlNCdWlsdGluXSBQcm9taXNlIGNhbmNlbChbRGVmYXVs
dD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSByZWFzb24pOwotICAgIFtKU0J1aWx0aW5dIE9iamVj
dCBnZXRSZWFkZXIoKTsKLSAgICBbSlNCdWlsdGluXSBQcm9taXNlIHBpcGVUbyhhbnkgc3RyZWFt
cywgYW55IG9wdGlvbnMpOwotICAgIFtKU0J1aWx0aW5dIE9iamVjdCBwaXBlVGhyb3VnaChhbnkg
ZGVzdCwgYW55IG9wdGlvbnMpOwotICAgIFtKU0J1aWx0aW5dIE9iamVjdCB0ZWUoKTsKKyAgICBQ
cm9taXNlIGNhbmNlbChvcHRpb25hbCBhbnkgcmVhc29uKTsKKyAgICBPYmplY3QgZ2V0UmVhZGVy
KCk7CisgICAgUHJvbWlzZSBwaXBlVG8oYW55IHN0cmVhbXMsIGFueSBvcHRpb25zKTsKKyAgICBP
YmplY3QgcGlwZVRocm91Z2goYW55IGRlc3QsIGFueSBvcHRpb25zKTsKKyAgICBPYmplY3QgdGVl
KCk7CiAKLSAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb2NrZWQ7
CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gbG9ja2VkOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZjNDc4YzM5Nzc1MTlmMGZhZDQ4
MmMxYmY1OWIwNjlmMDMzZDg4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IENhbm9uIEluYy4KLSAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5M
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIHJlcXVpcmVkIHRvIGJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FO
T04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0gKiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSAqIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcl9oCi0jZGVmaW5lIFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcl9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMg
aXMgYSBkdW1teSBjbGFzcyBuZWVkZWQgYXMgd2UgY2Fubm90IHlldCB1c2UgSlNCdWlsdGluQ29u
c3RydWN0b3Igd2l0aCBOb0ludGVyZmFjZU9iamVjdC4KLS8vIEltcGxlbWVudGF0aW9uIG9mIFJl
YWRhYmxlU3RyZWFtQ29udHJvbGxlciBmdW5jdGlvbmFsaXR5IGlzIGRvbmUgaW4gUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyLmpzCi0vLyBGSVhNRTogRmluZCBhIHdheSB0byByZW1vdmUgdGhhdCBj
bGFzcy4KLWNsYXNzIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBmaW5hbCA6IHB1YmxpYyBSZWZD
b3VudGVkPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gewotcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigq
IG5ldyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpOyB9Ci1wcml2YXRlOgotICAgIFJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlcigpIHsgfQotfTsKLQotfQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJl
YWRhYmxlU3RyZWFtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwKaW5kZXggMjM3YjE1NGM5ZGQ2MzRm
YzIxM2NiMzU4MmI2OWRmMzlmNGFlYzAzMi4uNDQ5N2NmY2VjOWJjMzgzOGJlMGI0ZDg1MmI0OGYw
MjViOGI1ZTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwKQEAgLTMxLDYgKzMxLDcgQEAKICAg
ICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKICAgICBDdXN0b21Db25zdHJ1Y3RvciwKICAgICBJ
bXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAorICAgIEpTQnVpbHRpbiwKICAgICBOb0ludGVyZmFj
ZU9iamVjdAogXSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIHsKICAgICBbSlNC
dWlsdGluXSB2b2lkIGVucXVldWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBhbnkgY2h1
bmspOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkyMmM5MjcyM2U2
YTdmODQ1MGUwNzNjMzdlOTEyZjliYzUwMWYyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1SZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxp
YSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQs
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVxdWlyZWQg
dG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIENBTk9O
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAqIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotICog
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgUmVhZGFibGVTdHJlYW1SZWFkZXJfaAotI2RlZmluZSBSZWFk
YWJsZVN0cmVhbVJlYWRlcl9oCi0KLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoaXMgaXMg
YSBkdW1teSBjbGFzcyBuZWVkZWQgYXMgd2UgY2Fubm90IHlldCB1c2UgSlNCdWlsdGluQ29uc3Ry
dWN0b3Igd2l0aCBOb0ludGVyZmFjZU9iamVjdC4KLS8vIEltcGxlbWVudGF0aW9uIG9mIFJlYWRh
YmxlU3RyZWFtUmVhZGVyIGZ1bmN0aW9uYWxpdHkgaXMgZG9uZSBpbiBSZWFkYWJsZVN0cmVhbVJl
YWRlci5qcwotLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gcmVtb3ZlIHRoYXQgY2xhc3MuCi1jbGFz
cyBSZWFkYWJsZVN0cmVhbVJlYWRlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxl
U3RyZWFtUmVhZGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0cmVhbVJl
YWRlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYoKiBuZXcgUmVhZGFibGVTdHJlYW1SZWFk
ZXIpOyB9Ci1wcml2YXRlOgotICAgIFJlYWRhYmxlU3RyZWFtUmVhZGVyKCkgeyB9Ci19OwotCi19
Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gUmVhZGFibGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5pZGwKaW5k
ZXggM2ZlOGJlYzJjYjA4NTlkMzkwNDNlOWM1ZGJmMzIzMjMwNTYyNzVhOS4uZGYwYmUxMWRjNGI0
YTNmMTEzZDg4Y2NmY2U4NDQxNDJkNDIzZTk1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsCkBAIC0zMSw2ICsz
MSw3IEBACiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCiAgICAgQ3VzdG9tQ29uc3RydWN0
b3IsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKKyAgICBKU0J1aWx0aW4sCiAgICAg
Tm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHsKICAg
ICBbSlNCdWlsdGluXSBQcm9taXNlIHJlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsCmluZGV4IGQ4MjFhM2I0ZTU2MDk4YTdmZTg5
YzY0NjhmYzJkOWUxNGY4ZTE1Y2IuLjU0MTI4MmI0NDI1MTJiZDFkMjNhN2VlMTAzMmIzMGEwNWZm
ODU2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJs
ZVN0cmVhbS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmlkbApAQCAtMjksMTMgKzI5LDE0IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TVFJF
QU1TX0FQSSwKLSAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICAgIENvbnN0cnVjdG9yLAorICAg
IEpTQnVpbHRpbgogXSBpbnRlcmZhY2UgV3JpdGFibGVTdHJlYW0geyAKLSAgICBbSlNCdWlsdGlu
XSBQcm9taXNlIGFib3J0KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7
Ci0gICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBjbG9zZSgpOwotICAgIFtKU0J1aWx0aW5dIFByb21p
c2Ugd3JpdGUoYW55IGNodW5rKTsKKyAgICBQcm9taXNlIGFib3J0KG9wdGlvbmFsIGFueSByZWFz
b24pOworICAgIFByb21pc2UgY2xvc2UoKTsKKyAgICBQcm9taXNlIHdyaXRlKGFueSBjaHVuayk7
CiAKLSAgICBbSlNCdWlsdGluXSByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZSBjbG9zZWQ7Ci0g
ICAgW0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgcmVhZHk7Ci0gICAgW0pT
QnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdGF0ZTsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgUHJvbWlzZSBjbG9zZWQ7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21p
c2UgcmVhZHk7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBzdGF0ZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJp
dmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggMDQxMDkzOGQ1MTU2OWJmZTM1
YmUzMmQwNDA3ZTkwYjc5OWFkNjNhMi4uZTIwNTFlNjg1MzFjY2VmMzBlNmFjODFlMjM2MmQwZmU0
M2NjZjMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtNjUsMTIg
KzY1LDEyIEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6CiAKIHRlbXBsYXRlPD4gSlNPYmplY3Qq
IEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVK
U09iamVjdCgpCiB7Ci0gICAgcmV0dXJuIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZShn
ZXRET01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbVJlYWRlcj4oZ2xvYmFsT2JqZWN0KCktPnZt
KCksICpnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBSZWFkYWJsZVN0cmVhbVJlYWRl
cjo6Y3JlYXRlKCkpOworICAgIHJldHVybiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUo
Z2V0RE9NU3RydWN0dXJlPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KGdsb2JhbE9iamVjdCgpLT52
bSgpLCAqZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSk7CiB9CiAKIHRlbXBsYXRlPD4g
SlNPYmplY3QqIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlSlNPYmplY3QoKQogewotICAgIHJldHVybiBKU1JlYWRhYmxlU3RyZWFtQ29u
dHJvbGxlcjo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxl
cj4oZ2xvYmFsT2JqZWN0KCktPnZtKCksICpnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgp
LCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSgpKTsKKyAgICByZXR1cm4gSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXI+KGdsb2JhbE9iamVjdCgpLT52bSgpLCAqZ2xvYmFsT2JqZWN0KCkpLCBn
bG9iYWxPYmplY3QoKSk7CiB9CiAKIHRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZUV4
ZWN1dGFibGUoSlNDOjpWTSYgdm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDIxNmJjOTljODA1MWM2ZmM2YzMwYTRiOTA1
ZTYyMGZkNzVkYjFkNmQuLjE3NzAxYzBjODgwMzlhMTcwMDI1ODRkYjJkNWVjOWJhMzZjZWI4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCkBAIC01MTUsNyArNTE1LDcgQEAgc3ViIE5lZWRzSW1wbGVtZW50YXRpb25DbGFzcwog
ewogICAgIG15ICgkaW50ZXJmYWNlKSA9IEBfOwogCi0gICAgcmV0dXJuIDAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25zdHJ1Y3RvciJ9KTsKKyAgICBy
ZXR1cm4gMCBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9
KTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtNTY3LDExICs1NjcsMTEgQEAgc3ViIFNob3VsZEdl
bmVyYXRlVG9KU0ltcGxlbWVudGF0aW9uCiAKIHN1YiBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lCiB7
Ci0gICAgbXkgKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOwor
ICAgIG15ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSkgPSBAXzsKICAgICBpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgcmV0dXJu
ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7
CiAgICAgfQotICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJKU0J1aWx0aW4ifSkgeworICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKSkgewogICAgICAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFz
c05hbWUsICRhdHRyaWJ1dGUpOwogICAgIH0KICAgICByZXR1cm4gImpzIiAuICRpbnRlcmZhY2VO
YW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lKSAuICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8gPyAi
Q29uc3RydWN0b3IiIDogIiIpOwpAQCAtNTc5LDExICs1NzksMTEgQEAgc3ViIEdldEF0dHJpYnV0
ZUdldHRlck5hbWUKIAogc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIHsKLSAgICBteSAoJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87CisgICAgbXkgKCRpbnRl
cmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSA9IEBfOwogICAg
IGlmICgkYXR0cmlidXRlLT5pc1N0YXRpYykgewogICAgICAgICByZXR1cm4gInNldCIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29k
ZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwogICAg
IH0KLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
SlNCdWlsdGluIn0pIHsKKyAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0
ZSkpIHsKICAgICAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
R2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpKTsKICAgICB9
CiAgICAgcmV0dXJuICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5X
S191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKQEAg
LTU5MSw5ICs1OTEsOSBAQCBzdWIgR2V0QXR0cmlidXRlU2V0dGVyTmFtZQogCiBzdWIgR2V0RnVu
Y3Rpb25OYW1lCiB7Ci0gICAgbXkgKCRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKKyAgICBt
eSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9IEBfOwogCi0gICAgaWYgKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn0pIHsK
KyAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewogICAgICAgICBy
ZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAg
ICAgfQogCkBAIC04MjMsNyArODIzLDcgQEAgc3ViIEluc3RhbmNlTmVlZHNWaXNpdENoaWxkcmVu
CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFdmVudFRhcmdl
dCJ9CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPm5hbWUgZXEgIkV2ZW50VGFyZ2V0IgogICAgICAg
ICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVwb3J0RXh0cmFNZW1vcnlD
b3N0In0KLSAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVp
bHRpbkNvbnN0cnVjdG9yIn07CisgICAgICAgIHx8IElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGlu
dGVyZmFjZSkKIH0KIAogc3ViIEdldEltcGxDbGFzc05hbWUKQEAgLTEyODgsNyArMTI4OCw3IEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNp
Z25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAk
ZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7Cisg
ICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6
OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTEzMDQsMTAgKzEz
MDQsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25h
bFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAg
ICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0
cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNv
ZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CiAgICAgICAgICAgICBp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVy
ID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRl
ck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ2b2lkICR7c2V0dGVyfShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTM4
NiwxOCArMTM4NiwxOCBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlCiAKICAgICAg
ICAgcHVzaChAc3BlY2lhbHMsICJEb250RW51bSIpIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb3RFbnVtZXJhYmxlIn0gfHwgJGlzX2dsb2JhbF9jb25z
dHJ1Y3Rvcik7CiAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiUmVhZE9ubHkiKSBpZiBJc1JlYWRv
bmx5KCRhdHRyaWJ1dGUpOwotICAgICAgICBwdXNoKEBzcGVjaWFscywgIkN1c3RvbUFjY2Vzc29y
IikgdW5sZXNzICRpc19nbG9iYWxfY29uc3RydWN0b3Igb3IgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07Ci0gICAgICAgIHB1c2goQHNwZWNp
YWxzLCAiQWNjZXNzb3IgfCBCdWlsdGluIikgaWYgICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICBwdXNoKEBzcGVjaWFscywg
IkN1c3RvbUFjY2Vzc29yIikgdW5sZXNzICRpc19nbG9iYWxfY29uc3RydWN0b3Igb3IgSXNKU0J1
aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIHB1c2goQHNwZWNpYWxzLCAi
QWNjZXNzb3IgfCBCdWlsdGluIikgaWYgIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogICAgICAgICBteSAkc3BlY2lhbCA9IChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIs
IEBzcGVjaWFscykgOiAiMCI7CiAgICAgICAgIHB1c2goQCRoYXNoU3BlY2lhbHMsICRzcGVjaWFs
KTsKIAotICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJm
YWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIG15ICRnZXR0ZXIgPSBH
ZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwog
CiAgICAgICAgIGlmIChJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICBwdXNo
KEAkaGFzaFZhbHVlMiwgIjAiKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG15ICRz
ZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0
ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAgfQog
CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntv
dmVybG9hZEluZGV4fSA+IDE7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRm9yd2FyZERlY2xhcmVJbkhlYWRlciJ9OwogICAg
ICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbUJpbmRpbmcifTsKLSAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKyAgICAgICAgICAgIG5l
eHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKIAogICAgICAgICAgICAg
bXkgJG5lZWRzQXBwbGVDb3B5cmlnaHQgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkFwcGxlQ29weXJpZ2h0In07CiAgICAgICAgICAgICBpZiAoJG5lZWRzQXBw
bGVDb3B5cmlnaHQpIHsKQEAgLTE4MTcsNyArMTgxNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
R2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAk
ZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRm
dW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtMTgzMSwxNCArMTgzMSwxNCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIi8vIEF0dHJpYnV0
ZXNcblxuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJGb3J3YXJkRGVjbGFyZUluSGVhZGVyIn07Ci0gICAgICAg
ICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTQnVpbHRpbiJ9OworICAgICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNl
LCAkYXR0cmlidXRlKTsKIAogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZ2V0dGVy
ID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFt
ZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0
ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRh
dHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNl
dHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAg
ICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInZvaWQgJHtzZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpO1xu
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRp
ZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMTkyOCwxMyArMTkyOCwxMyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgbXkgJHNwZWNpYWwgPSAoQHNwZWNp
YWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogICAgICAgICAgICAgcHVz
aChAaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7CiAKLSAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBH
ZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKKyAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAg
ICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRnZXR0ZXIpOwogCiAgICAgICAgICAgICBpZiAoSXNS
ZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIs
ICIwIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIg
PSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKKyAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVy
TmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgJHNldHRlcik7CiAgICAgICAgICAg
ICB9CiAKQEAgLTE5NTIsNyArMTk1Miw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAg
ICAgICAgcHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
TmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAg
ICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9u
TmFtZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVu
Z3RoKCRmdW5jdGlvbik7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwog
ICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICRmdW5jdGlvbk5h
bWUgPSBHZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgbXkg
JGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
ZnVuY3Rpb24pOwogICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAog
ICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24p
OwpAQCAtMjEwMCw3ICsyMTAwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWTUNsaWVudERhdGEmIGNs
aWVudERhdGEgPSAqc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKTtc
biIpIGlmICRmaXJzdFByaXZhdGVGdW5jdGlvbjsKICAgICAgICAgICAgICAgICAkZmlyc3RQcml2
YXRlRnVuY3Rpb24gPSAwOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFt
ZSwgJGZ1bmN0aW9uKSAuICIpLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5i
dWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiUHJpdmF0ZU5h
bWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCks
ICIgLiBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSAu
ICIpLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CkBAIC0yMjYyLDE0ICsyMjYyLDE0IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgJG51bUF0dHJpYnV0ZXMgPSAkbnVtQXR0
cmlidXRlcyArIDEgaWYgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpOwogICAg
IGlmICgkbnVtQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRl
IChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAg
ICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAog
ICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAg
ICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAg
ICAgICMgTnVsbGFibGUgd3JhcHBlciB0eXBlcyBkbyBub3QgbmVlZCBhbnkgc3BlY2lhbCBoYW5k
bGluZyBhcyB0aGUgaW1wbGVtZW50YXRpb24gY2FuIHJldHVybiBhIG51bGwgcG9pbnRlci4KICAg
ICAgICAgICAgIG15ICRpc051bGxhYmxlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5pc051bGxh
YmxlICYmICEkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7CiAgICAgICAgICAg
ICAkY29kZUdlbmVyYXRvci0+QXNzZXJ0Tm90U2VxdWVuY2VUeXBlKCR0eXBlKTsKLSAgICAgICAg
ICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZh
Y2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRnZXRGdW5j
dGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NO
YW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVy
RnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRuYW1lKTsK
ICAgICAgICAgICAgIG15ICRnZXR0ZXJFeGNlcHRpb25zID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2V0dGVyUmFpc2VzRXhjZXB0aW9uIn07CiAKQEAgLTI2
MDgsMTEgKzI2MDgsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGZvcmVh
Y2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBp
ZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAg
ICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAg
ICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKICAgICAg
ICAgICAgIG15ICR0eXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOwotICAgICAgICAg
ICAgbXkgJHB1dEZ1bmN0aW9uTmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFj
ZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJHB1dEZ1bmN0
aW9uTmFtZSA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05h
bWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGltcGxTZXR0ZXJG
dW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFtZSk7CiAgICAgICAg
ICAgICBteSAkc2V0dGVyUmFpc2VzRXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiU2V0dGVyUmFpc2VzRXhjZXB0aW9uIn07CiAKQEAgLTI4NDQs
NyArMjg0NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRpbkFw
cGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVy
ZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUJpbmRpbmcifTsKLSAgICAgICAgICAg
IG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1
aWx0aW4ifTsKKyAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIG15ICRuZWVkc0FwcGxlQ29weXJpZ2h0ID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJBcHBsZUNvcHlyaWdodCJ9OwogICAg
ICAgICAgICAgaWYgKCRuZWVkc0FwcGxlQ29weXJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYg
KCEkaW5BcHBsZUNvcHlyaWdodCkgewpAQCAtMjg2NCw3ICsyODY0LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5JbXBsKCRm
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSB1bmxlc3MgJGlzQ3VzdG9tIG9yIElzUmV0dXJuaW5n
UHJvbWlzZSgkZnVuY3Rpb24pOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0
RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkZnVu
Y3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5j
dGlvbik7CiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKICAgICAgICAgICAgIGlm
ICgkY29uZGl0aW9uYWwpIHsKQEAgLTQ1ODQsOSArNDU4NCw5IEBAIHN1YiBHZW5lcmF0ZVByb3Rv
dHlwZURlY2xhcmF0aW9uCiBzdWIgR2V0Q29uc3RydWN0b3JUZW1wbGF0ZUNsYXNzTmFtZQogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gIkpTQnVpbHRpbkNvbnN0cnVj
dG9yIiBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbkNvbnN0
cnVjdG9yIn0pOwogICAgIHJldHVybiAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUi
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9
KTsKICAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIiB1bmxlc3Mg
SXNDb25zdHJ1Y3RhYmxlKCRpbnRlcmZhY2UpOworICAgIHJldHVybiAiSlNCdWlsdGluQ29uc3Ry
dWN0b3IiIGlmIElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAgICAgcmV0dXJu
ICJKU0RPTUNvbnN0cnVjdG9yIjsKIH0KIApAQCAtNDY5MCw3ICs0NjkwLDcgQEAgc3ViIEdlbmVy
YXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgbXkgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yID0gc2hpZnQ7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25zdHJ1Y3RvciJ9
KTsKKyAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKTsKIAog
ICAgIG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
ciA/ICIke2NsYXNzTmFtZX1OYW1lZENvbnN0cnVjdG9yIiA6ICIke2NsYXNzTmFtZX1Db25zdHJ1
Y3RvciI7CiAKQEAgLTQ5NDAsNyArNDk0MCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJcbiIpOwogICAgIH0KIAot
ICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluQ29uc3Ry
dWN0b3IifSkgeworICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInRlbXBsYXRlPD4gRnVuY3Rpb25FeGVjdXRh
YmxlKiAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6aW5pdGlhbGl6ZUV4ZWN1dGFibGUoVk0mIHZt
KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIntcbiIpOwogICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuICIgLiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVG
cm9tU3RyaW5nKCRpbnRlcmZhY2VOYW1lLCAiaW5pdGlhbGl6ZSIgLiAkaW50ZXJmYWNlTmFtZSkg
LiAiKHZtKTtcbiIpOwpAQCAtNDk5NCw3ICs0OTk0LDcgQEAgc3ViIElzQ29uc3RydWN0YWJsZQog
ewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAgIHJldHVybiBIYXNDdXN0b21Db25z
dHJ1Y3RvcigkaW50ZXJmYWNlKSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Q29uc3RydWN0b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRD
b25zdHJ1Y3RvciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1
Y3RvclRlbXBsYXRlIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVp
bHRpbkNvbnN0cnVjdG9yIn07CisgICAgcmV0dXJuIEhhc0N1c3RvbUNvbnN0cnVjdG9yKCRpbnRl
cmZhY2UpIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9
IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOYW1lZENvbnN0cnVjdG9yIn0g
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yVGVtcGxhdGUi
fTsKIH0KIAogc3ViIEhlYWRlck5lZWRzUHJvdG90eXBlRGVjbGFyYXRpb24KQEAgLTUwMTMsNyAr
NTAxMyw3IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAgcHVzaChAc3BlY2lhbHMs
ICJEb250RGVsZXRlIikgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJVbmZvcmdlYWJsZSJ9CiAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlVuZm9yZ2VhYmxlIn07CiAgICAgcHVzaChAc3BlY2lhbHMsICJEb250RW51bSIpIGlm
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm90RW51bWVyYWJs
ZSJ9OwotICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkpTQnVpbHRpbiJ9KSB7CisgICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlv
bikpIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkJ1aWx0aW4iKTsKICAgICB9CiAg
ICAgZWxzZSB7CkBAIC01MDIyLDYgKzUwMjIsMjkgQEAgc3ViIENvbXB1dGVGdW5jdGlvblNwZWNp
YWwKICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6
ICIwIjsKIH0KIAorc3ViIElzSlNCdWlsdGluCit7CisgICAgbXkgKCRpbnRlcmZhY2UsICRvYmpl
Y3QpID0gQF87CisKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b20ifTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21HZXR0ZXIifTsKKyAgICByZXR1cm4gMCBp
ZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIi
fTsKKworICAgIHJldHVybiAxIGlmICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQnVpbHRpbiJ9OworICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKworICAgIHJldHVybiAwOworfQorCitzdWIgSXNK
U0J1aWx0aW5Db25zdHJ1Y3RvcgoreworICAgIG15ICgkaW50ZXJmYWNlKSA9IEBfOworCisgICAg
cmV0dXJuIDAgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUNvbnN0
cnVjdG9yIn07CisgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkpTQnVpbHRpbiJ9OworICAgIHJldHVybiAwOworfQorCiBzdWIgR2V0SlNCdWlsdGluRnVu
Y3Rpb25OYW1lCiB7CiAgICAgbXkgKCRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKQEAgLTUw
NDksMTcgKzUwNzIsMTcgQEAgc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVzSWZOZWVkZWQoKQogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluQ29uc3RydWN0b3IifSkgeworICAgIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn0pIHsKICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoJGludGVyZmFjZS0+bmFtZSAuICJCdWlsdGlucy5oIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5m
dW5jdGlvbnN9KSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3Bl
TmFtZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pIC4gIkJ1aWx0aW5zLmgiLCAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIGlmICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkZnVu
Y3Rpb24pIC4gIkJ1aWx0aW5zLmgiLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5j
dGlvbik7CiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2Ut
PmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNj
b3BlTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSAuICJCdWlsdGlucy5oIiwgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgaWYgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07Cisg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNl
LCAkYXR0cmlidXRlKSAuICJCdWlsdGlucy5oIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAppbmRleCBkYmM2YjJkMTYxMzk5
MWM2ZWYwODgzZWZjNGM2NjY1ODg2YzAzN2RiLi5kMDc0ZjU0YzNiNWRlY2UwMWRmMTdiMTBiMTMx
YmJlNTBiNmY1MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKQEAgLTY3LDYgKzY3LDExIEBAIFdlYktpdERPTVRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogd3JhcFRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcihXZWJD
b3JlOjpUZXN0SlNCCiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3RvciwgV0VCS0lUX0RP
TV9UWVBFX09CSkVDVCkKIAorZW51bSB7CisgICAgUFJPUF8wLAorICAgIFBST1BfVEVTVF9BVFRS
SUJVVEUsCit9OworCiBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25z
dHJ1Y3Rvcl9maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0RE9NVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9ET01fVEVTVF9KU19CVUlM
VElOX0NPTlNUUlVDVE9SX0dFVF9QUklWQVRFKG9iamVjdCk7CkBAIC03Nyw2ICs4MiwzNCBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X2pz
X2J1aWx0aW5fY29uc3RydWN0b3JfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0K
IAorc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jfc2V0
X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVl
KiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViS2l0RE9NVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yKiBzZWxmID0gV0VCS0lUX0RPTV9URVNUX0pTX0JVSUxUSU5fQ09OU1RSVUNU
T1Iob2JqZWN0KTsKKworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGNhc2UgUFJPUF9U
RVNUX0FUVFJJQlVURToKKyAgICAgICAgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3Ry
dWN0b3Jfc2V0X3Rlc3RfYXR0cmlidXRlKHNlbGYsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgR19PQkpFQ1RfV0FSTl9J
TlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcGVydHlJZCwgcHNwZWMpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5
SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdERPTVRl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogc2VsZiA9IFdFQktJVF9ET01fVEVTVF9KU19CVUlMVElO
X0NPTlNUUlVDVE9SKG9iamVjdCk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBj
YXNlIFBST1BfVEVTVF9BVFRSSUJVVEU6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFs
dWUsIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0dHJp
YnV0ZShzZWxmKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JK
RUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0aWMgR09iamVjdCogd2Via2l0X2RvbV90
ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfY29uc3RydWN0b3IoR1R5cGUgdHlwZSwgZ3VpbnQg
Y29uc3RydWN0UHJvcGVydGllc0NvdW50LCBHT2JqZWN0Q29uc3RydWN0UGFyYW0qIGNvbnN0cnVj
dFByb3BlcnRpZXMpCiB7CiAgICAgR09iamVjdCogb2JqZWN0ID0gR19PQkpFQ1RfQ0xBU1Mod2Vi
a2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfcGFyZW50X2NsYXNzKS0+Y29uc3Ry
dWN0b3IodHlwZSwgY29uc3RydWN0UHJvcGVydGllc0NvdW50LCBjb25zdHJ1Y3RQcm9wZXJ0aWVz
KTsKQEAgLTk0LDYgKzEyNywxOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVp
bHRpbl9jb25zdHJ1Y3Rvcl9jbGFzc19pbml0KFdlYktpdERPTVRlc3RKU0J1aQogICAgIGdfdHlw
ZV9jbGFzc19hZGRfcHJpdmF0ZShnb2JqZWN0Q2xhc3MsIHNpemVvZihXZWJLaXRET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JQcml2YXRlKSk7CiAgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3Rv
ciA9IHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2NvbnN0cnVjdG9yOwog
ICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9j
b25zdHJ1Y3Rvcl9maW5hbGl6ZTsKKyAgICBnb2JqZWN0Q2xhc3MtPnNldF9wcm9wZXJ0eSA9IHdl
YmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eTsKKyAgICBn
b2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9IHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2Nv
bnN0cnVjdG9yX2dldF9wcm9wZXJ0eTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoCisgICAgICAgIGdvYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9URVNUX0FUVFJJQlVU
RSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oCisgICAgICAgICAgICAidGVzdC1hdHRy
aWJ1dGUiLAorICAgICAgICAgICAgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjp0ZXN0LWF0dHJp
YnV0ZSIsCisgICAgICAgICAgICAicmVhZC13cml0ZSBnYm9vbGVhbiBUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3I6dGVzdC1hdHRyaWJ1dGUiLAorICAgICAgICAgICAgRkFMU0UsCisgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2Rv
bV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfaW5pdChXZWJLaXRET01UZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IqIHJlcXVlc3QpCkBAIC0xMDIsMyArMTQ4LDI4IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2luaXQoV2ViS2l0RE9NVGVzdEpT
QnVpbHRpbkNvCiAgICAgbmV3IChwcml2KSBXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JQcml2YXRlKCk7CiB9CiAKK3ZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3Ry
dWN0b3JfdGVzdF9mdW5jdGlvbihXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNl
bGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1Io
c2VsZikpOworICAgIFdlYkNvcmU6OlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogaXRlbSA9IFdl
YktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVtLT50ZXN0RnVuY3Rpb24oKTsKK30KKworZ2Jvb2xl
YW4gd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZ2V0X3Rlc3RfYXR0cmli
dXRlKFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogc2VsZikKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0RPTV9JU19URVNUX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1Ioc2VsZiksIEZBTFNF
KTsKKyAgICBXZWJDb3JlOjpUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGl0ZW0gPSBXZWJLaXQ6
OmNvcmUoc2VsZik7CisgICAgZ2Jvb2xlYW4gcmVzdWx0ID0gaXRlbS0+dGVzdEF0dHJpYnV0ZSgp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0
aW5fY29uc3RydWN0b3Jfc2V0X3Rlc3RfYXR0cmlidXRlKFdlYktpdERPTVRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvciogc2VsZiwgZ2Jvb2xlYW4gdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9J
U19URVNUX0pTX0JVSUxUSU5fQ09OU1RSVUNUT1Ioc2VsZikpOworICAgIFdlYkNvcmU6OlRlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBpdGVt
LT5zZXRUZXN0QXR0cmlidXRlKHZhbHVlKTsKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVj
dC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRleCAzYTBiM2YzN2U4ZDJh
ZGI3YTllYzFiM2RkYWMxMDJkZTFhNWQ1YWZiLi4xZDUwYzg3MGYxNDk5YWY1MzM2YzhiNmQzYzhh
NjE4M2E3MGIzZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuaApAQCAtNDcsNiArNDcsMzYgQEAgc3RydWN0IF9XZWJLaXRE
T01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDbGFzcyB7CiBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJr
aXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfdHlwZSh2b2lkKTsKIAorLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl90ZXN0X2Z1bmN0aW9u
OgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICoKKyAq
IFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rl
c3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl90ZXN0X2Z1bmN0aW9uKFdlYktpdERPTVRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvciogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2pzX2J1
aWx0aW5fY29uc3RydWN0b3JfZ2V0X3Rlc3RfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICoKKyAqIFJldHVybnM6IEEgI2dib29sZWFu
CisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJIGdib29sZWFuCit3
ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfdGVzdF9hdHRyaWJ1dGUo
V2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBzZWxmKTsKKworLyoqCisgKiB3ZWJr
aXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9zZXRfdGVzdF9hdHRyaWJ1dGU6Cisg
KiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yCisgKiBAdmFsdWU6
IEEgI2dib29sZWFuCisgKgorICogU3RhYmlsaXR5OiBVbnN0YWJsZQorKiovCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF90ZXN0X2F0
dHJpYnV0ZShXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNlbGYsIGdib29sZWFu
IHZhbHVlKTsKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIFdFQktJVF9ET01fVVNFX1VOU1RB
QkxFX0FQSSAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5k
ZXggMjU3NmQ4NDMwOGU2NzlkZjY1NTA0M2FjMWM4NzIwNWVmMzMwZTczNi4uYmY3Y2MzMjcyMjAz
MTkwNDM0ZWNlOGY1ZTFhNTZjN2QzMWM4YjVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwCkBAIC0yNCwxNCArMjQsMjIgQEAKICNpbmNsdWRlICJKU0RPTUJp
bmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKy8vIEZ1bmN0aW9ucworCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRl
c3RDdXN0b21GdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworCiAvLyBBdHRyaWJ1dGVzCiAKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRl
Q3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwordm9p
ZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIGNsYXNzIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25GaW5hbE9iamVjdCB7CkBA
IC02MSw2ICs2OSwyMyBAQCBwcml2YXRlOgogCiB0eXBlZGVmIEpTQnVpbHRpbkNvbnN0cnVjdG9y
PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPiBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNv
bnN0cnVjdG9yOwogCisvKiBIYXNoIHRhYmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMg
Y29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JU
YWJsZUluZGV4WzRdID0geworICAgIHsgMCwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsg
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorfTsKKworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxl
VmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7
ICJ0ZXN0QXR0cmlidXRlQ3VzdG9tIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgQ3VzdG9tQWNj
ZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3Vz
dG9tKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVu
Yz4oMCkgfSB9LAorICAgIHsgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIsIERvbnREZWxldGUgfCBD
dXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRy
aWJ1dGVSV0N1c3RvbSksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQ
dXRWYWx1ZUZ1bmM+KHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJX
Q3VzdG9tKSB9IH0sCit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yVGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yVGFibGVWYWx1ZXMsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGVJbmRleCB9Owog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCks
IERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKQEAgLTgwLDYgKzEwNSw5IEBAIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OnNfaW5mbyA9IHsgIlRlCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KIHsKICAgICB7ICJj
b25zdHJ1Y3RvciIsIERvbnRFbnVtIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JDb25zdHJ1Y3RvciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVy
dHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwKKyAgICB7ICJ0ZXN0QXR0cmlidXRlIiwgQWNj
ZXNzb3IgfCBCdWlsdGluLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8QnVp
bHRpbkdlbmVyYXRvcj4odGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNvZGVH
ZW5lcmF0b3IpLCAoaW50cHRyX3QpIChzZXRUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0
cmlidXRlQ29kZUdlbmVyYXRvcikgfSB9LAorICAgIHsgInRlc3RGdW5jdGlvbiIsIEpTQzo6QnVp
bHRpbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5lcmF0
b3I+KHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RGdW5jdGlvbkNvZGVHZW5lcmF0b3IpLCAo
aW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidGVzdEN1c3RvbUZ1bmN0aW9uIiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1
bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKSB9OwpAQCAtOTAsNyArMTE4
LDcgQEAgdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JQcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCi1jb25zdCBD
bGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIs
ICZCYXNlOjpzX2luZm8sICZKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRhYmxlLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKSB9OwogCiBKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBKU0RPTU9i
amVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkgeyB9CkBAIC0xMTEsNiArMTM5LDM1IEBAIHZv
aWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwp
CiAgICAgdGhpc09iamVjdC0+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6On5KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3RvcigpOwogfQogCitib29sIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBzdGF0ZSwg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihvYmpl
Y3QpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsK
KyAgICBpZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLCBC
YXNlPihzdGF0ZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUYWJsZSwgdGhpc09iamVjdCwg
cHJvcGVydHlOYW1lLCBzbG90KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RB
dHRyaWJ1dGVDdXN0b20oRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIFVOVVNFRF9QQVJBTShzbG90QmFzZSk7CisgICAgVU5VU0VEX1BBUkFNKHRo
aXNWYWx1ZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcio+KHNsb3RCYXNlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3Rl
ZFRoaXMtPnRlc3RBdHRyaWJ1dGVDdXN0b20oKnN0YXRlKSk7Cit9CisKKworRW5jb2RlZEpTVmFs
dWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9Q
QVJBTShzbG90QmFzZSk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgYXV0byog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHNsb3RCYXNl
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RBdHRyaWJ1dGVS
V0N1c3RvbSgqc3RhdGUpKTsKK30KKworCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFs
dWUsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqPihiYXNlVmFsdWUpOwpAQCAtMTE5LDExICsxNzYs
MzMgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwg
ZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQogCit2b2lkIHNldEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CisgICAgVU5VU0VEX1BBUkFNKGJhc2VPYmplY3QpOworICAgIFVOVVNFRF9Q
QVJBTSh0aGlzVmFsdWUpOworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqPihiYXNlT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1Zh
bHVlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGNhc3RlZFRoaXMtPnNldFRlc3RB
dHRyaWJ1dGVSV0N1c3RvbSgqc3RhdGUsIHZhbHVlKTsKK30KKworCiBKU1ZhbHVlIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5j
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gc3RhdGUt
PnRoaXNWYWx1ZSgpOworICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHRoaXNWYWx1ZSk7
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAidGVzdEN1c3Rv
bUZ1bmN0aW9uIik7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCBK
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6aW5mbygpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RDdXN0b21GdW5jdGlvbigqc3RhdGUpKTsKK30KKwogdm9p
ZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihjZWxsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggNDIwMjk0MmQyYjc5MjZlZmVjNmMwOGNhZTc4MWRlMDM3
MWIyODgwZC4uOGMxZGY1ZGM0ZTg5OWZlMjYyMTc3NDM1NGE4MWJlZjAyNTRjNmJhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKQEAgLTM3LDYgKzM3LDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OlZN
JiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBnZXRQ
cm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpQcm9wZXJ0eU5hbWUsIEpTQzo6UHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0M6OkpTQ2VsbCopOwogCiAgICAgREVDTEFSRV9JTkZPOwpAQCAtNDksNiArNTAsMTYg
QEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpW
TSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVu
KEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAorCisgICAgLy8gQ3VzdG9tIGF0dHJpYnV0
ZXMKKyAgICBKU0M6OkpTVmFsdWUgdGVzdEF0dHJpYnV0ZUN1c3RvbShKU0M6OkV4ZWNTdGF0ZSYp
IGNvbnN0OworICAgIEpTQzo6SlNWYWx1ZSB0ZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVj
U3RhdGUmKSBjb25zdDsKKyAgICB2b2lkIHNldFRlc3RBdHRyaWJ1dGVSV0N1c3RvbShKU0M6OkV4
ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKKyAgICAvLyBDdXN0b20gZnVuY3Rpb25zCisgICAg
SlNDOjpKU1ZhbHVlIHRlc3RDdXN0b21GdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOworcHVibGlj
OgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6
CiAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oCmluZGV4IGM1MmRjNzJkMDIyNmZlMzFkMTEzYzRlODAzZWFiYWRjOTlkMmMzZGYuLmM5NGY4
OTgxZjkwNThjNTAxOGVjZGFkNzQzYjdmMWM3ZWY4ZDJhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC0yOCw0ICsyOCwxMCBAQAogCiBXRUJLSVRf
Q0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUpCiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERP
TVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciA6IERPTU9iamVjdAorQHByb3BlcnR5IEJPT0wgdGVz
dEF0dHJpYnV0ZTsKK0Bwcm9wZXJ0eSAocmVhZG9ubHkpIEJPT0wgdGVzdEF0dHJpYnV0ZUN1c3Rv
bTsKK0Bwcm9wZXJ0eSBCT09MIHRlc3RBdHRyaWJ1dGVSV0N1c3RvbTsKKworLSAodm9pZCl0ZXN0
RnVuY3Rpb247CistICh2b2lkKXRlc3RDdXN0b21GdW5jdGlvbjsKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvci5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5tbQppbmRleCA3YmI5YWIyMTE1ZWQ0ZDQx
NzUxNTEwMDg0MmM3N2M2M2NhZTNmMjU5Li5lMjczODIyZjZjYmQ5ZTE0Y2E4NTRiNDI4OGQ3YjVi
ODNmMDRiOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Lm1tCkBAIC02MCw2ICs2MCw0OCBAQAogICAgIFtzdXBlciBmaW5hbGl6ZV07CiB9CiAKKy0gKEJP
T0wpdGVzdEF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4gSU1QTC0+dGVzdEF0dHJpYnV0ZSgpOworfQorCistICh2b2lkKXNl
dFRlc3RBdHRyaWJ1dGU6KEJPT0wpbmV3VGVzdEF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRUZXN0QXR0cmlidXRlKG5l
d1Rlc3RBdHRyaWJ1dGUpOworfQorCistIChCT09MKXRlc3RBdHRyaWJ1dGVDdXN0b20KK3sKKyAg
ICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwt
PnRlc3RBdHRyaWJ1dGVDdXN0b20oKTsKK30KKworLSAoQk9PTCl0ZXN0QXR0cmlidXRlUldDdXN0
b20KK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0
dXJuIElNUEwtPnRlc3RBdHRyaWJ1dGVSV0N1c3RvbSgpOworfQorCistICh2b2lkKXNldFRlc3RB
dHRyaWJ1dGVSV0N1c3RvbTooQk9PTCluZXdUZXN0QXR0cmlidXRlUldDdXN0b20KK3sKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0VGVzdEF0
dHJpYnV0ZVJXQ3VzdG9tKG5ld1Rlc3RBdHRyaWJ1dGVSV0N1c3RvbSk7Cit9CisKKy0gKHZvaWQp
dGVzdEZ1bmN0aW9uCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIElNUEwtPnRlc3RGdW5jdGlvbigpOworfQorCistICh2b2lkKXRlc3RDdXN0b21GdW5j
dGlvbgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJ
TVBMLT50ZXN0Q3VzdG9tRnVuY3Rpb24oKTsKK30KKwogQGVuZAogCiBXZWJDb3JlOjpUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IqIGNvcmUoRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yICp3cmFw
cGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDdXN0b21Db25zdHJ1Y3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdEN1c3RvbUNvbnN0cnVjdG9yLmlkbAppbmRleCBmZDNiYzg1NzZiMDIwMDk3NDk2
NWUwOGNmYmQ3ZmZmMzE1NmY3YzZiLi4zYWMwY2QxYThjNWI5M2YwNTJjNTFiZGQ4ZTBmMzczOTY1
MThiNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEN1c3RvbUNvbnN0cnVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdEN1c3RvbUNvbnN0cnVjdG9yLmlkbApAQCAtMjgsNiArMjgsNyBAQAog
CiBbCiAgICAgQ3VzdG9tQ29uc3RydWN0b3IsCisgICAgSlNCdWlsdEluLAogICAgIE5vSW50ZXJm
YWNlT2JqZWN0CiBdIGludGVyZmFjZSBUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QgewogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwKaW5kZXggNmEx
ZjFkZGZhMTU2YjQxODYyZGUwNjY1MDc4ODljODg5YmMwY2E1MC4uMWRkOTE4ZTVlNjE0Nzg2ZjE4
MjdkZGQ5ODI0NTVmYjI0MjkwMTlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5p
ZGwKQEAgLTI3LDcgKzI3LDE1IEBACiAgKi8KIAogWwotICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9y
CisgICAgSlNCdWlsdGluLAorICAgIENvbnN0cnVjdG9yCiBdIGludGVyZmFjZSBUZXN0SlNCdWls
dGluQ29uc3RydWN0b3IgewotfTsKIAorICAgIHZvaWQgdGVzdEZ1bmN0aW9uKCk7CisgICAgYXR0
cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJpYnV0ZTsKKworICAgIFsgQ3VzdG9tIF0gdm9pZCB0ZXN0
Q3VzdG9tRnVuY3Rpb24oKTsKKyAgICBbIEN1c3RvbUdldHRlciBdIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHRlc3RBdHRyaWJ1dGVDdXN0b207CisgICAgWyBDdXN0b21HZXR0ZXIsIEN1c3Rv
bVNldHRlciBdIGF0dHJpYnV0ZSBib29sZWFuIHRlc3RBdHRyaWJ1dGVSV0N1c3RvbTsKKworfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264570</attachid>
            <date>2015-11-02 02:10:45 -0800</date>
            <delta_ts>2015-11-02 03:01:27 -0800</delta_ts>
            <desc>Cleaning IDLs</desc>
            <filename>bug-150438-20151102110934.patch</filename>
            <type>text/plain</type>
            <size>54883</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE3MTA0YmUyYWYzOTAy
YmY4ZDFlMjA3NzE4MWNkZWY1NDQxODE3Yy4uOTYxYTM1OWFlYzI3NTYxZDE5YThjNzY5OWRlYjFj
ZWFhMTljYTczNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxNS0xMS0wMiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIElETCBm
dW5jdGlvbnMgYW5kIGF0dHJpYnV0ZXMgc2hvdWxkIGJlIEpTQnVpbHRpbiBieSBkZWZhdWx0IGlm
IGludGVyZmFjZSBpcyBtYXJrZWQgYXMgSlNCdWlsdGluQ29uc3RydWN0b3IKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDQzOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEJpbmRpbmcgZ2VuZXJhdG9yIGlzIG5v
dyBkZWR1Y2luZyB0aGF0IGZ1bmN0aW9uL2F0dHJpYnV0ZSBpcyBKU0J1aWx0aW4gaWYgdGhlIGlu
dGVyZmFjZSBpcyBtYXJrZWQgYXMgSlNCdWlsdGluLgorICAgICAgICBPbmUgZXhjZXB0aW9uIGlz
IGN1c3RvbSBzZXR0ZXJzLCBnZXR0ZXJzIG9yIGZ1bmN0aW9ucyB3aGljaCByZW1haW4gQysrIGhh
bmRsZWQuCisgICAgICAgIFVwZGF0ZWQgc3RyZWFtcyBBUEkgSURMcyBhY2NvcmRpbmdseS4KKwor
ICAgICAgICBCaW5kaW5nIGdlbmVyYXRvciBrbm93cyB3aGV0aGVyIGNsYXNzIG5lZWRzIGEgRE9N
IGNsYXNzIGJ5IGNoZWNraW5nIHdoZXRoZXIgdGhlIGludGVyZmFjZSBpcyBtYXJrZWQgYXMgSlNC
dWlsdGluLgorICAgICAgICBCaW5kaW5nIGdlbmVyYXRvciBrbm93cyB0aGF0IGNsYXNzIHVzZXMg
YSBKUyBidWlsdC1pbiBjb25zdHJ1Y3RvciBpZiBtYXJrZWQgYXMgSlNCdWlsdGluK0NvbnN0cnVj
dG9yLgorICAgICAgICBJbiBwYXJ0aWN1bGFyLCBKU0J1aWx0SW4rQ3VzdG9tQ29uc3RydWN0b3Ig
bWVhbnMgdGhhdCBhIERPTSBjbGFzcyBpcyBub3QgbmVlZGVkIGFuZCBjb25zdHJ1Y3RvciBpcyBu
b3QgSlMgYnVpbHQtaW4uCisKKyAgICAgICAgQXBwbGllZCBKU0J1aWx0aW4rQ3VzdG9tQ29uc3Ry
dWN0b3IgdG8gUmVhZGFibGVTdHJlYW1SZWFkZXIgYW5kIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxl
ci4KKyAgICAgICAgUmVtb3ZpbmcgUmVhZGFibGVTdHJlYW1SZWFkZXIgYW5kIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlciBjbGFzc2VzLgorCisgICAgICAgIFJlbW92ZWQgdW5uZWVkZWQgIkRlZmF1
bHQiIGtleXdvcmQgZm9yIGNhbmNlbCBmdW5jdGlvbiBpbiBXZWJJREwuCisKKyAgICAgICAgQWRk
ZWQgYSBiaW5kaW5nIHRlc3QgY2FzZS4KKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgor
CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaWRs
OiBNYXJraW5nIGludGVyZmFjZSBhcyBKU0J1aWx0aW4gYW5kIENvbnN0cnVjdGFibGUuCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmlkbDogRGl0dG8uCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDogRGl0dG8uCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oOiBSZW1vdmVk
LgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuaWRs
OiBNYXJraW5nIGludGVyZmFjZSBhcyBKU0J1aWx0aW4gYW5kIENvbnN0cnVjdGFibGUuCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmg6IFJlbW92ZWQuCisg
ICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbDogTWFya2lu
ZyBpbnRlcmZhY2UgYXMgSlNCdWlsdGluIGFuZCBDb25zdHJ1Y3RhYmxlLgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5pZGw6IERpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9y
OjpjcmVhdGVKU09iamVjdCk6IFVwZGF0ZWQgYWNjb3JkaW5nIG5ldyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJvbGxlclByaXZhdGVD
b25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3QpOiBEaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKE5lZWRzSW1wbGVtZW50YXRpb25D
bGFzcyk6CisgICAgICAgIChHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKToKKyAgICAgICAgKEdldEF0
dHJpYnV0ZVNldHRlck5hbWUpOgorICAgICAgICAoR2V0RnVuY3Rpb25OYW1lKToKKyAgICAgICAg
KEluc3RhbmNlTmVlZHNWaXNpdENoaWxkcmVuKToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToK
KyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZSk6CisgICAgICAgIChHZW5lcmF0
ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05h
bWUpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAo
R2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAgICAoSXNDb25zdHJ1Y3Rh
YmxlKToKKyAgICAgICAgKENvbXB1dGVGdW5jdGlvblNwZWNpYWwpOgorICAgICAgICAoSXNKU0J1
aWx0aW4pOgorICAgICAgICAoSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcik6CisgICAgICAgIChBZGRK
U0J1aWx0aW5JbmNsdWRlc0lmTmVlZGVkKToKKyAgICAgICAgKEdldEpTQnVpbHRpbkZ1bmN0aW9u
TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3Ry
aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEdldEpTQnVpbHRpblNjb3BlTmFtZSk6IERlbGV0ZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9qc19idWls
dGluX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
anNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X2Rv
bV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl90ZXN0X2Z1bmN0aW9uKToKKyAgICAg
ICAgKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0dHJp
YnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9z
ZXRfdGVzdF9hdHRyaWJ1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I6OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRy
aWJ1dGVSV0N1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3JPd25lcjo6ZmluYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6dG9K
U05ld2x5Q3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp0b1dyYXBwZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRQ
cm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6d3Jh
cHBlck93bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yLm1tOgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IgdGVzdEF0dHJpYnV0ZV0pOgorICAgICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3Igc2V0VGVzdEF0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yIHRlc3RBdHRyaWJ1dGVDdXN0b21dKToKKyAgICAgICAgKC1bRE9NVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yIHRlc3RBdHRyaWJ1dGVSV0N1c3RvbV0pOgorICAgICAgICAoLVtET01U
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3Igc2V0VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tOl0pOgorICAg
ICAgICAoLVtET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IgdGVzdEZ1bmN0aW9uXSk6CisgICAg
ICAgICgtW0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciB0ZXN0Q3VzdG9tRnVuY3Rpb25dKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmlkbDoKKwogMjAxNS0xMC0yOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlh
LmNvbT4KIAogICAgICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBtaW4tY29udGVudCByb3cgZG9lcyBu
b3QgYWx3YXlzIHNocmluawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL0J5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3kuaWRsCmluZGV4IDg4YTI5YzU5Nzkw
OGQyZGExYzQ2MjkyZGZmMzgyMWUwM2FiMmU5MDEuLjBhYmVhMDNlYzgyOTM4ZGU2MzA4NTUwZDAx
YzI2NGVlNGU4OGZlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9CeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneS5pZGwKQEAgLTI4LDggKzI4LDkg
QEAKICAqLwogCiBbCi0gICAgSlNCdWlsdGluQ29uc3RydWN0b3IsCisgICAgSlNCdWlsdGluLAor
ICAgIENvbnN0cnVjdG9yLAogICAgIENvbmRpdGlvbmFsPVNUUkVBTVNfQVBJLAogXSBpbnRlcmZh
Y2UgQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneSB7Ci0gICAgW0pTQnVpbHRpbl0gZG91YmxlIHNp
emUoKTsKKyAgICBkb3VibGUgc2l6ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvQ291bnRRdWV1aW5nU3RyYXRlZ3kuaWRsCmluZGV4IDAxZWI3MDNi
NDExZTJmNmI5YjBlZmUyYjM0MjA2NTI3OGY4ZmYyN2UuLmE0MTI2M2Y2ZmM5NzcxODA2ZjE0M2Vk
NTBjZTcwODM0ODI3ZTA3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9Db3VudFF1ZXVpbmdTdHJhdGVneS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL0NvdW50UXVldWluZ1N0cmF0ZWd5LmlkbApAQCAtMjgsOCArMjgsOSBAQAogICov
CiAKIFsKLSAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvciwKKyAgICBKU0J1aWx0aW4sCisgICAgQ29u
c3RydWN0b3IsCiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCiBdIGludGVyZmFjZSBDb3Vu
dFF1ZXVpbmdTdHJhdGVneSB7Ci0gICAgW0pTQnVpbHRpbl0gZG91YmxlIHNpemUoKTsKKyAgICBk
b3VibGUgc2l6ZSgpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uaWRsCmluZGV4IDA0OWNjOWYzYjZmNGZkYTYyOGIyMTg2MDBjMjYzOGQ2
MWFjODAwMzguLmU3ZDVmNmRmZDA3MWYyNWQ4N2I0Zjg4YmM3NDNiNmIxNzA5NTk3NjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbApA
QCAtMjksMTMgKzI5LDE0IEBACiAKIFsKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKLSAg
ICBKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICAgIENvbnN0cnVjdG9yLAorICAgIEpTQnVpbHRpbgog
XSBpbnRlcmZhY2UgUmVhZGFibGVTdHJlYW0gewotICAgIFtKU0J1aWx0aW5dIFByb21pc2UgY2Fu
Y2VsKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgYW55IHJlYXNvbik7Ci0gICAgW0pTQnVp
bHRpbl0gT2JqZWN0IGdldFJlYWRlcigpOwotICAgIFtKU0J1aWx0aW5dIFByb21pc2UgcGlwZVRv
KGFueSBzdHJlYW1zLCBhbnkgb3B0aW9ucyk7Ci0gICAgW0pTQnVpbHRpbl0gT2JqZWN0IHBpcGVU
aHJvdWdoKGFueSBkZXN0LCBhbnkgb3B0aW9ucyk7Ci0gICAgW0pTQnVpbHRpbl0gT2JqZWN0IHRl
ZSgpOworICAgIFByb21pc2UgY2FuY2VsKG9wdGlvbmFsIGFueSByZWFzb24pOworICAgIE9iamVj
dCBnZXRSZWFkZXIoKTsKKyAgICBQcm9taXNlIHBpcGVUbyhhbnkgc3RyZWFtcywgYW55IG9wdGlv
bnMpOworICAgIE9iamVjdCBwaXBlVGhyb3VnaChhbnkgZGVzdCwgYW55IG9wdGlvbnMpOworICAg
IE9iamVjdCB0ZWUoKTsKIAotICAgIFtKU0J1aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIGxvY2tlZDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBsb2NrZWQ7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmM0NzhjMzk3
NzUxOWYwZmFkNDgyYzFiZjU5YjA2OWYwMzNkODhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2Fub24gSW5jLgotICogQ29weXJpZ2h0IChDKSAyMDE1
IElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgcmVx
dWlyZWQgdG8gYmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQ2Fub24gSW5jLiBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IENBTk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSAq
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0gKiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotICogQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyX2gKLSNk
ZWZpbmUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyX2gKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQ
SSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotLy8gVGhpcyBpcyBhIGR1bW15IGNsYXNzIG5lZWRlZCBhcyB3ZSBjYW5ub3QgeWV0IHVzZSBK
U0J1aWx0aW5Db25zdHJ1Y3RvciB3aXRoIE5vSW50ZXJmYWNlT2JqZWN0LgotLy8gSW1wbGVtZW50
YXRpb24gb2YgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGZ1bmN0aW9uYWxpdHkgaXMgZG9uZSBp
biBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuanMKLS8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIHJl
bW92ZSB0aGF0IGNsYXNzLgotY2xhc3MgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGZpbmFsIDog
cHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IGNyZWF0ZSgpIHsgcmV0dXJu
IGFkb3B0UmVmKCogbmV3IFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcik7IH0KLXByaXZhdGU6Ci0g
ICAgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyKCkgeyB9Ci19OwotCi19Ci0KLSNlbmRpZgotCi0j
ZW5kaWYgLy8gUmVhZGFibGVTdHJlYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbAppbmRleCAyMzdi
MTU0YzlkZDYzNGZjMjEzY2IzNTgyYjY5ZGYzOWY0YWVjMDMyLi45NTE0N2FmNmRiMDcxMTJmNzNi
M2Y3NmRhMWRjNWZiN2EyZTM4MmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmlkbApAQCAtMzAsMTIg
KzMwLDEyIEBACiBbCiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEksCiAgICAgQ3VzdG9tQ29u
c3RydWN0b3IsCi0gICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKKyAgICBKU0J1aWx0aW4s
CiAgICAgTm9JbnRlcmZhY2VPYmplY3QKIF0gaW50ZXJmYWNlIFJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlciB7Ci0gICAgW0pTQnVpbHRpbl0gdm9pZCBlbnF1ZXVlKFtEZWZhdWx0PVVuZGVmaW5lZF0g
b3B0aW9uYWwgYW55IGNodW5rKTsKLSAgICBbSlNCdWlsdGluXSB2b2lkIGNsb3NlKCk7Ci0gICAg
W0pTQnVpbHRpbl0gdm9pZCBlcnJvcihbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSBl
cnJvcik7CisgICAgdm9pZCBlbnF1ZXVlKG9wdGlvbmFsIGFueSBjaHVuayk7CisgICAgdm9pZCBj
bG9zZSgpOworICAgIHZvaWQgZXJyb3Iob3B0aW9uYWwgYW55IGVycm9yKTsKIAotICAgIFtKU0J1
aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgZGVzaXJlZFNpemU7CisgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGRvdWJsZSBkZXNpcmVkU2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzOTIyYzkyNzIzZTZhN2Y4NDUwZTA3M2MzN2U5MTJmOWJjNTAx
ZjI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJ
bmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBDYW5vbiBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9OIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotICogREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotICog
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFk
YWJsZVN0cmVhbVJlYWRlcl9oCi0jZGVmaW5lIFJlYWRhYmxlU3RyZWFtUmVhZGVyX2gKLQotI2lm
IEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhpcyBpcyBhIGR1bW15IGNsYXNzIG5lZWRlZCBhcyB3
ZSBjYW5ub3QgeWV0IHVzZSBKU0J1aWx0aW5Db25zdHJ1Y3RvciB3aXRoIE5vSW50ZXJmYWNlT2Jq
ZWN0LgotLy8gSW1wbGVtZW50YXRpb24gb2YgUmVhZGFibGVTdHJlYW1SZWFkZXIgZnVuY3Rpb25h
bGl0eSBpcyBkb25lIGluIFJlYWRhYmxlU3RyZWFtUmVhZGVyLmpzCi0vLyBGSVhNRTogRmluZCBh
IHdheSB0byByZW1vdmUgdGhhdCBjbGFzcy4KLWNsYXNzIFJlYWRhYmxlU3RyZWFtUmVhZGVyIGZp
bmFsIDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVTdHJlYW1SZWFkZXI+IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZigqIG5ldyBSZWFkYWJsZVN0cmVhbVJlYWRlcik7IH0KLXByaXZhdGU6Ci0gICAgUmVh
ZGFibGVTdHJlYW1SZWFkZXIoKSB7IH0KLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBS
ZWFkYWJsZVN0cmVhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmlkbAppbmRleCAzZmU4YmVjMmNiMDg1OWQzOTA0M2U5
YzVkYmYzMjMyMzA1NjI3NWE5Li4zNDA4MDg1YTM2MDdhYWVlZGNiYjBiMDA5YmExMmY1YzVjMmJh
NmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1SZWFkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVJlYWRlci5pZGwKQEAgLTMwLDEyICszMCwxMiBAQAogWwogICAgIENvbmRpdGlv
bmFsPVNUUkVBTVNfQVBJLAogICAgIEN1c3RvbUNvbnN0cnVjdG9yLAotICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCisgICAgSlNCdWlsdGluLAogICAgIE5vSW50ZXJmYWNlT2JqZWN0CiBd
IGludGVyZmFjZSBSZWFkYWJsZVN0cmVhbVJlYWRlciB7Ci0gICAgW0pTQnVpbHRpbl0gUHJvbWlz
ZSByZWFkKCk7Ci0gICAgW0pTQnVpbHRpbl0gUHJvbWlzZSBjYW5jZWwoW0RlZmF1bHQ9VW5kZWZp
bmVkXSBvcHRpb25hbCBhbnkgcmVhc29uKTsKLSAgICBbSlNCdWlsdGluXSB2b2lkIHJlbGVhc2VM
b2NrKCk7CisgICAgUHJvbWlzZSByZWFkKCk7CisgICAgUHJvbWlzZSBjYW5jZWwob3B0aW9uYWwg
YW55IHJlYXNvbik7CisgICAgdm9pZCByZWxlYXNlTG9jaygpOwogCi0gICAgW0pTQnVpbHRpbl0g
cmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgY2xvc2VkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBQcm9taXNlIGNsb3NlZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1dyaXRhYmxlU3RyZWFtLmlkbAppbmRleCBkODIxYTNiNGU1NjA5OGE3ZmU4OWM2NDY4ZmMy
ZDllMTRmOGUxNWNiLi41NDEyODJiNDQyNTEyYmQxZDIzYTdlZTEwMzJiMzBhMDVmZjg1NjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW0u
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5p
ZGwKQEAgLTI5LDEzICsyOSwxNCBAQAogCiBbCiAgICAgQ29uZGl0aW9uYWw9U1RSRUFNU19BUEks
Ci0gICAgSlNCdWlsdGluQ29uc3RydWN0b3IKKyAgICBDb25zdHJ1Y3RvciwKKyAgICBKU0J1aWx0
aW4KIF0gaW50ZXJmYWNlIFdyaXRhYmxlU3RyZWFtIHsgCi0gICAgW0pTQnVpbHRpbl0gUHJvbWlz
ZSBhYm9ydChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIGFueSByZWFzb24pOwotICAgIFtK
U0J1aWx0aW5dIFByb21pc2UgY2xvc2UoKTsKLSAgICBbSlNCdWlsdGluXSBQcm9taXNlIHdyaXRl
KGFueSBjaHVuayk7CisgICAgUHJvbWlzZSBhYm9ydChvcHRpb25hbCBhbnkgcmVhc29uKTsKKyAg
ICBQcm9taXNlIGNsb3NlKCk7CisgICAgUHJvbWlzZSB3cml0ZShhbnkgY2h1bmspOwogCi0gICAg
W0pTQnVpbHRpbl0gcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2UgY2xvc2VkOwotICAgIFtKU0J1
aWx0aW5dIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIHJlYWR5OwotICAgIFtKU0J1aWx0aW5d
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3RhdGU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFByb21pc2UgY2xvc2VkOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlIHJlYWR5
OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgc3RhdGU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDA0MTA5MzhkNTE1NjliZmUzNWJlMzJkMDQw
N2U5MGI3OTlhZDYzYTIuLmUyMDUxZTY4NTMxY2NlZjMwZTZhYzgxZTIzNjJkMGZlNDNjY2YzMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Q
cml2YXRlQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKQEAgLTY1LDEyICs2NSwxMiBA
QCB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OgogCiB0ZW1wbGF0ZTw+IEpTT2JqZWN0KiBKU0J1aWx0
aW5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmplY3Qo
KQogewotICAgIHJldHVybiBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUoZ2V0RE9NU3Ry
dWN0dXJlPEpTUmVhZGFibGVTdHJlYW1SZWFkZXI+KGdsb2JhbE9iamVjdCgpLT52bSgpLCAqZ2xv
YmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0
ZSgpKTsKKyAgICByZXR1cm4gSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRlKGdldERPTVN0
cnVjdHVyZTxKU1JlYWRhYmxlU3RyZWFtUmVhZGVyPihnbG9iYWxPYmplY3QoKS0+dm0oKSwgKmds
b2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0KCkpOwogfQogCiB0ZW1wbGF0ZTw+IEpTT2JqZWN0
KiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmNy
ZWF0ZUpTT2JqZWN0KCkKIHsKLSAgICByZXR1cm4gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6
OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KGdsb2Jh
bE9iamVjdCgpLT52bSgpLCAqZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgUmVhZGFi
bGVTdHJlYW1Db250cm9sbGVyOjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIEpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyOjpjcmVhdGUoZ2V0RE9NU3RydWN0dXJlPEpTUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyPihnbG9iYWxPYmplY3QoKS0+dm0oKSwgKmdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2Jq
ZWN0KCkpOwogfQogCiB0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogSlNCdWlsdGluUmVh
ZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmluaXRpYWxpemVFeGVjdXRhYmxl
KEpTQzo6Vk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCA3NTZiNTlkNTMxMDA5MTJiYjBkYzMyMTMwMGUxZDRjZDg1
MWJlZmU4Li44ODYxOTI3ZjViYTBmYmZlYjkzOGZjZGM2NjVjZDE5OTJkZTNkMTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtNTIyLDcgKzUyMiw3IEBAIHN1YiBOZWVkc0ltcGxlbWVudGF0aW9uQ2xhc3MKIHsKICAgICBt
eSAoJGludGVyZmFjZSkgPSBAXzsKIAotICAgIHJldHVybiAwIGlmICgkaW50ZXJmYWNlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluQ29uc3RydWN0b3IifSk7CisgICAgcmV0dXJuIDAg
aWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifSk7CiAgICAg
cmV0dXJuIDE7CiB9CiAKQEAgLTU3NCwxMSArNTc0LDExIEBAIHN1YiBTaG91bGRHZW5lcmF0ZVRv
SlNJbXBsZW1lbnRhdGlvbgogCiBzdWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewotICAgIG15
ICgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKKyAgICBteSAo
JGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpID0gQF87
CiAgICAgaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CiAgICAgICAgIHJldHVybiAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOwogICAgIH0K
LSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNC
dWlsdGluIn0pIHsKKyAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkp
IHsKICAgICAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAk
YXR0cmlidXRlKTsKICAgICB9CiAgICAgcmV0dXJuICJqcyIgLiAkaW50ZXJmYWNlTmFtZSAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9Db25zdHJ1Y3RvciQvID8gIkNvbnN0cnVj
dG9yIiA6ICIiKTsKQEAgLTU4NiwxMSArNTg2LDExIEBAIHN1YiBHZXRBdHRyaWJ1dGVHZXR0ZXJO
YW1lCiAKIHN1YiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2VO
YW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlTmFt
ZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgPSBAXzsKICAgICBpZiAoJGF0
dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFtZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKICAgICB9Ci0gICAg
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRp
biJ9KSB7CisgICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CiAg
ICAgICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KEdldEpTQnVp
bHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSk7CiAgICAgfQogICAgIHJl
dHVybiAic2V0SlMiIC4gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJz
dCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZSA9fiAvQ29uc3RydWN0b3IkLyA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CkBAIC01OTgsOSAr
NTk4LDkgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIAogc3ViIEdldEZ1bmN0aW9uTmFt
ZQogewotICAgIG15ICgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CisgICAgbXkgKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKIAotICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9KSB7CisgICAgaWYg
KElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpIHsKICAgICAgICAgcmV0dXJuIEdl
dEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgIH0KIApA
QCAtODMwLDcgKzgzMCw3IEBAIHN1YiBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbgogICAgICAg
ICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXZlbnRUYXJnZXQifQogICAg
ICAgICB8fCAkaW50ZXJmYWNlLT5uYW1lIGVxICJFdmVudFRhcmdldCIKICAgICAgICAgfHwgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlJlcG9ydEV4dHJhTWVtb3J5Q29zdCJ9Ci0g
ICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25z
dHJ1Y3RvciJ9OworICAgICAgICB8fCBJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2Up
CiB9CiAKIHN1YiBHZXRJbXBsQ2xhc3NOYW1lCkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKIAogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUp
OwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
TmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAg
ICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3Rh
dGUqKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC0xMzExLDEwICsxMzExLDEwIEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5z
aWduYXR1cmUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkg
JGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdl
dHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1
dGUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFs
dWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICAgICAgaWYgKCFJc1Jl
YWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0
dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRp
bnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAidm9pZCAke3NldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTEzOTMsMTggKzEz
OTMsMTggQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlc0hhc2hUYWJsZQogCiAgICAgICAgIHB1c2go
QHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiTm90RW51bWVyYWJsZSJ9IHx8ICRpc19nbG9iYWxfY29uc3RydWN0b3Ip
OwogICAgICAgICBwdXNoKEBzcGVjaWFscywgIlJlYWRPbmx5IikgaWYgSXNSZWFkb25seSgkYXR0
cmlidXRlKTsKLSAgICAgICAgcHVzaChAc3BlY2lhbHMsICJDdXN0b21BY2Nlc3NvciIpIHVubGVz
cyAkaXNfZ2xvYmFsX2NvbnN0cnVjdG9yIG9yICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OwotICAgICAgICBwdXNoKEBzcGVjaWFscywgIkFj
Y2Vzc29yIHwgQnVpbHRpbiIpIGlmICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKyAgICAgICAgcHVzaChAc3BlY2lhbHMsICJDdXN0b21B
Y2Nlc3NvciIpIHVubGVzcyAkaXNfZ2xvYmFsX2NvbnN0cnVjdG9yIG9yIElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEBzcGVjaWFscywgIkFjY2Vzc29y
IHwgQnVpbHRpbiIpIGlmICBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAg
ICAgICAgbXkgJHNwZWNpYWwgPSAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lh
bHMpIDogIjAiOwogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7CiAKLSAg
ICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUs
ICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOworICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmli
dXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0
dHJpYnV0ZSk7CiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAogICAgICAg
ICBpZiAoSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgcHVzaChAJGhhc2hW
YWx1ZTIsICIwIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBteSAkc2V0dGVyID0g
R2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CisgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAg
ICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgJHNldHRlcik7CiAgICAgICAgIH0KIApAQCAtMTgw
OSw3ICsxODA5LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG5l
eHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJ
bmRleH0gPiAxOwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkZvcndhcmREZWNsYXJlSW5IZWFkZXIifTsKICAgICAgICAgICAg
IG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21CaW5kaW5nIn07Ci0gICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07CisgICAgICAgICAgICBuZXh0IGlmIElz
SlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CiAKICAgICAgICAgICAgIG15ICRuZWVk
c0FwcGxlQ29weXJpZ2h0ID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJBcHBsZUNvcHlyaWdodCJ9OwogICAgICAgICAgICAgaWYgKCRuZWVkc0FwcGxlQ29weXJp
Z2h0KSB7CkBAIC0xODI0LDcgKzE4MjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
CiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2Vu
ZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0
aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
TmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24p
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgJHtmdW5jdGlvbk5hbWV9KEpTQzo6RXhlY1N0YXRlKik7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIH0KQEAgLTE4MzgsMTQgKzE4MzgsMTQgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIvLyBBdHRyaWJ1dGVzXG5cbiIp
OwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pIHsKICAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRm9yd2FyZERlY2xhcmVJbkhlYWRlciJ9OwotICAgICAgICAgICAgbmV4
dCBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0
aW4ifTsKKyAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CiAKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0
dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
OworICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7XG4iKTsKICAgICAgICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRl
KSkgewotICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1l
KCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAg
ICBteSAkc2V0dGVyID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNs
YXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ2b2lkICR7c2V0dGVyfShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmpl
Y3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTtcbiIpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTE5MzUsMTMgKzE5MzUsMTMgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIG15ICRzcGVjaWFsID0gKEBzcGVjaWFscyA+IDAp
ID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKICAgICAgICAgICAgIHB1c2goQGhhc2hT
cGVjaWFscywgJHNwZWNpYWwpOwogCi0gICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmli
dXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7Cisg
ICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNl
TmFtZSwgJGNsYXNzTmFtZSwgJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBw
dXNoKEBoYXNoVmFsdWUxLCAkZ2V0dGVyKTsKIAogICAgICAgICAgICAgaWYgKElzUmVhZG9ubHko
JGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gR2V0QXR0
cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7
CisgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGlu
dGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICRzZXR0ZXIpOwogICAgICAgICAgICAgfQogCkBA
IC0xOTU5LDcgKzE5NTksNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAgICAgIHB1
c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBH
ZXRGdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRm
dW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICRmdW5jdGlvbk5hbWUpOwog
CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVu
Y3Rpb24pOwpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAg
cHVzaChAaGFzaEtleXMsICRuYW1lKTsKIAotICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0
RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9u
KTsKICAgICAgICAgcHVzaChAaGFzaFZhbHVlMSwgJGZ1bmN0aW9uTmFtZSk7CiAKICAgICAgICAg
bXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKQEAgLTIx
MDcsNyArMjEwNyw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVk1DbGllbnREYXRhJiBjbGllbnREYXRh
ID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7XG4iKSBpZiAk
Zmlyc3RQcml2YXRlRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgJGZpcnN0UHJpdmF0ZUZ1bmN0
aW9uID0gMDsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJl
Y3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5j
dGlvbikgLiAiKSwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuIiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0
RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbikgLiAiKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7XG4iKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwpAQCAtMjI3MSwxNCArMjI3MSwxNCBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICRudW1BdHRyaWJ1dGVzID0gJG51bUF0dHJpYnV0ZXMg
KyAxIGlmIE5lZWRzQ29uc3RydWN0b3JQcm9wZXJ0eSgkaW50ZXJmYWNlKTsKICAgICBpZiAoJG51
bUF0dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50
ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW4ifTsKKyAgICAgICAgICAg
IG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAg
ICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICAgICAg
bXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CiAgICAgICAgICAgICAjIE51
bGxhYmxlIHdyYXBwZXIgdHlwZXMgZG8gbm90IG5lZWQgYW55IHNwZWNpYWwgaGFuZGxpbmcgYXMg
dGhlIGltcGxlbWVudGF0aW9uIGNhbiByZXR1cm4gYSBudWxsIHBvaW50ZXIuCiAgICAgICAgICAg
ICBteSAkaXNOdWxsYWJsZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+aXNOdWxsYWJsZSAmJiAh
JGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOwogICAgICAgICAgICAgJGNvZGVH
ZW5lcmF0b3ItPkFzc2VydE5vdFNlcXVlbmNlVHlwZSgkdHlwZSk7Ci0gICAgICAgICAgICBteSAk
Z2V0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwg
JGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkZ2V0RnVuY3Rpb25OYW1l
ID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlTmFtZSwgJGNsYXNzTmFtZSwgJGlu
dGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9u
TmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSB8fCAkbmFtZSk7CiAgICAgICAg
ICAgICBteSAkZ2V0dGVyRXhjZXB0aW9ucyA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkdldHRlclJhaXNlc0V4Y2VwdGlvbiJ9OwogCkBAIC0yNjE3LDExICsy
NjE3LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICBmb3JlYWNoIG15ICRh
dHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgaWYgKCFJc1Jl
YWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICAgICAg
bmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAogICAgICAgICAg
ICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgICAgICBt
eSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKLSAgICAgICAgICAgIG15ICRw
dXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAk
Y2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRwdXRGdW5jdGlvbk5hbWUg
PSBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2VOYW1lLCAkY2xhc3NOYW1lLCAkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIG15ICRpbXBsU2V0dGVyRnVuY3Rpb25O
YW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwogICAgICAgICAgICAgbXkg
JHNldHRlclJhaXNlc0V4Y2VwdGlvbiA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlNldHRlclJhaXNlc0V4Y2VwdGlvbiJ9OwogCkBAIC0yODUzLDcgKzI4NTMs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBteSAkaW5BcHBsZUNvcHly
aWdodCA9IDA7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1
bmN0aW9uc30pIHsKICAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21CaW5kaW5nIn07Ci0gICAgICAgICAgICBuZXh0IGlm
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluIn07
CisgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7
CiAgICAgICAgICAgICBteSAkbmVlZHNBcHBsZUNvcHlyaWdodCA9ICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQXBwbGVDb3B5cmlnaHQifTsKICAgICAgICAgICAg
IGlmICgkbmVlZHNBcHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAgIGlmICghJGluQXBw
bGVDb3B5cmlnaHQpIHsKQEAgLTI4NzMsNyArMjg3Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSW1wbCgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZSkgdW5sZXNzICRpc0N1c3RvbSBvciBJc1JldHVybmluZ1Byb21pc2Uo
JGZ1bmN0aW9uKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9u
TmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwog
CiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn07CiAgICAgICAgICAgICBpZiAoJGNvbmRp
dGlvbmFsKSB7CkBAIC00NTk5LDkgKzQ1OTksOSBAQCBzdWIgR2VuZXJhdGVQcm90b3R5cGVEZWNs
YXJhdGlvbgogc3ViIEdldENvbnN0cnVjdG9yVGVtcGxhdGVDbGFzc05hbWUKIHsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuICJKU0J1aWx0aW5Db25zdHJ1Y3RvciIgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25zdHJ1Y3RvciJ9
KTsKICAgICByZXR1cm4gIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlIiBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSk7CiAgICAg
cmV0dXJuICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZSIgdW5sZXNzIElzQ29uc3Ry
dWN0YWJsZSgkaW50ZXJmYWNlKTsKKyAgICByZXR1cm4gIkpTQnVpbHRpbkNvbnN0cnVjdG9yIiBp
ZiBJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAiSlNET01D
b25zdHJ1Y3RvciI7CiB9CiAKQEAgLTQ3MDUsNyArNDcwNSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbgogICAgIG15ICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA9IHNo
aWZ0OwogICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCi0gICAgcmV0dXJuIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNCdWlsdGluQ29uc3RydWN0b3IifSk7CisgICAg
cmV0dXJuIGlmIElzSlNCdWlsdGluQ29uc3RydWN0b3IoJGludGVyZmFjZSk7CiAKICAgICBteSAk
Y29uc3RydWN0b3JDbGFzc05hbWUgPSAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IgPyAiJHtj
bGFzc05hbWV9TmFtZWRDb25zdHJ1Y3RvciIgOiAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwog
CkBAIC00OTU1LDcgKzQ5NTUsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhv
ZHMKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiXG4iKTsKICAgICB9CiAKLSAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbkNvbnN0cnVjdG9yIn0p
IHsKKyAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSkgewogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ0ZW1wbGF0ZTw+IEZ1bmN0aW9uRXhlY3V0YWJsZSogJHtj
b25zdHJ1Y3RvckNsYXNzTmFtZX06OmluaXRpYWxpemVFeGVjdXRhYmxlKFZNJiB2bSlcbiIpOwog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIHJldHVybiAiIC4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmlu
ZygkaW50ZXJmYWNlTmFtZSwgImluaXRpYWxpemUiIC4gJGludGVyZmFjZU5hbWUpIC4gIih2bSk7
XG4iKTsKQEAgLTUwMDksNyArNTAwOSw3IEBAIHN1YiBJc0NvbnN0cnVjdGFibGUKIHsKICAgICBt
eSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gSGFzQ3VzdG9tQ29uc3RydWN0b3Io
JGludGVyZmFjZSkgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVj
dG9yIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0
b3IifSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3JUZW1w
bGF0ZSJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0aW5Db25z
dHJ1Y3RvciJ9OworICAgIHJldHVybiBIYXNDdXN0b21Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKSB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RydWN0b3IifSB8fCAkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9IHx8ICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvclRlbXBsYXRlIn07CiB9CiAK
IHN1YiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uCkBAIC01MDI4LDcgKzUwMjgsNyBA
QCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udERl
bGV0ZSIpIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVW5m
b3JnZWFibGUifQogICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJV
bmZvcmdlYWJsZSJ9OwogICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vdEVudW1lcmFibGUifTsKLSAg
ICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1aWx0
aW4ifSkgeworICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKSB7CiAg
ICAgICAgIHB1c2goQHNwZWNpYWxzLCAiSlNDOjpCdWlsdGluIik7CiAgICAgfQogICAgIGVsc2Ug
ewpAQCAtNTAzNyw2ICs1MDM3LDI5IEBAIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCiAgICAg
cmV0dXJuIChAc3BlY2lhbHMgPiAwKSA/IGpvaW4oIiB8ICIsIEBzcGVjaWFscykgOiAiMCI7CiB9
CiAKK3N1YiBJc0pTQnVpbHRpbgoreworICAgIG15ICgkaW50ZXJmYWNlLCAkb2JqZWN0KSA9IEBf
OworCisgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ3VzdG9tIn07CisgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tR2V0dGVyIn07CisgICAgcmV0dXJuIDAgaWYgJG9iamVj
dC0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tU2V0dGVyIn07CisKKyAg
ICByZXR1cm4gMSBpZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0J1aWx0aW4ifTsKKyAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiSlNCdWlsdGluIn07CisKKyAgICByZXR1cm4gMDsKK30KKworc3ViIElzSlNCdWlsdGlu
Q29uc3RydWN0b3IKK3sKKyAgICBteSAoJGludGVyZmFjZSkgPSBAXzsKKworICAgIHJldHVybiAw
IGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Db25zdHJ1Y3RvciJ9
OworICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJKU0J1
aWx0aW4ifTsKKyAgICByZXR1cm4gMDsKK30KKwogc3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZQogewogICAgIG15ICgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CkBAIC01MDY0LDE3ICs1
MDg3LDE3IEBAIHN1YiBBZGRKU0J1aWx0aW5JbmNsdWRlc0lmTmVlZGVkKCkKIHsKICAgICBteSAk
aW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkpTQnVpbHRpbkNvbnN0cnVjdG9yIn0pIHsKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCRpbnRlcmZhY2UtPm5hbWUgLiAiQnVpbHRpbnMuaCIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25z
fSkgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUoJGlu
dGVyZmFjZSwgJGZ1bmN0aW9uKSAuICJCdWlsdGlucy5oIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSBpZiAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSAu
ICJCdWlsdGlucy5oIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25kaXRpb25hbCJ9KSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwog
ICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSkgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUo
JGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgLiAiQnVpbHRpbnMuaCIsICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIGlmICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTQnVpbHRpbiJ9OworICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSkgLiAiQnVpbHRpbnMuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNvbmRpdGlvbmFsIn0pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERP
TVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGJjNmIyZDE2MTM5OTFjNmVmMDg4
M2VmYzRjNjY2NTg4NmMwMzdkYi4uZDA3NGY1NGMzYjVkZWNlMDFkZjE3YjEwYjEzMWJiZTUwYjZm
NTEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0SlNCdWls
dGluQ29uc3RydWN0b3IuY3BwCkBAIC02Nyw2ICs2NywxMSBAQCBXZWJLaXRET01UZXN0SlNCdWls
dGluQ29uc3RydWN0b3IqIHdyYXBUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoV2ViQ29yZTo6VGVz
dEpTQgogCiBHX0RFRklORV9UWVBFKFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciwg
d2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3IsIFdFQktJVF9ET01fVFlQRV9P
QkpFQ1QpCiAKK2VudW0geworICAgIFBST1BfMCwKKyAgICBQUk9QX1RFU1RfQVRUUklCVVRFLAor
fTsKKwogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jf
ZmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdERPTVRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclByaXZhdGUqIHByaXYgPSBXRUJLSVRfRE9NX1RFU1RfSlNfQlVJTFRJTl9DT05T
VFJVQ1RPUl9HRVRfUFJJVkFURShvYmplY3QpOwpAQCAtNzcsNiArODIsMzQgQEAgc3RhdGljIHZv
aWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZmluYWxpemUoR09iamVj
dCogb2JqZWN0KQogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGlu
X2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKK3N0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIGNvbnN0IEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvciogc2VsZiA9IFdFQktJVF9ET01fVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SKG9iamVj
dCk7CisKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKKyAgICBjYXNlIFBST1BfVEVTVF9BVFRS
SUJVVEU6CisgICAgICAgIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3Nl
dF90ZXN0X2F0dHJpYnV0ZShzZWxmLCBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1
Y3Rvcl9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBHVmFs
dWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYykKK3sKKyAgICBXZWJLaXRET01UZXN0SlNCdWls
dGluQ29uc3RydWN0b3IqIHNlbGYgPSBXRUJLSVRfRE9NX1RFU1RfSlNfQlVJTFRJTl9DT05TVFJV
Q1RPUihvYmplY3QpOworCisgICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CisgICAgY2FzZSBQUk9Q
X1RFU1RfQVRUUklCVVRFOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCB3ZWJr
aXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9nZXRfdGVzdF9hdHRyaWJ1dGUoc2Vs
ZikpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJO
X0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwogc3RhdGljIEdPYmplY3QqIHdlYmtpdF9kb21fdGVzdF9qc19i
dWlsdGluX2NvbnN0cnVjdG9yX2NvbnN0cnVjdG9yKEdUeXBlIHR5cGUsIGd1aW50IGNvbnN0cnVj
dFByb3BlcnRpZXNDb3VudCwgR09iamVjdENvbnN0cnVjdFBhcmFtKiBjb25zdHJ1Y3RQcm9wZXJ0
aWVzKQogewogICAgIEdPYmplY3QqIG9iamVjdCA9IEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9kb21f
dGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdG9yKHR5
cGUsIGNvbnN0cnVjdFByb3BlcnRpZXNDb3VudCwgY29uc3RydWN0UHJvcGVydGllcyk7CkBAIC05
NCw2ICsxMjcsMTkgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29u
c3RydWN0b3JfY2xhc3NfaW5pdChXZWJLaXRET01UZXN0SlNCdWkKICAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoZ29iamVjdENsYXNzLCBzaXplb2YoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJpdmF0ZSkpOwogICAgIGdvYmplY3RDbGFzcy0+Y29uc3RydWN0b3IgPSB3ZWJr
aXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9jb25zdHJ1Y3RvcjsKICAgICBnb2Jq
ZWN0Q2xhc3MtPmZpbmFsaXplID0gd2Via2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0
b3JfZmluYWxpemU7CisgICAgZ29iamVjdENsYXNzLT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9t
X3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9zZXRfcHJvcGVydHk7CisgICAgZ29iamVjdENs
YXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rv
cl9nZXRfcHJvcGVydHk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KAor
ICAgICAgICBnb2JqZWN0Q2xhc3MsCisgICAgICAgIFBST1BfVEVTVF9BVFRSSUJVVEUsCisgICAg
ICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKAorICAgICAgICAgICAgInRlc3QtYXR0cmlidXRlIiwK
KyAgICAgICAgICAgICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6dGVzdC1hdHRyaWJ1dGUiLAor
ICAgICAgICAgICAgInJlYWQtd3JpdGUgZ2Jvb2xlYW4gVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
OnRlc3QtYXR0cmlidXRlIiwKKyAgICAgICAgICAgIEZBTFNFLAorICAgICAgICAgICAgV0VCS0lU
X1BBUkFNX1JFQURXUklURSkpOworCiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9q
c19idWlsdGluX2NvbnN0cnVjdG9yX2luaXQoV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yKiByZXF1ZXN0KQpAQCAtMTAyLDMgKzE0OCwyOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfZG9t
X3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9pbml0KFdlYktpdERPTVRlc3RKU0J1aWx0aW5D
bwogICAgIG5ldyAocHJpdikgV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJpdmF0
ZSgpOwogfQogCit2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX3Rl
c3RfZnVuY3Rpb24oV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBzZWxmKQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SKHNlbGYpKTsK
KyAgICBXZWJDb3JlOjpUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNv
cmUoc2VsZik7CisgICAgaXRlbS0+dGVzdEZ1bmN0aW9uKCk7Cit9CisKK2dib29sZWFuIHdlYmtp
dF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0cnVjdG9yX2dldF90ZXN0X2F0dHJpYnV0ZShXZWJL
aXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9ET01fSVNfVEVTVF9KU19CVUlMVElOX0NPTlNUUlVDVE9SKHNlbGYpLCBGQUxTRSk7CisgICAg
V2ViQ29yZTo6VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIGdib29sZWFuIHJlc3VsdCA9IGl0ZW0tPnRlc3RBdHRyaWJ1dGUoKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2NvbnN0
cnVjdG9yX3NldF90ZXN0X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqIHNlbGYsIGdib29sZWFuIHZhbHVlKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9K
U19CVUlMVElOX0NPTlNUUlVDVE9SKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+c2V0VGVz
dEF0dHJpYnV0ZSh2YWx1ZSk7Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggM2EwYjNmMzdlOGQyYWRiN2E5ZWMx
YjNkZGFjMTAyZGUxYTVkNWFmYi4uMWQ1MGM4NzBmMTQ5OWFmNTMzNmM4YjZkM2M4YTYxODNhNzBi
M2VkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmgKQEAgLTQ3LDYgKzQ3LDM2IEBAIHN0cnVjdCBfV2ViS2l0RE9NVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yQ2xhc3MgewogV0VCS0lUX0FQSSBHVHlwZQogd2Via2l0X2RvbV90
ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZ2V0X3R5cGUodm9pZCk7CiAKKy8qKgorICogd2Vi
a2l0X2RvbV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfdGVzdF9mdW5jdGlvbjoKKyAqIEBz
ZWxmOiBBICNXZWJLaXRET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IKKyAqCisgKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X2pzX2J1
aWx0aW5fY29uc3RydWN0b3JfdGVzdF9mdW5jdGlvbihXZWJLaXRET01UZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IqIHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9qc19idWlsdGluX2Nv
bnN0cnVjdG9yX2dldF90ZXN0X2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IKKyAqCisgKiBSZXR1cm5zOiBBICNnYm9vbGVhbgorICoKKyAq
IFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSBnYm9vbGVhbgord2Via2l0X2Rv
bV90ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3JfZ2V0X3Rlc3RfYXR0cmlidXRlKFdlYktpdERP
TVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvciogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90
ZXN0X2pzX2J1aWx0aW5fY29uc3RydWN0b3Jfc2V0X3Rlc3RfYXR0cmlidXRlOgorICogQHNlbGY6
IEEgI1dlYktpdERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICogQHZhbHVlOiBBICNnYm9v
bGVhbgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3
ZWJraXRfZG9tX3Rlc3RfanNfYnVpbHRpbl9jb25zdHJ1Y3Rvcl9zZXRfdGVzdF9hdHRyaWJ1dGUo
V2ViS2l0RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBzZWxmLCBnYm9vbGVhbiB2YWx1ZSk7
CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBXRUJLSVRfRE9NX1VTRV9VTlNUQUJMRV9BUEkg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4IDI1NzZk
ODQzMDhlNjc5ZGY2NTUwNDNhYzFjODcyMDVlZjMzMGU3MzYuLmJmN2NjMzI3MjIwMzE5MDQzNGVj
ZThmNWUxYTU2YzdkMzFjOGI1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yLmNwcApAQCAtMjQsMTQgKzI0LDIyIEBACiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
CiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckJ1aWx0aW5zLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1
ZGUgPHd0Zi9HZXRQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisvLyBGdW5jdGlvbnMKKworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9t
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKKwogLy8gQXR0cmlidXRlcwogCitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVj
dCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK3ZvaWQgc2V0SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogCiBjbGFzcyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgewpAQCAtNjEsNiAr
NjksMjMgQEAgcHJpdmF0ZToKIAogdHlwZWRlZiBKU0J1aWx0aW5Db25zdHJ1Y3RvcjxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcj4gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjsKIAorLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IHN0
cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGVJbmRl
eFs0XSA9IHsKKyAgICB7IDAsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKKyAgICB7IDEsIC0xIH0s
CisgICAgeyAtMSwgLTEgfSwKK307CisKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAidGVzdEF0
dHJpYnV0ZUN1c3RvbSIsIERvbnREZWxldGUgfCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUN1c3RvbSksIChp
bnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0g
fSwKKyAgICB7ICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iLCBEb250RGVsZXRlIHwgQ3VzdG9tQWNj
ZXNzb3IsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldD
dXN0b20pLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jPihzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbSkg
fSB9LAorfTsKKworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRhYmxlID0geyAyLCAzLCB0cnVlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRhYmxlSW5kZXggfTsKIHRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC04MCw2ICsxMDUsOSBAQCB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJUZQogc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiB7CiAgICAgeyAiY29uc3RydWN0
b3IiLCBEb250RW51bSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPigwKSB9IH0sCisgICAgeyAidGVzdEF0dHJpYnV0ZSIsIEFjY2Vzc29yIHwg
QnVpbHRpbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PEJ1aWx0aW5HZW5l
cmF0b3I+KHRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVDb2RlR2VuZXJhdG9y
KSwgKGludHB0cl90KSAoc2V0VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZUNv
ZGVHZW5lcmF0b3IpIH0gfSwKKyAgICB7ICJ0ZXN0RnVuY3Rpb24iLCBKU0M6OkJ1aWx0aW4sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxCdWlsdGluR2VuZXJhdG9yPih0ZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0RnVuY3Rpb25Db2RlR2VuZXJhdG9yKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgInRlc3RDdXN0b21GdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbiks
IChpbnRwdHJfdCkgKDApIH0gfSwKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZSkgfTsKQEAgLTkwLDcgKzExOCw3IEBAIHZv
aWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yUHJvdG90eXBlVGFibGVWYWx1ZXMsICp0aGlzKTsKIH0KIAotY29uc3QgQ2xhc3NJbmZv
IEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKSB9OworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiLCAmQmFzZTo6
c19pbmZvLCAmSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcikgfTsKIAogSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3I6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogSlNET01PYmplY3Qoc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpIHsgfQpAQCAtMTExLDYgKzEzOSwzNSBAQCB2b2lkIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogICAgIHRo
aXNPYmplY3QtPkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp+SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IoKTsKIH0KIAorYm9vbCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3RhdGUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICBhdXRvKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKj4ob2JqZWN0KTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CisgICAgaWYg
KGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciwgQmFzZT4oc3Rh
dGUsIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGFibGUsIHRoaXNPYmplY3QsIHByb3BlcnR5
TmFtZSwgc2xvdCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30K
KworRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRl
Q3VzdG9tKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
KyAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpOworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUp
OworICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqPihzbG90QmFzZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50
ZXN0QXR0cmlidXRlQ3VzdG9tKCpzdGF0ZSkpOworfQorCisKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0oc2xv
dEJhc2UpOworICAgIFVOVVNFRF9QQVJBTSh0aGlzVmFsdWUpOworICAgIGF1dG8qIGNhc3RlZFRo
aXMgPSBqc0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPihzbG90QmFzZSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0QXR0cmlidXRlUldDdXN0b20o
KnN0YXRlKSk7Cit9CisKKwogRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yUHJvdG90eXBlKj4oYmFzZVZhbHVlKTsKQEAgLTExOSwxMSArMTc2LDMzIEBAIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVj
dC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIAordm9pZCBzZXRKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRlc3RBdHRyaWJ1dGVSV0N1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFz
ZU9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOworICAgIFVOVVNFRF9QQVJBTShiYXNlT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0odGhp
c1ZhbHVlKTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yKj4oYmFzZU9iamVjdCk7CisgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBjYXN0ZWRUaGlzLT5zZXRUZXN0QXR0cmlidXRl
UldDdXN0b20oKnN0YXRlLCB2YWx1ZSk7Cit9CisKKwogSlNWYWx1ZSBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IHN0YXRlLT50aGlzVmFs
dWUoKTsKKyAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqPih0aGlzVmFsdWUpOworICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJy
b3IoKnN0YXRlLCAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIiwgInRlc3RDdXN0b21GdW5jdGlv
biIpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3I6OmluZm8oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT50ZXN0Q3VzdG9tRnVuY3Rpb24oKnN0YXRlKSk7Cit9CisKIHZvaWQgSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oCmluZGV4IDQyMDI5NDJkMmI3OTI2ZWZlYzZjMDhjYWU3ODFkZTAzNzFiMjg4MGQu
LjhjMWRmNWRjNGU4OTlmZTI2MjE3NzQzNTRhODFiZWYwMjU0YzZiYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oCkBAIC0zNyw2ICszNyw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogZ2V0UHJvdG90eXBl
KEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTQzo6SlNPYmplY3QqLCBKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVy
dHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
OjpKU0NlbGwqKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKQEAgLTQ5LDYgKzUwLDE2IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKKworICAgIC8vIEN1c3RvbSBhdHRyaWJ1dGVzCisgICAg
SlNDOjpKU1ZhbHVlIHRlc3RBdHRyaWJ1dGVDdXN0b20oSlNDOjpFeGVjU3RhdGUmKSBjb25zdDsK
KyAgICBKU0M6OkpTVmFsdWUgdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEpTQzo6RXhlY1N0YXRlJikg
Y29uc3Q7CisgICAgdm9pZCBzZXRUZXN0QXR0cmlidXRlUldDdXN0b20oSlNDOjpFeGVjU3RhdGUm
LCBKU0M6OkpTVmFsdWUpOworCisgICAgLy8gQ3VzdG9tIGZ1bmN0aW9ucworICAgIEpTQzo6SlNW
YWx1ZSB0ZXN0Q3VzdG9tRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmKTsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgogICAgIEpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAppbmRl
eCBjNTJkYzcyZDAyMjZmZTMxZDExM2M0ZTgwM2VhYmFkYzk5ZDJjM2RmLi5jOTRmODk4MWY5MDU4
YzUwMThlY2RhZDc0M2I3ZjFjN2VmOGQyYTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuaApAQCAtMjgsNCArMjgsMTAgQEAKIAogV0VCS0lUX0NMQVNTX0FW
QUlMQUJMRV9NQUMoOTg3Nl81KQogV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBET01UZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IgOiBET01PYmplY3QKK0Bwcm9wZXJ0eSBCT09MIHRlc3RBdHRyaWJ1
dGU7CitAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIHRlc3RBdHRyaWJ1dGVDdXN0b207CitAcHJv
cGVydHkgQk9PTCB0ZXN0QXR0cmlidXRlUldDdXN0b207CisKKy0gKHZvaWQpdGVzdEZ1bmN0aW9u
OworLSAodm9pZCl0ZXN0Q3VzdG9tRnVuY3Rpb247CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IubW0KaW5kZXggN2JiOWFiMjExNWVkNGQ0MTc1MTUxMDA4
NDJjNzdjNjNjYWUzZjI1OS4uZTI3MzgyMmY2Y2JkOWUxNGNhODU0YjQyODhkN2I1YjgzZjA0Yjkz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5tbQpAQCAt
NjAsNiArNjAsNDggQEAKICAgICBbc3VwZXIgZmluYWxpemVdOwogfQogCistIChCT09MKXRlc3RB
dHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Cisg
ICAgcmV0dXJuIElNUEwtPnRlc3RBdHRyaWJ1dGUoKTsKK30KKworLSAodm9pZClzZXRUZXN0QXR0
cmlidXRlOihCT09MKW5ld1Rlc3RBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0VGVzdEF0dHJpYnV0ZShuZXdUZXN0QXR0
cmlidXRlKTsKK30KKworLSAoQk9PTCl0ZXN0QXR0cmlidXRlQ3VzdG9tCit7CisgICAgV2ViQ29y
ZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBMLT50ZXN0QXR0
cmlidXRlQ3VzdG9tKCk7Cit9CisKKy0gKEJPT0wpdGVzdEF0dHJpYnV0ZVJXQ3VzdG9tCit7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBJTVBM
LT50ZXN0QXR0cmlidXRlUldDdXN0b20oKTsKK30KKworLSAodm9pZClzZXRUZXN0QXR0cmlidXRl
UldDdXN0b206KEJPT0wpbmV3VGVzdEF0dHJpYnV0ZVJXQ3VzdG9tCit7CisgICAgV2ViQ29yZTo6
SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPnNldFRlc3RBdHRyaWJ1dGVS
V0N1c3RvbShuZXdUZXN0QXR0cmlidXRlUldDdXN0b20pOworfQorCistICh2b2lkKXRlc3RGdW5j
dGlvbgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJ
TVBMLT50ZXN0RnVuY3Rpb24oKTsKK30KKworLSAodm9pZCl0ZXN0Q3VzdG9tRnVuY3Rpb24KK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+dGVz
dEN1c3RvbUZ1bmN0aW9uKCk7Cit9CisKIEBlbmQKIAogV2ViQ29yZTo6VGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yKiBjb3JlKERPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciAqd3JhcHBlcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q3VzdG9t
Q29uc3RydWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RDdXN0b21Db25zdHJ1Y3Rvci5pZGwKaW5kZXggZmQzYmM4NTc2YjAyMDA5NzQ5NjVlMDhjZmJk
N2ZmZjMxNTZmN2M2Yi4uM2FjMGNkMWE4YzViOTNmMDUyYzUxYmRkOGUwZjM3Mzk2NTE4YjYxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDdXN0
b21Db25zdHJ1Y3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RDdXN0b21Db25zdHJ1Y3Rvci5pZGwKQEAgLTI4LDYgKzI4LDcgQEAKIAogWwogICAg
IEN1c3RvbUNvbnN0cnVjdG9yLAorICAgIEpTQnVpbHRJbiwKICAgICBOb0ludGVyZmFjZU9iamVj
dAogXSBpbnRlcmZhY2UgVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
IHsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaWRsCmluZGV4IDZhMWYxZGRmYTE1
NmI0MTg2MmRlMDY2NTA3ODg5Yzg4OWJjMGNhNTAuLjFkZDkxOGU1ZTYxNDc4NmYxODI3ZGRkOTgy
NDU1ZmIyNDI5MDE5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuaWRsCkBAIC0y
Nyw3ICsyNywxNSBAQAogICovCiAKIFsKLSAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvcgorICAgIEpT
QnVpbHRpbiwKKyAgICBDb25zdHJ1Y3RvcgogXSBpbnRlcmZhY2UgVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yIHsKLX07CiAKKyAgICB2b2lkIHRlc3RGdW5jdGlvbigpOworICAgIGF0dHJpYnV0ZSBi
b29sZWFuIHRlc3RBdHRyaWJ1dGU7CisKKyAgICBbIEN1c3RvbSBdIHZvaWQgdGVzdEN1c3RvbUZ1
bmN0aW9uKCk7CisgICAgWyBDdXN0b21HZXR0ZXIgXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biB0ZXN0QXR0cmlidXRlQ3VzdG9tOworICAgIFsgQ3VzdG9tR2V0dGVyLCBDdXN0b21TZXR0ZXIg
XSBhdHRyaWJ1dGUgYm9vbGVhbiB0ZXN0QXR0cmlidXRlUldDdXN0b207CisKK307Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>