<?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>159298</bug_id>
          
          <creation_ts>2016-06-30 06:47:49 -0700</creation_ts>
          <short_desc>toNative functions in JSDOMBinding.h should take an ExecState reference instead of pointer</short_desc>
          <delta_ts>2016-07-11 09:26:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</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="Nael Ouedraogo">nael.ouedp</reporter>
          <assigned_to name="Nael Ouedraogo">nael.ouedp</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1206706</commentid>
    <comment_count>0</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-30 06:47:49 -0700</bug_when>
    <thetext>Modify toNative functions in JSDOMBinding.h to take an ExecState reference instead of pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206708</commentid>
    <comment_count>1</comment_count>
      <attachid>282435</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-30 06:54:32 -0700</bug_when>
    <thetext>Created attachment 282435
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206712</commentid>
    <comment_count>2</comment_count>
      <attachid>282438</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-30 07:07:45 -0700</bug_when>
    <thetext>Created attachment 282438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206724</commentid>
    <comment_count>3</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-06-30 07:52:21 -0700</bug_when>
    <thetext>This is a preliminary patch for Bug 158835 (c.f. Comment #10).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206751</commentid>
    <comment_count>4</comment_count>
      <attachid>282438</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-30 09:25:34 -0700</bug_when>
    <thetext>Comment on attachment 282438
Patch

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

&gt; Source/WebCore/bindings/js/JSBlobCustom.cpp:75
&gt; -    JSObject* blobParts = toJSSequence(exec, exec-&gt;argument(0), blobPartsLength);
&gt; +    JSObject* blobParts = toJSSequence(*exec, exec-&gt;argument(0), blobPartsLength);

There&apos;s no null check for exec in this method, so this seems bogus.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:480
&gt; -inline JSC::JSObject* toJSSequence(JSC::ExecState* exec, JSC::JSValue value, unsigned&amp; length)
&gt; +inline JSC::JSObject* toJSSequence(JSC::ExecState&amp; state, JSC::JSValue value, unsigned&amp; length)

I&apos;m not a fan of the rename.

We historically use &quot;exec&quot;, &quot;execState&quot; and &quot;state&quot; for execState variables.

While we would ideally choose one and stick with it, I think &quot;state&quot; is the worse because it&apos;s the most generic and vague.

Please leave it as &quot;exec&quot; or change to &quot;execState&quot; if you don&apos;t like exec for some reason.

&gt; Source/WebCore/bindings/js/JSDOMBinding.h:663
&gt; -    static inline bool nativeValue(JSC::ExecState* exec, JSC::JSValue jsValue, String&amp; indexedValue)
&gt; +    static inline bool nativeValue(JSC::ExecState&amp; state, JSC::JSValue jsValue, String&amp; indexedValue)

Same comment on the variable rename here, and everywhere else you might do it.

&gt; Source/WebCore/bindings/js/JSDictionary.cpp:156
&gt; -    JSObject* object = toJSSequence(exec, value, length);
&gt; +    JSObject* object = toJSSequence(*exec, value, length);

There&apos;s no null check for exec in this method, so this seems bogus.

&gt; Source/WebCore/bindings/js/JSDictionary.cpp:219
&gt; -    JSObject* object = toJSSequence(exec, value, length);
&gt; +    JSObject* object = toJSSequence(*exec, value, length);

There&apos;s no null check for exec in this method, so this seems bogus.

&gt; Source/WebCore/bindings/js/JSDictionary.cpp:287
&gt; -    JSObject* object = toJSSequence(exec, value, length);
&gt; +    JSObject* object = toJSSequence(*exec, value, length);

There&apos;s no null check for exec in this method, so this seems bogus.

&gt; Source/WebCore/bindings/js/JSFileCustom.cpp:55
&gt; -    JSObject* blobParts = toJSSequence(exec, arg, blobPartsLength);
&gt; +    JSObject* blobParts = toJSSequence(*exec, arg, blobPartsLength);

There&apos;s no null check for exec in this method, so this seems bogus.

Let&apos;s pretend I make the same comment everywhere you dereference exec and the method does&apos;t have a prior null check.

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp:458
&gt; -    auto x = toNativeArray&lt;int32_t&gt;(state, state-&gt;argument(0));
&gt; +    auto x = toNativeArray&lt;int32_t&gt;(*state, state-&gt;argument(0));

And I meant that everywhere, including in &quot;test only&quot; code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206752</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-30 09:33:48 -0700</bug_when>
    <thetext>Note that an eventual goal is that we&apos;re never passing ExecState*&apos;s around in bindings code at all. This is an intermediate step along that path. The null checks will eventually be unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206757</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-30 10:02:50 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 282438 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=282438&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSBlobCustom.cpp:75
&gt; &gt; -    JSObject* blobParts = toJSSequence(exec, exec-&gt;argument(0), blobPartsLength);
&gt; &gt; +    JSObject* blobParts = toJSSequence(*exec, exec-&gt;argument(0), blobPartsLength);
&gt; 
&gt; There&apos;s no null check for exec in this method, so this seems bogus.

constructJSBlob should actually take an ExecState reference not a pointer.
Migrating to ExecState references needs to start somewhere so this patch seems to go in the right direction to me.
As of the null check, I guess an ASSERT(exec) at the beginning of the function would be good enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206787</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-30 11:23:30 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Comment on attachment 282438 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=282438&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/JSBlobCustom.cpp:75
&gt; &gt; &gt; -    JSObject* blobParts = toJSSequence(exec, exec-&gt;argument(0), blobPartsLength);
&gt; &gt; &gt; +    JSObject* blobParts = toJSSequence(*exec, exec-&gt;argument(0), blobPartsLength);
&gt; &gt; 
&gt; &gt; There&apos;s no null check for exec in this method, so this seems bogus.
&gt; 
&gt; constructJSBlob should actually take an ExecState reference not a pointer.
&gt; Migrating to ExecState references needs to start somewhere 

That was the crux of https://bugs.webkit.org/show_bug.cgi?id=159298#c5

&gt; so this patch seems to go in the right direction to me.

Sure, me too.

&gt; As of the null check, I guess an ASSERT(exec) at the beginning of the
&gt; function would be good enough.

Let&apos;s pretend that Nael lands this patch, then immediately no longer has time to work on this task, and nobody else has time either.

So we&apos;re left with this patch in the tree for some time.

In that scenario, I&apos;d rather see a proper null check along with signaling an error condition, wherever that is possible. (There&apos;s at least a few places where it is.)

Elsewhere, an ASSERT would be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206791</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-30 11:45:26 -0700</bug_when>
    <thetext>&gt; &gt; constructJSBlob should actually take an ExecState reference not a pointer.
&gt; &gt; Migrating to ExecState references needs to start somewhere 
&gt; 
&gt; That was the crux of https://bugs.webkit.org/show_bug.cgi?id=159298#c5

FWIW, I used ASSERT() for JS builtin constructors in JSDOMConstructor.h
IIRC, passing an ExecState&amp; to constructors requires changes in JSC. Maybe not complex but probably quite some edit changes to be done in one step.

A good step forward for WebCore might be to update the binding generator to pass an ExecState&amp; for custom constructors. The binding generator would actually generate the ASSERT() just before calling the constructXX function.

Nael, wdyt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207182</commentid>
    <comment_count>9</comment_count>
      <attachid>282559</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-07-01 10:12:07 -0700</bug_when>
    <thetext>Created attachment 282559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1207185</commentid>
    <comment_count>10</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-07-01 10:13:18 -0700</bug_when>
    <thetext>Thanks for the reviews.

Since the final goal is to pass ExecState reference in bindings code, using ASSERT() as interim solution seems good to me.

In the uploaded patch, I added assertions to check exec is not null when it is dereferenced.
To avoid a lot of modifications in this patch, I added a follow-up bug for the update of JS binding code generator for Custom Constructor (Bug 159357).
I will update this patch once Bug 159357 is resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209656</commentid>
    <comment_count>11</comment_count>
      <attachid>283317</attachid>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-07-11 07:58:28 -0700</bug_when>
    <thetext>Created attachment 283317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209657</commentid>
    <comment_count>12</comment_count>
    <who name="Nael Ouedraogo">nael.ouedp</who>
    <bug_when>2016-07-11 08:05:48 -0700</bug_when>
    <thetext>Bug 159357 is now resolved: ExecState is passed by reference to custom constructors and so null checks are not needed anymore. 

ASSERT() is added in JSDictionary::convertValue() methods which use toJSequence() to check exec is not null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209677</commentid>
    <comment_count>13</comment_count>
      <attachid>283317</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-11 09:26:45 -0700</bug_when>
    <thetext>Comment on attachment 283317
Patch

Clearing flags on attachment: 283317

Committed r203065: &lt;http://trac.webkit.org/changeset/203065&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209678</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-11 09:26:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282435</attachid>
            <date>2016-06-30 06:54:32 -0700</date>
            <delta_ts>2016-06-30 07:07:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159298-20160630155411.patch</filename>
            <type>text/plain</type>
            <size>29044</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA4Zjg2NGUyMGIwMTFj
ZGE5MmIyZmU4N2RjMTQzYjk4YjQzMTVlOS4uNjcyNmQ0MmU2YzM4MjM1YzI1MTg2ZjA4ZTI4MDEw
NTA5MjBhMDJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE2LTA2LTMwICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICBNb2Rp
ZnkgdG9OYXRpdmUgZnVuY3Rpb25zIGluIEpTRE9NQmluZGluZy5oIHRvIHRha2UgYW4gRXhlY1N0
YXRlIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgRXhlY1N0YXRlIGJ5IHJlZmVyZW5jZSBpbnN0
ZWFkIG9mIHBvaW50ZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlkYktleVBhdGhGcm9tVmFsdWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25z
dHJ1Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBQYXNz
IEV4ZWNTdGF0ZSBieSByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBwb2ludGVyLgorICAg
ICAgICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZh
bHVlVHJhaXRzPFN0cmluZz46Om5hdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2
ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPjo6bmF0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
TmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOYXRpdmVWYWx1ZVRyYWl0czxkb3VibGU+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjp0b05hdGl2ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJndW1lbnRz
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnZlcnRlcjxWZWN0b3I8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252
ZXJ0VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
TWVzc2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lc3NhZ2VQb3J0
QXJyYXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgor
ICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoSlNWYWx1ZVRvTmF0
aXZlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kMTApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhv
dXROdWxsYWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNl
cXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3Ry
aWN0RnVuY3Rpb25XaXRoQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
NSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5j
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxs
YWJsZUFycmF5QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMik6CisKIDIwMTYtMDYt
MzAgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFB1
cmdlIFBhc3NSZWZQdHIgaW4gTW9kdWxlcy93ZWJkYXRhYmFzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBlZDIxOWUwMjA3
MDI0YzAwOWJmZTVkOGM3MjlmZDhkYWRmOGI3ZWVjLi5iOTM0YTNmYTA4ZWI0YTdkY2NiNzc3MDI2
MThhYmQ4M2NmYjk0ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIElEQktleVBhdGggaWRi
S2V5UGF0aEZyb21WYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUga2V5UGF0aFZhbHVlKQog
ewogICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBpZiAoaXNKU0FycmF5KGtleVBhdGhWYWx1
ZSkpCi0gICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKHRvTmF0aXZlQXJyYXk8U3RyaW5nPigm
ZXhlYywga2V5UGF0aFZhbHVlKSk7CisgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKHRvTmF0
aXZlQXJyYXk8U3RyaW5nPihleGVjLCBrZXlQYXRoVmFsdWUpKTsKICAgICBlbHNlCiAgICAgICAg
IGtleVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhWYWx1ZS50b1dURlN0cmluZygmZXhlYykpOwog
ICAgIHJldHVybiBrZXlQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCbG9iQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1
c3RvbS5jcHAKaW5kZXggYTkzMzU4NzJhMmJlOTAxMmFhZWRiMmIwOTQ3NDUxNDcwMDRmMTdlOS4u
MTZhOWZiN2U5MjYzNzkwNGRjNGQzNTI3ZWRkM2IwOWEyMTgzZjNhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCkBAIC03Miw3ICs3Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB9CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5ndGggPSAwOwotICAgIEpTT2JqZWN0
KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGJsb2JQ
YXJ0c0xlbmd0aCk7CisgICAgSlNPYmplY3QqIGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZSgqZXhl
YywgZXhlYy0+YXJndW1lbnQoMCksIGJsb2JQYXJ0c0xlbmd0aCk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIEFTU0VSVChibG9iUGFydHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaAppbmRleCBjNjJkYmIyYjhlZTEwOWQ3ZmQ4ZGY3MDY0Y2Q4M2U4OTMxYWQ3
OGU5Li42OTUyZDRlNDY2MjMyYTA1YTlkZDcyZjcyODExNzNiNjQ1ZTE3Y2JhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIEpT
Qzo6SlNWYWx1ZSBqc0RhdGVPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBkb3VibGUpOwogZG91Ymxl
IHZhbHVlVG9EYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gVmFsaWRh
dGVzIHRoYXQgdGhlIHBhc3NlZCBvYmplY3QgaXMgYSBzZXF1ZW5jZSB0eXBlIHBlciBzZWN0aW9u
IDQuMS4xMyBvZiB0aGUgV2ViSURMIHNwZWMuCi1KU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2Uo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpOworSlNDOjpK
U09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCB1bnNp
Z25lZCYgbGVuZ3RoKTsKIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RP
TUdsb2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpT
Qzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyVmlldyop
OwpAQCAtMjgyLDggKzI4Miw4IEBAIFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9GbG9hdDMy
QXJyYXkoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxKU0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0
QXJyYXkoSlNDOjpKU1ZhbHVlKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNU
eXBlPiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU1ZhbHVlLCBUKiAoKikoSlNDOjpKU1ZhbHVlKSk7Ci10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlND
OjpFeGVjU3RhdGUqLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApOwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6
RXhlY1N0YXRlJiwgc2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsKIAogYm9vbCBzaG91bGRBbGxvd0Fj
Y2Vzc1RvTm9kZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKIGJvb2wgc2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqKTsKQEAgLTQ3NywyNSArNDc3LDI1IEBA
IGlubGluZSBpbnQzMl90IGZpbml0ZUludDMyVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgYm9vbCYKIH0KIAogLy8gVmFsaWRhdGVzIHRoYXQgdGhlIHBhc3Nl
ZCBvYmplY3QgaXMgYSBzZXF1ZW5jZSB0eXBlIHBlciBzZWN0aW9uIDQuMS4xMyBvZiB0aGUgV2Vi
SURMIHNwZWMuCi1pbmxpbmUgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0
YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpCitpbmxpbmUg
SlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpK
U1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogewogICAgIEpTQzo6SlNPYmplY3QqIG9i
amVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVy
cm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgSlNDOjpK
U1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIEpTQzo6SlNW
YWx1ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgc3RhdGUucHJvcGVydHlOYW1l
cygpLmxlbmd0aCk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAgICAgICB0aHJvd1Nl
cXVlbmNlVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
Ci0gICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVUludDMyKCZzdGF0
ZSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIHJldHVybiBvYmplY3Q7CkBAIC02NjAsMjEgKzY2MCwyMSBAQCBpbmxpbmUgUmVm
UHRyPEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUp
IHsgcmV0dXJuIEpTQwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJh
aXRzOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAg
ICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
anNWYWx1ZSwgU3RyaW5nJiBpbmRleGVkVmFsdWUpCiAgICAgewotICAgICAgICBpbmRleGVkVmFs
dWUgPSBqc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBpbmRleGVkVmFsdWUgPSBq
c1ZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7Ci0g
ICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMg
aW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFs
dWUganNWYWx1ZSwgdW5zaWduZWQmIGluZGV4ZWRWYWx1ZSkKICAgICB7CiAgICAgICAgIGlmICgh
anNWYWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9VSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b1VJbnQz
Migmc3RhdGUpOworICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02ODIsMTggKzY4Miwx
OCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewogfTsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0
aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlLCBmbG9hdCYgaW5kZXhlZFZhbHVlKQorICAgIHN0YXRpYyBpbmxpbmUgYm9v
bCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVl
LCBmbG9hdCYgaW5kZXhlZFZhbHVlKQogICAgIHsKLSAgICAgICAgaW5kZXhlZFZhbHVlID0ganNW
YWx1ZS50b0Zsb2F0KGV4ZWMpOwotICAgICAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlvbigp
OworICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvRmxvYXQoJnN0YXRlKTsKKyAgICAg
ICAgcmV0dXJuICFzdGF0ZS5oYWRFeGNlcHRpb24oKTsKICAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxkb3VibGU+IHsKLSAgICBzdGF0aWMgaW5saW5lIGJv
b2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVl
LCBkb3VibGUmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFs
dWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZG91YmxlJiBp
bmRleGVkVmFsdWUpCiAgICAgewotICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvTnVt
YmVyKGV4ZWMpOwotICAgICAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOworICAgICAg
ICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvTnVtYmVyKCZzdGF0ZSk7CisgICAgICAgIHJldHVy
biAhc3RhdGUuaGFkRXhjZXB0aW9uKCk7CiAgICAgfQogfTsKIApAQCAtNzE4LDcgKzcxOCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gVmVjdG9yPFJlZlB0cjxUPj4gdG9S
ZWZQdHJOYXRpdmVBcnJheShKU0M6OkV4CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0
b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlm
ICghb2JqZWN0KQpAQCAtNzI5LDcgKzcyOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3Rv
cjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUKICAg
ICAgICAgSlNDOjpKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOwogICAgICAgICBsZW5n
dGggPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHRvSlNTZXF1ZW5jZShl
eGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgdG9KU1NlcXVlbmNlKHN0YXRlLCB2YWx1ZSwg
bGVuZ3RoKTsKIAogICAgIFZlY3RvcjxUPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkobGVuZ3RoKTsKQEAgLTczNywxNiArNzM3LDE2IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewog
ICAgICAgICBUIGluZGV4VmFsdWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFs
dWUoZXhlYywgb2JqZWN0LT5nZXQoZXhlYywgaSksIGluZGV4VmFsdWUpKQorICAgICAgICBpZiAo
IVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIGkpLCBp
bmRleFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4oKTsKICAgICAgICAgcmVz
dWx0LnVuY2hlY2tlZEFwcGVuZChpbmRleFZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRz
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IHNpemVfdCBzdGFydEluZGV4KQogewotICAgIHNpemVfdCBsZW5ndGggPSBleGVjLT5hcmd1bWVu
dENvdW50KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAg
ICBBU1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwogCiAgICAgVmVjdG9yPFQ+IHJlc3VsdDsK
QEAgLTc1NSw3ICs3NTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRp
dmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBzdAogCiAgICAgZm9yIChz
aXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUIGluZGV4
VmFsdWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoZXhlYywgZXhlYy0+
YXJndW1lbnQoaSksIGluZGV4VmFsdWUpKQorICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2
ZVZhbHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudChpKSwgaW5kZXhWYWx1ZSkpCiAgICAgICAgICAg
ICByZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoaW5k
ZXhWYWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQu
aAppbmRleCAzYWZhOGJlYTdhMTQzMmNhOTljYjczZGYwYzYwNDQzNTJmYzAwMmE1Li4wODI0MWZk
ZGFkMTVkYzRiNWVhZjRjYWNlZjcyYjgyYWYwYzU5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUNvbnZlcnQuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VmVjdG9yPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8VmVj
dG9yPFQ+PiB7CiAgICAgc3RhdGljIFZlY3RvcjxUPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoZSB0
b05hdGl2ZUFycmF5IGZ1bmN0aW9uIGRvZXNuJ3QgdGhyb3cgYSB0eXBlIGVycm9yIGlmIHRoZSB2
YWx1ZSBpcyBub3QgYW4gb2JqZWN0LiBJcyB0aGF0IE9LPwotICAgICAgICByZXR1cm4gdG9OYXRp
dmVBcnJheTxUPigmc3RhdGUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8
VD4oc3RhdGUsIHZhbHVlKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEaWN0aW9uYXJ5LmNwcAppbmRleCA3YzQ4NDhkNjg0OTBjZTI3ODZhZTdjM2MxZGFhYzZj
MzgxOTIyMDRmLi4zNjBlODZjMGQ0MDRkZjhkMWIxMTU3MzVlOTg0MjJlNWIzYzdhZWRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTE1Myw3ICsx
NTMsNyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIHJldHVybjsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShl
eGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNl
KCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpj
b252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBIYXNoU2V0PEF0b21p
Y1N0CiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNP
YmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjg0LDcg
KzI4NCw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lCiAgICAgICAgIHJldHVybjsKIAogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5j
ZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVl
bmNlKCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNGaWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1
c3RvbS5jcHAKaW5kZXggY2Y3NWQyNTY2NTQyNGY4NGNkZjE4NTBkOTcxNjgwMDIxODg1YjQ5Ny4u
Y2ZiNTdmNDM0MTBkNDYzNmRkNmE2N2NhNGE1OGNjOWJhYmFjMjAzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCkBAIC01Miw3ICs1Miw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNGaWxlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IkZpcnN0IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHNlcXVl
bmNlLCB3YXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNM
ZW5ndGggPSAwOwotICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywg
YXJnLCBibG9iUGFydHNMZW5ndGgpOworICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2Vx
dWVuY2UoKmV4ZWMsIGFyZywgYmxvYlBhcnRzTGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgQVNTRVJUKGJsb2JQYXJ0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDVhZmJjZDAwNjM3ZjVmMTk0OGE5Yjdk
ZmJiMGIxYTdhYjJmNzA2ZTkuLjM1MTI4Y2UwZjgxNjNjNzBlOWNiZDFhMDQ4ZmZiMTVkODI4NmVh
M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0CiAKICAg
ICAvLyBWYWxpZGF0aW9uIG9mIHNlcXVlbmNlIHR5cGVzLCBwZXIgV2ViSURMIHNwZWMgNC4xLjEz
LgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNT
ZXF1ZW5jZSgmc3RhdGUsIHZhbHVlLCBsZW5ndGgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0
b0pTU2VxdWVuY2Uoc3RhdGUsIHZhbHVlLCBsZW5ndGgpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDA0NmU5M2UxMGQ0Y2ZiNTM0NmMx
NjkzMWJiZWU2YTc4Y2M0MmUzYTEuLmJhMzRmYTg1ODI5MDk1MzE4NzRjNzVmNThlZDlkMzYzODlj
MDY2M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0zNzA5LDcgKzM3MDksNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1l
LnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5h
bWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KHN0YXRlLCAkYXJndW1l
bnRJbmRleCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
VmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0
aXZlRWxlbWVudFR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAg
ICAgICB9CkBAIC00NDI2LDcgKzQ0MjYsNyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKICAg
ICAgICAgICAgIHJldHVybiAoIih0b1JlZlB0ck5hdGl2ZUFycmF5PCR7YXJyYXlPclNlcXVlbmNl
VHlwZX0sIEpTJHthcnJheU9yU2VxdWVuY2VUeXBlfT4oc3RhdGUsICR2YWx1ZSwgJkpTJHthcnJh
eU9yU2VxdWVuY2VUeXBlfTo6dG9XcmFwcGVkKSkiLCAxKTsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gKCJ0b05hdGl2ZUFycmF5PCIgLiBHZXROYXRpdmVWZWN0b3JJbm5lclR5cGUoJGFycmF5
T3JTZXF1ZW5jZVR5cGUpIC4gIj4oc3RhdGUsICR2YWx1ZSkiLCAxKTsKKyAgICAgICAgcmV0dXJu
ICgidG9OYXRpdmVBcnJheTwiIC4gR2V0TmF0aXZlVmVjdG9ySW5uZXJUeXBlKCRhcnJheU9yU2Vx
dWVuY2VUeXBlKSAuICI+KCpzdGF0ZSwgJHZhbHVlKSIsIDEpOwogICAgIH0KIAogICAgIHJldHVy
biAoJHZhbHVlLCAwKSBpZiAkdHlwZSBlcSAiYW55IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggN2I0NDUwZTE1
MTQ3OTRhZmViZGFlMzY2MzMwZmY2NTE3NjMyZDk4ZS4uMjljZGM5MTg5MjgxZDNkMjVlMzlkZDQ1
ZGFhZjBlYmU1M2FlNjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ4NTEsNyArNDg1MSw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTZXF1ZW5jCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0
YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwogICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBzZXF1ZW5jZSA9
IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBh
dXRvIHNlcXVlbmNlID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoc2VxdWVuY2UpKTsKQEAgLTQ5MjYsNyArNDky
Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcnJheShFCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcnJheSIpOwog
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZv
KCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBh
cnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1Vu
ZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJyYXkoV1RG
TW92ZShhcnJheSkpOwpAQCAtNDk0MSw3ICs0OTQxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5
SXMKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwg
Im1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8
U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIGFycmF5ID0gdG9O
YXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFycmF5
SXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7CkBAIC01MzI0LDcgKzUzMjQsNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDcoRXhlY1N0YQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3Rh
dGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0
cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7
CkBAIC01MzU4LDcgKzUzNTgsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoRXhlY1N0YQogICAgIGF1dG8m
IGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5h
cmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJn
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAg
IGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3Zl
cmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01Mzc1LDcgKzUzNzUsNyBAQCBz
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDEwKEV4ZWNTdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJf
dD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0
aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92
ZShhcnJheUFyZykpOwpAQCAtNTYyMSw3ICs1NjIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdT
ZXEKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Ci0gICAg
YXV0byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KHN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdW5zaWduZWRMb25nU2VxdWVuY2UgPSB0
b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UoV1RGTW92ZSh1bnNpZ25lZExvbmdTZXF1ZW5jZSkpOwpAQCAtNTYzOSw3ICs1
NjM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRl
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxT
dHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0cmluZ0FycmF5RnVuY3Rpb24oV1RGTW92ZSh2YWx1
ZXMpLCBlYykpOwpAQCAtNTY4MCwxMCArNTY4MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxs
YQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBh
dXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKLSAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pihz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0
b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91
dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdURk1vdmUobnVsbGFibGVBcnJh
eUFyZykpOwpAQCAtNTcwMCwxMCArNTcwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRv
IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90PihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05h
dGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91dE51
bGxhYmxlU2VxdWVuY2UyKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlB
cmcpKTsKQEAgLTU4ODksNyArNTg4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAg
ICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3Vt
ZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0
aW9uV2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoiKTsKICAgICB9Ci0gICAgYXV0byBhID0gdG9OYXRp
dmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgYXV0byBh
ID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwog
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNC
b29sZWFuKGltcGwuc3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2Uob2JqQXJnLCBXVEZNb3ZlKGEp
LCBlYykpOwpAQCAtNTkxMiw3ICs1OTEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAg
ICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVu
dFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlv
bldpdGhBcnJheSIsICJUZXN0T2JqIik7Ci0gICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8
aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgYXV0byBhcnJheSA9IHRv
TmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KGltcGwuc3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoKm9iakFyZywgV1RGTW92ZShhcnJheSksIGVj
KSk7CkBAIC01OTM0LDcgKzU5MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGF1
dG8gaGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0
aXZlQXJndW1lbnRzPFN0cmluZz4oc3RhdGUsIDEpOworICAgIFZlY3RvcjxTdHJpbmc+IHRhaWwg
PSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KCpzdGF0ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhl
YWQpLCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTU5NTQsNyArNTk1NCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1l
dGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8ZG91YmxlPiB0YWlsID0gdG9OYXRpdmVBcmd1
bWVudHM8ZG91YmxlPihzdGF0ZSwgMSk7CisgICAgVmVjdG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0
aXZlQXJndW1lbnRzPGRvdWJsZT4oKnN0YXRlLCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdU
Rk1vdmUodGFpbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCmluZGV4IDU5Mjg5MzU3YzkxZDg3ZDJiNjNjNzJlOTJlYTFjYmM3ODE4NTFhYjAuLjFmYTFl
ZGFkNzhiZDQ4ZjUzYWVhNDllMDliNmEyN2I5MjlhMDBmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM0KEV4ZWNTdGF0ZSogcwogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0
cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKLSAgICBWZWN0b3I8aW50MzJfdD4gbG9uZ0FyZ3Mg
PSB0b05hdGl2ZUFyZ3VtZW50czxpbnQzMl90PihzdGF0ZSwgMCk7CisgICAgVmVjdG9yPGludDMy
X3Q+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50MzJfdD4oKnN0YXRlLCAwKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUobG9uZ0FyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
aW5kZXggNDdlNzUzMDQyODRiNGQ0Njg2MmVmNjY0YTJjOWZmZjYyOTk2MzUwNy4uODJlOGY5MTA1
OTBjN2M1NDZiYmYwZGMwMzNlNTVlMTQ0OGQzYWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBA
IC00NTUsNyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXQKICAgICAgICAgcmV0dXJu
IHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6Omlu
Zm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRv
IHggPSB0b05hdGl2ZUFycmF5PGludDMyX3Q+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwor
ICAgIGF1dG8geCA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwuZnVuYyhX
VEZNb3ZlKHgpKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRv
IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9u
KCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
IGltcGwubnVsbGFibGVBcnJheUFyZyhXVEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01NjgsNyArNTY4
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0cmluZ0FycmF5RnVuY3Rpb24oV1RGTW92ZSh2YWx1ZXMp
LCBlYykpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHZhbHVl
cyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0Fy
cmF5KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5zdHJpbmdBcnJheUZ1
bmN0aW9uMihXVEZNb3ZlKHZhbHVlcyksIGVjKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282438</attachid>
            <date>2016-06-30 07:07:45 -0700</date>
            <delta_ts>2016-07-01 10:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159298-20160630160724.patch</filename>
            <type>text/plain</type>
            <size>29041</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzA4Zjg2NGUyMGIwMTFj
ZGE5MmIyZmU4N2RjMTQzYjk4YjQzMTVlOS4uYzVlY2MwODQ4YjdmOTZjYmJmYzVmZTY4OTFlZTA0
MjNiNjZmMDljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE2LTA2LTMwICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICB0b05h
dGl2ZSBmdW5jdGlvbnMgaW4gSlNET01CaW5kaW5nLmggc2hvdWxkIHRha2UgYW4gRXhlY1N0YXRl
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgRXhlY1N0YXRlIGJ5IHJlZmVyZW5jZSBpbnN0ZWFk
IG9mIHBvaW50ZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlkYktleVBhdGhGcm9tVmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBQYXNzIEV4
ZWNTdGF0ZSBieSByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZhbHVl
VHJhaXRzPFN0cmluZz46Om5hdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZh
bHVlVHJhaXRzPHVuc2lnbmVkPjo6bmF0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVWYWx1ZVRyYWl0czxkb3VibGU+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b05hdGl2ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJndW1lbnRzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnZlcnRlcjxWZWN0b3I8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0
VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lc3NhZ2VQb3J0QXJy
YXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kMTApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXRO
dWxsYWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVl
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0
RnVuY3Rpb25XaXRoQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZUFycmF5QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMik6CisKIDIwMTYtMDYtMzAg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFB1cmdl
IFBhc3NSZWZQdHIgaW4gTW9kdWxlcy93ZWJkYXRhYmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBlZDIxOWUwMjA3MDI0
YzAwOWJmZTVkOGM3MjlmZDhkYWRmOGI3ZWVjLi5iOTM0YTNmYTA4ZWI0YTdkY2NiNzc3MDI2MThh
YmQ4M2NmYjk0ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJC
aW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIElEQktleVBhdGggaWRiS2V5
UGF0aEZyb21WYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUga2V5UGF0aFZhbHVlKQogewog
ICAgIElEQktleVBhdGgga2V5UGF0aDsKICAgICBpZiAoaXNKU0FycmF5KGtleVBhdGhWYWx1ZSkp
Ci0gICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKHRvTmF0aXZlQXJyYXk8U3RyaW5nPigmZXhl
Yywga2V5UGF0aFZhbHVlKSk7CisgICAgICAgIGtleVBhdGggPSBJREJLZXlQYXRoKHRvTmF0aXZl
QXJyYXk8U3RyaW5nPihleGVjLCBrZXlQYXRoVmFsdWUpKTsKICAgICBlbHNlCiAgICAgICAgIGtl
eVBhdGggPSBJREJLZXlQYXRoKGtleVBhdGhWYWx1ZS50b1dURlN0cmluZygmZXhlYykpOwogICAg
IHJldHVybiBrZXlQYXRoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCbG9iQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3Rv
bS5jcHAKaW5kZXggYTkzMzU4NzJhMmJlOTAxMmFhZWRiMmIwOTQ3NDUxNDcwMDRmMTdlOS4uMTZh
OWZiN2U5MjYzNzkwNGRjNGQzNTI3ZWRkM2IwOWEyMTgzZjNhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCkBAIC03Miw3ICs3Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICB9CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5ndGggPSAwOwotICAgIEpTT2JqZWN0KiBi
bG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgZXhlYy0+YXJndW1lbnQoMCksIGJsb2JQYXJ0
c0xlbmd0aCk7CisgICAgSlNPYmplY3QqIGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZSgqZXhlYywg
ZXhlYy0+YXJndW1lbnQoMCksIGJsb2JQYXJ0c0xlbmd0aCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIEFTU0VSVChibG9iUGFydHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuaAppbmRleCBjNjJkYmIyYjhlZTEwOWQ3ZmQ4ZGY3MDY0Y2Q4M2U4OTMxYWQ3OGU5
Li42OTUyZDRlNDY2MjMyYTA1YTlkZDcyZjcyODExNzNiNjQ1ZTE3Y2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaApAQCAtMjQ3LDcgKzI0Nyw3IEBAIEpTQzo6
SlNWYWx1ZSBqc0RhdGVPck51bGwoSlNDOjpFeGVjU3RhdGUqLCBkb3VibGUpOwogZG91YmxlIHZh
bHVlVG9EYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKIAogLy8gVmFsaWRhdGVz
IHRoYXQgdGhlIHBhc3NlZCBvYmplY3QgaXMgYSBzZXF1ZW5jZSB0eXBlIHBlciBzZWN0aW9uIDQu
MS4xMyBvZiB0aGUgV2ViSURMIHNwZWMuCi1KU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpOworSlNDOjpKU09i
amVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25l
ZCYgbGVuZ3RoKTsKIAogSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUds
b2JhbE9iamVjdCosIEpTQzo6QXJyYXlCdWZmZXIqKTsKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6
RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyVmlldyopOwpA
QCAtMjgyLDggKzI4Miw4IEBAIFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4gdG9GbG9hdDMyQXJy
YXkoSlNDOjpKU1ZhbHVlKTsKIFJlZlB0cjxKU0M6OkZsb2F0NjRBcnJheT4gdG9GbG9hdDY0QXJy
YXkoSlNDOjpKU1ZhbHVlKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSlNUeXBl
PiBWZWN0b3I8UmVmUHRyPFQ+PiB0b1JlZlB0ck5hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBUKiAoKikoSlNDOjpKU1ZhbHVlKSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpF
eGVjU3RhdGUqLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApOwordGVtcGxhdGU8dHlwZW5hbWUgVD4g
VmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpOwor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhl
Y1N0YXRlJiwgc2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsKIAogYm9vbCBzaG91bGRBbGxvd0FjY2Vz
c1RvTm9kZShKU0M6OkV4ZWNTdGF0ZSosIE5vZGUqKTsKIGJvb2wgc2hvdWxkQWxsb3dBY2Nlc3NU
b0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiwgRnJhbWUqKTsKQEAgLTQ3NywyNSArNDc3LDI1IEBAIGlu
bGluZSBpbnQzMl90IGZpbml0ZUludDMyVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlLCBKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgYm9vbCYKIH0KIAogLy8gVmFsaWRhdGVzIHRoYXQgdGhlIHBhc3NlZCBv
YmplY3QgaXMgYSBzZXF1ZW5jZSB0eXBlIHBlciBzZWN0aW9uIDQuMS4xMyBvZiB0aGUgV2ViSURM
IHNwZWMuCi1pbmxpbmUgSlNDOjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpCitpbmxpbmUgSlND
OjpKU09iamVjdCogdG9KU1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogewogICAgIEpTQzo6SlNPYmplY3QqIG9iamVj
dCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIHRocm93
U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9y
KHN0YXRlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgSlNDOjpKU1Zh
bHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgIEpTQzo6SlNWYWx1
ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0KCZzdGF0ZSwgc3RhdGUucHJvcGVydHlOYW1lcygp
Lmxlbmd0aCk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0g
ICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAgICAgICB0aHJvd1NlcXVl
bmNlVHlwZUVycm9yKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0g
ICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9VSW50MzIoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQorICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVUludDMyKCZzdGF0ZSk7
CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIHJldHVybiBvYmplY3Q7CkBAIC02NjAsMjEgKzY2MCwyMSBAQCBpbmxpbmUgUmVmUHRy
PEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUgdmFsdWUpIHsg
cmV0dXJuIEpTQwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz
OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxTdHJpbmc+IHsKLSAgICBz
dGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5saW5l
IGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUganNW
YWx1ZSwgU3RyaW5nJiBpbmRleGVkVmFsdWUpCiAgICAgewotICAgICAgICBpbmRleGVkVmFsdWUg
PSBqc1ZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1Zh
bHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07
CiAKIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7Ci0gICAg
c3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5s
aW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
anNWYWx1ZSwgdW5zaWduZWQmIGluZGV4ZWRWYWx1ZSkKICAgICB7CiAgICAgICAgIGlmICghanNW
YWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlu
ZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9VSW50MzIoZXhlYyk7Ci0gICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b1VJbnQzMigm
c3RhdGUpOworICAgICAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02ODIsMTggKzY4MiwxOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewogfTsKIAog
dGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMg
aW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlLCBmbG9hdCYgaW5kZXhlZFZhbHVlKQorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBu
YXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBm
bG9hdCYgaW5kZXhlZFZhbHVlKQogICAgIHsKLSAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1
ZS50b0Zsb2F0KGV4ZWMpOwotICAgICAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOwor
ICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvRmxvYXQoJnN0YXRlKTsKKyAgICAgICAg
cmV0dXJuICFzdGF0ZS5oYWRFeGNlcHRpb24oKTsKICAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxkb3VibGU+IHsKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wg
bmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBk
b3VibGUmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZG91YmxlJiBpbmRl
eGVkVmFsdWUpCiAgICAgewotICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvTnVtYmVy
KGV4ZWMpOwotICAgICAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOworICAgICAgICBp
bmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvTnVtYmVyKCZzdGF0ZSk7CisgICAgICAgIHJldHVybiAh
c3RhdGUuaGFkRXhjZXB0aW9uKCk7CiAgICAgfQogfTsKIApAQCAtNzE4LDcgKzcxOCw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gVmVjdG9yPFJlZlB0cjxUPj4gdG9SZWZQ
dHJOYXRpdmVBcnJheShKU0M6OkV4CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05h
dGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewog
ICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICgh
b2JqZWN0KQpAQCAtNzI5LDcgKzcyOSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxU
PiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUKICAgICAg
ICAgSlNDOjpKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodmFsdWUpOwogICAgICAgICBsZW5ndGgg
PSBhcnJheS0+bGVuZ3RoKCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHRvSlNTZXF1ZW5jZShleGVj
LCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICAgICAgdG9KU1NlcXVlbmNlKHN0YXRlLCB2YWx1ZSwgbGVu
Z3RoKTsKIAogICAgIFZlY3RvcjxUPiByZXN1bHQ7CiAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkobGVuZ3RoKTsKQEAgLTczNywxNiArNzM3LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpT
VmFsdWUKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICBUIGluZGV4VmFsdWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUo
ZXhlYywgb2JqZWN0LT5nZXQoZXhlYywgaSksIGluZGV4VmFsdWUpKQorICAgICAgICBpZiAoIVRy
YWl0c1R5cGU6Om5hdGl2ZVZhbHVlKHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIGkpLCBpbmRl
eFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4oKTsKICAgICAgICAgcmVzdWx0
LnVuY2hlY2tlZEFwcGVuZChpbmRleFZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpT
Qzo6RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCkKK3RlbXBsYXRlPHR5cGVuYW1l
IFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHNp
emVfdCBzdGFydEluZGV4KQogewotICAgIHNpemVfdCBsZW5ndGggPSBleGVjLT5hcmd1bWVudENv
dW50KCk7CisgICAgc2l6ZV90IGxlbmd0aCA9IHN0YXRlLmFyZ3VtZW50Q291bnQoKTsKICAgICBB
U1NFUlQoc3RhcnRJbmRleCA8PSBsZW5ndGgpOwogCiAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKQEAg
LTc1NSw3ICs3NTUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVB
cmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHNpemVfdCBzdAogCiAgICAgZm9yIChzaXpl
X3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUIGluZGV4VmFs
dWU7Ci0gICAgICAgIGlmICghVHJhaXRzVHlwZTo6bmF0aXZlVmFsdWUoZXhlYywgZXhlYy0+YXJn
dW1lbnQoaSksIGluZGV4VmFsdWUpKQorICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZh
bHVlKHN0YXRlLCBzdGF0ZS5hcmd1bWVudChpKSwgaW5kZXhWYWx1ZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gVmVjdG9yPFQ+KCk7CiAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoaW5kZXhW
YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaApp
bmRleCAzYWZhOGJlYTdhMTQzMmNhOTljYjczZGYwYzYwNDQzNTJmYzAwMmE1Li4wODI0MWZkZGFk
MTVkYzRiNWVhZjRjYWNlZjcyYjgyYWYwYzU5NDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUNvbnZlcnQuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBDb252ZXJ0ZXI8VmVjdG9yPFQ+PiA6IERlZmF1bHRDb252ZXJ0ZXI8VmVjdG9y
PFQ+PiB7CiAgICAgc3RhdGljIFZlY3RvcjxUPiBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoZSB0b05h
dGl2ZUFycmF5IGZ1bmN0aW9uIGRvZXNuJ3QgdGhyb3cgYSB0eXBlIGVycm9yIGlmIHRoZSB2YWx1
ZSBpcyBub3QgYW4gb2JqZWN0LiBJcyB0aGF0IE9LPwotICAgICAgICByZXR1cm4gdG9OYXRpdmVB
cnJheTxUPigmc3RhdGUsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8VD4o
c3RhdGUsIHZhbHVlKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNEaWN0aW9uYXJ5LmNwcAppbmRleCA3YzQ4NDhkNjg0OTBjZTI3ODZhZTdjM2MxZGFhYzZjMzgx
OTIyMDRmLi4zNjBlODZjMGQ0MDRkZjhkMWIxMTU3MzVlOTg0MjJlNWIzYzdhZWRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKQEAgLTE1Myw3ICsxNTMs
NyBAQCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2ln
bmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVj
LCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKCpl
eGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252
ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBIYXNoU2V0PEF0b21pY1N0
CiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjg0LDcgKzI4
NCw3IEBAIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lCiAgICAgICAgIHJldHVybjsKIAogICAgIHVu
c2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZShl
eGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVlbmNl
KCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNGaWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3Rv
bS5jcHAKaW5kZXggY2Y3NWQyNTY2NTQyNGY4NGNkZjE4NTBkOTcxNjgwMDIxODg1YjQ5Ny4uY2Zi
NTdmNDM0MTBkNDYzNmRkNmE2N2NhNGE1OGNjOWJhYmFjMjAzYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCkBAIC01Miw3ICs1Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNGaWxlKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkZp
cnN0IGFyZ3VtZW50IHRvIEZpbGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHNlcXVlbmNl
LCB3YXMgdW5kZWZpbmVkIG9yIG51bGwiKSk7CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5n
dGggPSAwOwotICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgYXJn
LCBibG9iUGFydHNMZW5ndGgpOworICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVu
Y2UoKmV4ZWMsIGFyZywgYmxvYlBhcnRzTGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgQVNTRVJUKGJsb2JQYXJ0cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDVhZmJjZDAwNjM3ZjVmMTk0OGE5YjdkZmJi
MGIxYTdhYjJmNzA2ZTkuLjM1MTI4Y2UwZjgxNjNjNzBlOWNiZDFhMDQ4ZmZiMTVkODI4NmVhM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0
b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0CiAKICAgICAv
LyBWYWxpZGF0aW9uIG9mIHNlcXVlbmNlIHR5cGVzLCBwZXIgV2ViSURMIHNwZWMgNC4xLjEzLgog
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1
ZW5jZSgmc3RhdGUsIHZhbHVlLCBsZW5ndGgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pT
U2VxdWVuY2Uoc3RhdGUsIHZhbHVlLCBsZW5ndGgpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRp
b24oKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDA0NmU5M2UxMGQ0Y2ZiNTM0NmMxNjkz
MWJiZWU2YTc4Y2M0MmUzYTEuLmJhMzRmYTg1ODI5MDk1MzE4NzRjNzVmNThlZDlkMzYzODljMDY2
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0zNzA5LDcgKzM3MDksNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVu
Y2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUg
PSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KHN0YXRlLCAkYXJndW1lbnRJ
bmRleCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVj
dG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZl
RWxlbWVudFR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICB9CkBAIC00NDI2LDcgKzQ0MjYsNyBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiSlMke2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKICAgICAg
ICAgICAgIHJldHVybiAoIih0b1JlZlB0ck5hdGl2ZUFycmF5PCR7YXJyYXlPclNlcXVlbmNlVHlw
ZX0sIEpTJHthcnJheU9yU2VxdWVuY2VUeXBlfT4oc3RhdGUsICR2YWx1ZSwgJkpTJHthcnJheU9y
U2VxdWVuY2VUeXBlfTo6dG9XcmFwcGVkKSkiLCAxKTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gKCJ0b05hdGl2ZUFycmF5PCIgLiBHZXROYXRpdmVWZWN0b3JJbm5lclR5cGUoJGFycmF5T3JT
ZXF1ZW5jZVR5cGUpIC4gIj4oc3RhdGUsICR2YWx1ZSkiLCAxKTsKKyAgICAgICAgcmV0dXJuICgi
dG9OYXRpdmVBcnJheTwiIC4gR2V0TmF0aXZlVmVjdG9ySW5uZXJUeXBlKCRhcnJheU9yU2VxdWVu
Y2VUeXBlKSAuICI+KCpzdGF0ZSwgJHZhbHVlKSIsIDEpOwogICAgIH0KIAogICAgIHJldHVybiAo
JHZhbHVlLCAwKSBpZiAkdHlwZSBlcSAiYW55IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggN2I0NDUwZTE1MTQ3
OTRhZmViZGFlMzY2MzMwZmY2NTE3NjMyZDk4ZS4uMjljZGM5MTg5MjgxZDNkMjVlMzlkZDQ1ZGFh
ZjBlYmU1M2FlNjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ4NTEsNyArNDg1MSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTZXF1ZW5jCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRl
LCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9H
Q19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBzZXF1ZW5jZSA9IHRv
TmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRv
IHNlcXVlbmNlID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdp
dGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoc2VxdWVuY2UpKTsKQEAgLTQ5MjYsNyArNDkyNiw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcnJheShFCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBl
RXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxBcnJheSIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJh
eSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0
cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsQXJyYXkoV1RGTW92
ZShhcnJheSkpOwpAQCAtNDk0MSw3ICs0OTQxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXMK
ICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1l
dGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8U3Ry
aW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIGFycmF5ID0gdG9OYXRp
dmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNF
bXB0eShXVEZNb3ZlKGFycmF5KSk7CkBAIC01MzI0LDcgKzUzMjQsNyBAQCBzdGF0aWMgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDcoRXhlY1N0YQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmlu
Zz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CkBA
IC01MzU4LDcgKzUzNTgsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoRXhlY1N0YQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0g
dG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1
dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3Zlcmxv
YWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01Mzc1LDcgKzUzNzUsNyBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEwKEV4ZWNTdAogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4o
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZl
QXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShh
cnJheUFyZykpOwpAQCAtNTYyMSw3ICs1NjIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXEK
ICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Ci0gICAgYXV0
byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdW5zaWduZWRMb25nU2VxdWVuY2UgPSB0b05h
dGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoVW5zaWduZWRMb25n
U2VxdWVuY2UoV1RGTW92ZSh1bnNpZ25lZExvbmdTZXF1ZW5jZSkpOwpAQCAtNTYzOSw3ICs1NjM5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBz
dGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJp
bmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUt
PmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMt
Pmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0cmluZ0FycmF5RnVuY3Rpb24oV1RGTW92ZSh2YWx1ZXMp
LCBlYykpOwpAQCAtNTY4MCwxMCArNTY4MCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQog
ICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRv
IGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90PihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05h
dGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91dE51
bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdURk1vdmUobnVsbGFibGVBcnJheUFy
ZykpOwpAQCAtNTcwMCwxMCArNTcwMCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFy
cmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAg
ICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90PihzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2
ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91dE51bGxh
YmxlU2VxdWVuY2UyKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcp
KTsKQEAgLTU4ODksNyArNTg4OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAgICAg
IGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iakFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9u
V2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoiKTsKICAgICB9Ci0gICAgYXV0byBhID0gdG9OYXRpdmVB
cnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgYXV0byBhID0g
dG9OYXRpdmVBcnJheTx1aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29s
ZWFuKGltcGwuc3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2Uob2JqQXJnLCBXVEZNb3ZlKGEpLCBl
YykpOwpAQCAtNTkxMiw3ICs1OTEyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBh
dXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5
cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldp
dGhBcnJheSIsICJUZXN0T2JqIik7Ci0gICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8aW50
MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CisgICAgYXV0byBhcnJheSA9IHRvTmF0
aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGlt
cGwuc3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoKm9iakFyZywgV1RGTW92ZShhcnJheSksIGVjKSk7
CkBAIC01OTM0LDcgKzU5MzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGF1dG8g
aGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPFN0cmluZz4oc3RhdGUsIDEpOworICAgIFZlY3RvcjxTdHJpbmc+IHRhaWwgPSB0
b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KCpzdGF0ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgaW1wbC52YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQp
LCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTU5NTQsNyArNTk1NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhv
ZChFeGVjCiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8ZG91YmxlPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVu
dHM8ZG91YmxlPihzdGF0ZSwgMSk7CisgICAgVmVjdG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZl
QXJndW1lbnRzPGRvdWJsZT4oKnN0YXRlLCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1v
dmUodGFpbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CmluZGV4IDU5Mjg5MzU3YzkxZDg3ZDJiNjNjNzJlOTJlYTFjYmM3ODE4NTFhYjAuLjFmYTFlZGFk
NzhiZDQ4ZjUzYWVhNDllMDliNmEyN2I5MjlhMDBmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0
KEV4ZWNTdGF0ZSogcwogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8q
IGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVj
dG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKLSAgICBWZWN0b3I8aW50MzJfdD4gbG9uZ0FyZ3MgPSB0
b05hdGl2ZUFyZ3VtZW50czxpbnQzMl90PihzdGF0ZSwgMCk7CisgICAgVmVjdG9yPGludDMyX3Q+
IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50MzJfdD4oKnN0YXRlLCAwKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUobG9uZ0FyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5k
ZXggNDdlNzUzMDQyODRiNGQ0Njg2MmVmNjY0YTJjOWZmZjYyOTk2MzUwNy4uODJlOGY5MTA1OTBj
N2M1NDZiYmYwZGMwMzNlNTVlMTQ0OGQzYWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC00
NTUsNyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXQKICAgICAgICAgcmV0dXJuIHRo
cm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8o
KSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIHgg
PSB0b05hdGl2ZUFycmF5PGludDMyX3Q+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAg
IGF1dG8geCA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQo
MCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwuZnVuYyhXVEZN
b3ZlKHgpKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFy
cmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkp
OworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlt
cGwubnVsbGFibGVBcnJheUFyZyhXVEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01NjgsNyArNTY4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVh
dGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+
KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXBsLnN0cmluZ0FycmF5RnVuY3Rpb24oV1RGTW92ZSh2YWx1ZXMpLCBl
YykpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJy
YXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHZhbHVlcyA9
IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FycmF5
KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5zdHJpbmdBcnJheUZ1bmN0
aW9uMihXVEZNb3ZlKHZhbHVlcyksIGVjKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282559</attachid>
            <date>2016-07-01 10:12:07 -0700</date>
            <delta_ts>2016-07-11 07:58:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159298-20160701191143.patch</filename>
            <type>text/plain</type>
            <size>29815</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWY1ZjczNDc3MjBjMjdj
NmUyN2ZlYThmMDk0MWUxYmMxZDgxYTYyNC4uOGM0MmUyN2NhZmZjNTdiZTdjOTMzNTZlNTRjZmQy
Y2I4ZmRkMzFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDE2LTA3LTAxICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICB0b05h
dGl2ZSBmdW5jdGlvbnMgaW4gSlNET01CaW5kaW5nLmggc2hvdWxkIHRha2UgYW4gRXhlY1N0YXRl
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgRXhlY1N0YXRlIGJ5IHJlZmVyZW5jZSBpbnN0ZWFk
IG9mIHBvaW50ZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlkYktleVBhdGhGcm9tVmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBQYXNzIEV4
ZWNTdGF0ZSBieSByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBwb2ludGVyLgorICAgICAg
ICAoV2ViQ29yZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZhbHVl
VHJhaXRzPFN0cmluZz46Om5hdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZh
bHVlVHJhaXRzPHVuc2lnbmVkPjo6bmF0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0
aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpO
YXRpdmVWYWx1ZVRyYWl0czxkb3VibGU+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b05hdGl2ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJndW1lbnRzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbnZlcnRlcjxWZWN0b3I8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RpY3Rpb25hcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0
VmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVz
c2FnZVBvcnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lc3NhZ2VQb3J0QXJy
YXkpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kMTApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXRO
dWxsYWJsZVNlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVl
bmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0
RnVuY3Rpb25XaXRoQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZUFycmF5QXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMik6CisKIDIwMTYtMDctMDEg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4KIAogICAgICAgICBBZGQgYSBydW50
aW1lIGZsYWcgZm9yIERPTSBpdGVyYXRvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggZWQyMTllMDIwNzAyNGMwMDliZmU1
ZDhjNzI5ZmQ4ZGFkZjhiN2VlYy4uYjkzNGEzZmEwOGViNGE3ZGNjYjc3NzAyNjE4YWJkODNjZmI5
NGViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBJREJLZXlQYXRoIGlkYktleVBhdGhGcm9t
VmFsdWUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGtleVBhdGhWYWx1ZSkKIHsKICAgICBJREJL
ZXlQYXRoIGtleVBhdGg7CiAgICAgaWYgKGlzSlNBcnJheShrZXlQYXRoVmFsdWUpKQotICAgICAg
ICBrZXlQYXRoID0gSURCS2V5UGF0aCh0b05hdGl2ZUFycmF5PFN0cmluZz4oJmV4ZWMsIGtleVBh
dGhWYWx1ZSkpOworICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aCh0b05hdGl2ZUFycmF5PFN0
cmluZz4oZXhlYywga2V5UGF0aFZhbHVlKSk7CiAgICAgZWxzZQogICAgICAgICBrZXlQYXRoID0g
SURCS2V5UGF0aChrZXlQYXRoVmFsdWUudG9XVEZTdHJpbmcoJmV4ZWMpKTsKICAgICByZXR1cm4g
a2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCmlu
ZGV4IGE5MzM1ODcyYTJiZTkwMTJhYWVkYjJiMDk0NzQ1MTQ3MDA0ZjE3ZTkuLjBhOTEwZWM1NGFm
NjM3NGRiOTNkMjNlYmUzYWVkMjIyMWI5YTM2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtNjIsNiArNjIsNyBAQCBKU1ZhbHVlIHRvSlMoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmxvYiYgYmxv
YikKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0Jsb2IoRXhlY1N0
YXRlKiBleGVjKQogeworICAgIEFTU0VSVChleGVjKTsKICAgICBET01Db25zdHJ1Y3Rvck9iamVj
dCoganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9iamVjdCo+KGV4ZWMtPmNh
bGxlZSgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1
Y3Rvci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4dCkKQEAgLTcy
LDcgKzczLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0Jsb2Io
RXhlY1N0YXRlKiBleGVjKQogICAgIH0KIAogICAgIHVuc2lnbmVkIGJsb2JQYXJ0c0xlbmd0aCA9
IDA7Ci0gICAgSlNPYmplY3QqIGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZShleGVjLCBleGVjLT5h
cmd1bWVudCgwKSwgYmxvYlBhcnRzTGVuZ3RoKTsKKyAgICBKU09iamVjdCogYmxvYlBhcnRzID0g
dG9KU1NlcXVlbmNlKCpleGVjLCBleGVjLT5hcmd1bWVudCgwKSwgYmxvYlBhcnRzTGVuZ3RoKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKGJsb2JQYXJ0cyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCmluZGV4IGM2MmRiYjJiOGVlMTA5ZDdmZDhk
ZjcwNjRjZDgzZTg5MzFhZDc4ZTkuLjMzYjAyMTYwZTMyMjA5NDQyOTcwMjI4NjQ1Nzc2NDY4ODdm
MTYzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCkBAIC0y
NDcsNyArMjQ3LDcgQEAgSlNDOjpKU1ZhbHVlIGpzRGF0ZU9yTnVsbChKU0M6OkV4ZWNTdGF0ZSos
IGRvdWJsZSk7CiBkb3VibGUgdmFsdWVUb0RhdGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFs
dWUpOwogCiAvLyBWYWxpZGF0ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNl
IHR5cGUgcGVyIHNlY3Rpb24gNC4xLjEzIG9mIHRoZSBXZWJJREwgc3BlYy4KLUpTQzo6SlNPYmpl
Y3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgdW5zaWduZWQm
IGxlbmd0aCk7CitKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUsIHVuc2lnbmVkJiBsZW5ndGgpOwogCiBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1ZmZlciopOwogSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIEpTQzo6
QXJyYXlCdWZmZXJWaWV3Kik7CkBAIC0yODIsOCArMjgyLDggQEAgUmVmUHRyPEpTQzo6RmxvYXQz
MkFycmF5PiB0b0Zsb2F0MzJBcnJheShKU0M6OkpTVmFsdWUpOwogUmVmUHRyPEpTQzo6RmxvYXQ2
NEFycmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFsdWUpOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBKU1R5cGU+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVmUHRyTmF0aXZlQXJy
YXkoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIFQqICgqKShKU0M6OkpTVmFsdWUpKTsK
LXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05h
dGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSosIHNpemVfdCBzdGFydEluZGV4ID0gMCk7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRp
dmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBzaXplX3Qgc3RhcnRJbmRleCA9IDApOwogCiBi
b29sIHNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwogYm9v
bCBzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoSlNDOjpFeGVjU3RhdGUqLCBGcmFtZSopOwpAQCAt
NDc3LDI1ICs0NzcsMjUgQEAgaW5saW5lIGludDMyX3QgZmluaXRlSW50MzJWYWx1ZShKU0M6OkpT
VmFsdWUgdmFsdWUsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBib29sJgogfQogCiAvLyBWYWxpZGF0
ZXMgdGhhdCB0aGUgcGFzc2VkIG9iamVjdCBpcyBhIHNlcXVlbmNlIHR5cGUgcGVyIHNlY3Rpb24g
NC4xLjEzIG9mIHRoZSBXZWJJREwgc3BlYy4KLWlubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2Vx
dWVuY2UoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQm
IGxlbmd0aCkKK2lubGluZSBKU0M6OkpTT2JqZWN0KiB0b0pTU2VxdWVuY2UoSlNDOjpFeGVjU3Rh
dGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCkKIHsKICAgICBK
U0M6OkpTT2JqZWN0KiBvYmplY3QgPSB2YWx1ZS5nZXRPYmplY3QoKTsKICAgICBpZiAoIW9iamVj
dCkgewotICAgICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKCpleGVjKTsKKyAgICAgICAgdGhy
b3dTZXF1ZW5jZVR5cGVFcnJvcihleGVjKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgSlNDOjpKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoZXhlYywgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgIEpTQzo6SlNWYWx1ZSBsZW5ndGhWYWx1ZSA9IG9iamVjdC0+Z2V0KCZleGVjLCBleGVj
LnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpOworICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChsZW5ndGhWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7Ci0gICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAg
ICAgICB0aHJvd1NlcXVlbmNlVHlwZUVycm9yKGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMihleGVjKTsKLSAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgbGVuZ3RoID0gbGVuZ3RoVmFsdWUudG9V
SW50MzIoJmV4ZWMpOworICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBvYmplY3Q7CkBAIC02NjAsMjEgKzY2MCwyMSBAQCBp
bmxpbmUgUmVmUHRyPEpTQzo6RmxvYXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJheShKU0M6OkpTVmFs
dWUgdmFsdWUpIHsgcmV0dXJuIEpTQwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IE5hdGl2
ZVZhbHVlVHJhaXRzOwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxTdHJp
bmc+IHsKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcmIGluZGV4ZWRWYWx1ZSkKKyAgICBz
dGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6
SlNWYWx1ZSBqc1ZhbHVlLCBTdHJpbmcmIGluZGV4ZWRWYWx1ZSkKICAgICB7Ci0gICAgICAgIGlu
ZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CisgICAgICAgIGluZGV4ZWRW
YWx1ZSA9IGpzVmFsdWUudG9XVEZTdHJpbmcoJmV4ZWMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25l
ZD4gewotICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIHVuc2lnbmVkJiBpbmRleGVkVmFsdWUpCisgICAg
c3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6
OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQmIGluZGV4ZWRWYWx1ZSkKICAgICB7CiAgICAgICAg
IGlmICghanNWYWx1ZS5pc051bWJlcigpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9VSW50MzIoZXhlYyk7Ci0gICAgICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgaW5kZXhlZFZhbHVlID0ganNWYWx1ZS50
b1VJbnQzMigmZXhlYyk7CisgICAgICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjgyLDE4ICs2
ODIsMTggQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8dW5zaWduZWQ+IHsK
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPGZsb2F0PiB7Ci0gICAg
c3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6
OkpTVmFsdWUganNWYWx1ZSwgZmxvYXQmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5saW5l
IGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1Zh
bHVlLCBmbG9hdCYgaW5kZXhlZFZhbHVlKQogICAgIHsKLSAgICAgICAgaW5kZXhlZFZhbHVlID0g
anNWYWx1ZS50b0Zsb2F0KGV4ZWMpOwotICAgICAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlv
bigpOworICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvRmxvYXQoJmV4ZWMpOworICAg
ICAgICByZXR1cm4gIWV4ZWMuaGFkRXhjZXB0aW9uKCk7CiAgICAgfQogfTsKIAogdGVtcGxhdGU8
PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZG91YmxlPiB7Ci0gICAgc3RhdGljIGlubGluZSBi
b29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1
ZSwgZG91YmxlJiBpbmRleGVkVmFsdWUpCisgICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZh
bHVlKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUganNWYWx1ZSwgZG91YmxlJiBp
bmRleGVkVmFsdWUpCiAgICAgewotICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvTnVt
YmVyKGV4ZWMpOwotICAgICAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOworICAgICAg
ICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvTnVtYmVyKCZleGVjKTsKKyAgICAgICAgcmV0dXJu
ICFleGVjLmhhZEV4Y2VwdGlvbigpOwogICAgIH0KIH07CiAKQEAgLTcxOCw3ICs3MTgsNyBAQCB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBKU1Q+IFZlY3RvcjxSZWZQdHI8VD4+IHRvUmVm
UHRyTmF0aXZlQXJyYXkoSlNDOjpFeAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlKiBleGVj
LCBKU0M6OkpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9O
YXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlKQogewog
ICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICgh
b2JqZWN0KQpAQCAtNzM3LDE2ICs3MzcsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9y
PFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZQogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIFQgaW5k
ZXhWYWx1ZTsKLSAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShleGVjLCBvYmpl
Y3QtPmdldChleGVjLCBpKSwgaW5kZXhWYWx1ZSkpCisgICAgICAgIGlmICghVHJhaXRzVHlwZTo6
bmF0aXZlVmFsdWUoZXhlYywgb2JqZWN0LT5nZXQoJmV4ZWMsIGkpLCBpbmRleFZhbHVlKSkKICAg
ICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4oKTsKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFw
cGVuZChpbmRleFZhbHVlKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxU
PiB0b05hdGl2ZUFyZ3VtZW50cyhKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgc2l6ZV90IHN0YXJ0SW5k
ZXgpCiB7Ci0gICAgc2l6ZV90IGxlbmd0aCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKKyAgICBz
aXplX3QgbGVuZ3RoID0gZXhlYy5hcmd1bWVudENvdW50KCk7CiAgICAgQVNTRVJUKHN0YXJ0SW5k
ZXggPD0gbGVuZ3RoKTsKIAogICAgIFZlY3RvcjxUPiByZXN1bHQ7CkBAIC03NTUsNyArNzU1LDcg
QEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJndW1lbnRzKEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBzaXplX3Qgc3QKIAogICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydElu
ZGV4OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgVCBpbmRleFZhbHVlOwotICAgICAgICBp
ZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBpbmRl
eFZhbHVlKSkKKyAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVWYWx1ZShleGVjLCBleGVj
LmFyZ3VtZW50KGkpLCBpbmRleFZhbHVlKSkKICAgICAgICAgICAgIHJldHVybiBWZWN0b3I8VD4o
KTsKICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZChpbmRleFZhbHVlKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oCmluZGV4IDNhZmE4YmVhN2Ex
NDMyY2E5OWNiNzNkZjBjNjA0NDM1MmZjMDAyYTUuLjA4MjQxZmRkYWQxNWRjNGI1ZWFmNGNhY2Vm
NzJiODJhZjBjNTk0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQ29udmVydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVy
dC5oCkBAIC0xMjIsNyArMTIyLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZl
cnRlcjxWZWN0b3I8VD4+IDogRGVmYXVsdENvbnZlcnRlcjxWZWN0b3I8VD4+IHsKICAgICBzdGF0
aWMgVmVjdG9yPFQ+IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUg
dmFsdWUpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogVGhlIHRvTmF0aXZlQXJyYXkgZnVuY3Rp
b24gZG9lc24ndCB0aHJvdyBhIHR5cGUgZXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBhbiBvYmpl
Y3QuIElzIHRoYXQgT0s/Ci0gICAgICAgIHJldHVybiB0b05hdGl2ZUFycmF5PFQ+KCZzdGF0ZSwg
dmFsdWUpOworICAgICAgICByZXR1cm4gdG9OYXRpdmVBcnJheTxUPihzdGF0ZSwgdmFsdWUpOwog
ICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGlj
dGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3Bw
CmluZGV4IDdjNDg0OGQ2ODQ5MGNlMjc4NmFlN2MzYzFkYWFjNmMzODE5MjIwNGYuLjcxOTdmMGZj
NDVkMGFkMGM4M2RmNDcyOWQyMWUxODIyNWU3Yjc2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcApAQCAtMTQ5LDExICsxNDksMTIgQEAgdm9pZCBKU0Rp
Y3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFN0
cmluZyYgcmVzdWx0KQogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPFN0cmluZz4mIHJlc3VsdCkKIHsKKyAgICBB
U1NFUlQoZXhlYyk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVj
dCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdG9KU1NlcXVlbmNlKCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjEwLDEzICsyMTEsMTQgQEAg
dm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqLCBKU1ZhbHVlIHZhbHVl
LCBSZWZQdHI8VHJhY2tCYXNlPiYgcmUKIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEhhc2hTZXQ8QXRvbWljU3RyaW5nPiYg
cmVzdWx0KQogeworICAgIEFTU0VSVChleGVjKTsKICAgICByZXN1bHQuY2xlYXIoKTsKIAogICAg
IGlmICh2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB1
bnNpZ25lZCBsZW5ndGggPSAwOwotICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2Uo
ZXhlYywgdmFsdWUsIGxlbmd0aCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5j
ZSgqZXhlYywgdmFsdWUsIGxlbmd0aCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTI4MCwxMSArMjgyLDEyIEBAIHZvaWQgSlNEaWN0aW9uYXJ5
Ojpjb252ZXJ0VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0
cjxSVENSCiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtPj4mIHJlc3VsdCkKIHsK
KyAgICBBU1NFUlQoZXhlYyk7CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3Qq
IG9iamVjdCA9IHRvSlNTZXF1ZW5jZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKaW5kZXggY2Y3NWQyNTY2NTQyNGY4NGNkZjE4
NTBkOTcxNjgwMDIxODg1YjQ5Ny4uN2U5MGE5M2YzNzJhZDBjYjY4ZmVmNTMxOGJlYjc3YjQ3ZDlm
ZGJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCkBA
IC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0ZpbGUoRXhlY1N0YXRlKiBleGVjKQogeworICAgIEFTU0VS
VChleGVjKTsKICAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IGpzQ2FzdDxET01Db25zdHJ1Y3Rvck9i
amVjdCo+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0ID0gY29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIWNv
bnRleHQpCkBAIC01Miw3ICs1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlNGaWxlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbGUgY29u
c3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHNlcXVlbmNlLCB3YXMgdW5kZWZpbmVkIG9yIG51bGwi
KSk7CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5ndGggPSAwOwotICAgIEpTT2JqZWN0KiBi
bG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgYXJnLCBibG9iUGFydHNMZW5ndGgpOworICAg
IEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoKmV4ZWMsIGFyZywgYmxvYlBhcnRz
TGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKGJsb2JQYXJ0cyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3Bw
CmluZGV4IDVhZmJjZDAwNjM3ZjVmMTk0OGE5YjdkZmJiMGIxYTdhYjJmNzA2ZTkuLjM1MTI4Y2Uw
ZjgxNjNjNzBlOWNiZDFhMDQ4ZmZiMTVkODI4NmVhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBA
IHZvaWQgZmlsbE1lc3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
VmFsdWUgdmFsdWUsIE1lc3NhZ2VQb3J0CiAKICAgICAvLyBWYWxpZGF0aW9uIG9mIHNlcXVlbmNl
IHR5cGVzLCBwZXIgV2ViSURMIHNwZWMgNC4xLjEzLgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZSgmc3RhdGUsIHZhbHVlLCBsZW5n
dGgpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2Uoc3RhdGUsIHZhbHVlLCBs
ZW5ndGgpOwogICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCmluZGV4IDY2N2ZiMjNiOTgzZWFmMjNjMmY3MGM4OGU2OTUyYTQ1NmM2YTdmYTQuLjE0OTMx
YjMzOWI3MDg2YmYzYjExNzQyMzgyODMwMTA4ZTQzMzAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNzA5LDcgKzM3
MDksNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
VmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0
aXZlRWxlbWVudFR5cGU+KHN0YXRlLCAkYXJndW1lbnRJbmRleCk7XG4iKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4g
JG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KCpzdGF0ZSwgJGFy
Z3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAgICB9CkBAIC00NDQ2LDcgKzQ0NDYsNyBA
QCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMk
e2FycmF5T3JTZXF1ZW5jZVR5cGV9LmgiKTsKICAgICAgICAgICAgIHJldHVybiAoIih0b1JlZlB0
ck5hdGl2ZUFycmF5PCR7YXJyYXlPclNlcXVlbmNlVHlwZX0sIEpTJHthcnJheU9yU2VxdWVuY2VU
eXBlfT4oc3RhdGUsICR2YWx1ZSwgJkpTJHthcnJheU9yU2VxdWVuY2VUeXBlfTo6dG9XcmFwcGVk
KSkiLCAxKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gKCJ0b05hdGl2ZUFycmF5PCIgLiBH
ZXROYXRpdmVWZWN0b3JJbm5lclR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4oc3RhdGUs
ICR2YWx1ZSkiLCAxKTsKKyAgICAgICAgcmV0dXJuICgidG9OYXRpdmVBcnJheTwiIC4gR2V0TmF0
aXZlVmVjdG9ySW5uZXJUeXBlKCRhcnJheU9yU2VxdWVuY2VUeXBlKSAuICI+KCpzdGF0ZSwgJHZh
bHVlKSIsIDEpOwogICAgIH0KIAogICAgIHJldHVybiAoJHZhbHVlLCAwKSBpZiAkdHlwZSBlcSAi
YW55IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKaW5kZXggYTEyNTQ4ZWJiNGI4ZTBiMDdhYTM1MmQ4NGUyMTBhNDdkNmZj
MTgxMC4uMGQ0YmMxZTkwNzFmOTk3Mzg5YTQzM2NlODhjMmY2MzYxYjAyZmNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKQEAgLTQ4NzMsNyArNDg3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
T3B0aW9uYWxTZXF1ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVk
VGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53
cmFwcGVkKCk7Ci0gICAgYXV0byBzZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0
ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHNlcXVlbmNlID0gdG9OYXRpdmVBcnJh
eTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFko
c3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1v
dmUoc2VxdWVuY2UpKTsKQEAgLTQ5NDgsNyArNDk0OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcnJh
eShFCiAgICAgICAgIHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIs
ICJtZXRob2RXaXRoT3B0aW9uYWxBcnJheSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJ
VFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5
PFN0cmluZz4oc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBh
cnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9y
PFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVj
a2VkQXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGlt
cGwubWV0aG9kV2l0aE9wdGlvbmFsQXJyYXkoV1RGTW92ZShhcnJheSkpOwpAQCAtNDk2Myw3ICs0
OTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXMKICAgICAgICAgcmV0dXJuIHRocm93VGhp
c1R5cGVFcnJvcigqc3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNF
bXB0eSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKKyAgICBhdXRvIGFycmF5ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7CkBA
IC01MzQ2LDcgKzUzNDYsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoRXhlY1N0YQogICAgIGF1dG8mIGlt
cGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1
bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0g
dG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1
dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1l
bnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3Zlcmxv
YWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01MzgwLDcgKzUzODAsNyBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDkoRXhlY1N0YQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFy
cmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5
QXJnKSk7CkBAIC01Mzk3LDcgKzUzOTcsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwKEV4ZWNTdAogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFy
cmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgw
KSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwg
c3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAg
ICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOwpAQCAtNTY0Myw3ICs1
NjQzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Ci0gICAgYXV0byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9
IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAg
IGF1dG8gdW5zaWduZWRMb25nU2VxdWVuY2UgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgaW1wbC5tZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UoV1RGTW92ZSh1bnNpZ25l
ZExvbmdTZXF1ZW5jZSkpOwpAQCAtNTY2MSw3ICs1NjYxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24o
RXhlY1MKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8gdmFsdWVz
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAg
IGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0
cmluZ0FycmF5RnVuY3Rpb24oV1RGTW92ZSh2YWx1ZXMpLCBlYykpOwpAQCAtNTcwMiwxMCArNTcw
MiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJh
eTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFy
ZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvIG51bGxhYmxlQXJyYXlB
cmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsK
KyAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNl
cHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShh
cnJheUFyZyksIFdURk1vdmUobnVsbGFibGVBcnJheUFyZykpOwpAQCAtNTcyMiwxMCArNTcyMiwx
MCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAy
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1
aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9
IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcg
PSB0b05hdGl2ZUFycmF5PHVpbnQzMl90PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAg
ICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUs
IHN0YXRlLT5hcmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAg
ICAgaW1wbC5tZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKFdURk1vdmUoYXJy
YXlBcmcpLCBXVEZNb3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsKQEAgLTU5MTEsNyArNTkxMSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
dHJpY3RGdW5jdGlvbldpdGhTZXF1ZW5jCiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkK
ICAgICAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9i
akFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoi
KTsKICAgICB9Ci0gICAgYXV0byBhID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgxKSk7CisgICAgYXV0byBhID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4o
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuc3RyaWN0RnVuY3Rpb25X
aXRoU2VxdWVuY2Uob2JqQXJnLCBXVEZNb3ZlKGEpLCBlYykpOwpAQCAtNTkzNCw3ICs1OTM0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6
dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcp
KQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpB
cmciLCAiVGVzdE9iaiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIsICJUZXN0T2JqIik7Ci0g
ICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgxKSk7CisgICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0
aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuc3RyaWN0RnVuY3Rpb25XaXRoQXJy
YXkoKm9iakFyZywgV1RGTW92ZShhcnJheSksIGVjKSk7CkBAIC01OTU2LDcgKzU5NTYsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFy
aWFkaWNTdHJpbmdNZXRob2QoRXhlYwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT5hcmd1bWVudCgw
KS50b1dURlN0cmluZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRp
b24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0g
ICAgVmVjdG9yPFN0cmluZz4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPFN0cmluZz4oc3RhdGUs
IDEpOworICAgIFZlY3RvcjxTdHJpbmc+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+
KCpzdGF0ZSwgMSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC52
YXJpYWRpY1N0cmluZ01ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTU5
NzYsNyArNTk3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0g
Y29udmVydDxkb3VibGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05v
bkZpbml0ZTo6WWVzKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0
b3I8ZG91YmxlPiB0YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihzdGF0ZSwgMSk7Cisg
ICAgVmVjdG9yPGRvdWJsZT4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oKnN0YXRl
LCAxKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLnZhcmlhZGlj
RG91YmxlTWV0aG9kKFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDU5Mjg5MzU3YzkxZDg3ZDJi
NjNjNzJlOTJlYTFjYmM3ODE4NTFhYjAuLjFmYTFlZGFkNzhiZDQ4ZjUzYWVhNDllMDliNmEyN2I5
MjlhMDBmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5j
cHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0
cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSogcwogc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
NShFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsK
LSAgICBWZWN0b3I8aW50MzJfdD4gbG9uZ0FyZ3MgPSB0b05hdGl2ZUFyZ3VtZW50czxpbnQzMl90
PihzdGF0ZSwgMCk7CisgICAgVmVjdG9yPGludDMyX3Q+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1
bWVudHM8aW50MzJfdD4oKnN0YXRlLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBhdXRvIG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUo
bG9uZ0FyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggNDdlNzUzMDQyODRiNGQ0Njg2MmVm
NjY0YTJjOWZmZjYyOTk2MzUwNy4uODJlOGY5MTA1OTBjN2M1NDZiYmYwZGMwMzNlNTVlMTQ0OGQz
YWU1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhF
eGVjU3RhdGUqIHN0YXQKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUs
ICJUZXN0VHlwZWRlZnMiLCAiZnVuYyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgSlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNh
c3RlZFRoaXMtPndyYXBwZWQoKTsKLSAgICBhdXRvIHggPSB0b05hdGl2ZUFycmF5PGludDMyX3Q+
KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8geCA9IHRvTmF0aXZlQXJyYXk8
aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGltcGwuZnVuYyhXVEZNb3ZlKHgpKTsKQEAgLTUxOCw3ICs1MTgs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZUFycmF5QXJnKEV4ZQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlz
LT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxT
dHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0
b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubnVsbGFibGVBcnJheUFyZyhXVEZN
b3ZlKGFycmF5QXJnKSk7CkBAIC01NjgsNyArNTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlv
bigKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihzdGF0ZSkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8gdmFsdWVzID0g
dG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1
dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzQXJyYXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0cmlu
Z0FycmF5RnVuY3Rpb24oV1RGTW92ZSh2YWx1ZXMpLCBlYykpOwpAQCAtNTg4LDcgKzU4OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblN0cmluZ0FycmF5RnVuY3Rpb24yCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUt
PmFyZ3VtZW50KDApKTsKKyAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigq
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRF
eGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc0FycmF5KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSwgaW1wbC5zdHJpbmdBcnJheUZ1bmN0aW9uMihXVEZNb3ZlKHZhbHVlcyksIGVj
KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283317</attachid>
            <date>2016-07-11 07:58:28 -0700</date>
            <delta_ts>2016-07-11 09:26:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159298-20160711165745.patch</filename>
            <type>text/plain</type>
            <size>29176</size>
            <attacher name="Nael Ouedraogo">nael.ouedp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMDUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3YTY3ZWViZDFiYTIx
OGIyNDBkZTBiNTZiOGI2Zjk0YjJlZjk5MS4uNzk1ODI3ZWQzYzY5M2QyYTQxYTE1YzlmODVkZTA1
ZmMxMTdjMTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE2LTA3LTExICBOYWVs
IE91ZWRyYW9nbyAgPG5hZWwub3VlZHJhb2dvQGNyZi5jYW5vbi5mcj4KKworICAgICAgICB0b05h
dGl2ZSBmdW5jdGlvbnMgaW4gSlNET01CaW5kaW5nLmggc2hvdWxkIHRha2UgYW4gRXhlY1N0YXRl
IHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgRXhlY1N0YXRlIGJ5IHJlZmVyZW5jZSBpbnN0ZWFk
IG9mIHBvaW50ZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlkYktleVBhdGhGcm9tVmFsdWUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1
Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBQYXNzIEV4
ZWNTdGF0ZSBieSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyLgorICAgICAgICAoV2ViQ29y
ZTo6dG9KU1NlcXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZhbHVlVHJhaXRzPFN0
cmluZz46Om5hdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdGl2ZVZhbHVlVHJhaXRz
PHVuc2lnbmVkPjo6bmF0aXZlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF0aXZlVmFsdWVU
cmFpdHM8ZmxvYXQ+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXRpdmVWYWx1
ZVRyYWl0czxkb3VibGU+OjpuYXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjp0b05hdGl2
ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OnRvTmF0aXZlQXJndW1lbnRzKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZlcnRl
cjxWZWN0b3I8VD4+Ojpjb252ZXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdHJ1Y3RKU0ZpbGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbE1lc3NhZ2VQb3J0QXJyYXkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoSlNWYWx1ZVRvTmF0aXZlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVu
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSk6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kMTApOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNl
cXVlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlMik6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25X
aXRoQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY1N0cmluZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZUFycmF5QXJn
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJp
bmdBcnJheUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uMik6CisKIDIwMTYtMDctMTAgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBTZXR0aW5nIGRvY3VtZW50LnRpdGxl
IHJldXNlcyA8dGl0bGU+J3MgdGV4dG5vZGUgY2hpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggZWQyMTllMDIwNzAyNGMw
MDliZmU1ZDhjNzI5ZmQ4ZGFkZjhiN2VlYy4uYjkzNGEzZmEwOGViNGE3ZGNjYjc3NzAyNjE4YWJk
ODNjZmI5NGViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBJREJLZXlQYXRoIGlkYktleVBh
dGhGcm9tVmFsdWUoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGtleVBhdGhWYWx1ZSkKIHsKICAg
ICBJREJLZXlQYXRoIGtleVBhdGg7CiAgICAgaWYgKGlzSlNBcnJheShrZXlQYXRoVmFsdWUpKQot
ICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aCh0b05hdGl2ZUFycmF5PFN0cmluZz4oJmV4ZWMs
IGtleVBhdGhWYWx1ZSkpOworICAgICAgICBrZXlQYXRoID0gSURCS2V5UGF0aCh0b05hdGl2ZUFy
cmF5PFN0cmluZz4oZXhlYywga2V5UGF0aFZhbHVlKSk7CiAgICAgZWxzZQogICAgICAgICBrZXlQ
YXRoID0gSURCS2V5UGF0aChrZXlQYXRoVmFsdWUudG9XVEZTdHJpbmcoJmV4ZWMpKTsKICAgICBy
ZXR1cm4ga2V5UGF0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20u
Y3BwCmluZGV4IDdhYTFlOGI4ZTJlMGI4MWZjOWUyODZlNzhiYTQxMDEzNGE3OGFhNTkuLjk4MGQ2
N2Y0ODBhZDdkOTlkOWMxZWU1NTdlZWFjNGE5NTk5NGYzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtNzIsNyArNzIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTQmxvYihFeGVjU3RhdGUmIGV4ZWMpCiAgICAg
fQogCiAgICAgdW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKLSAgICBKU09iamVjdCogYmxv
YlBhcnRzID0gdG9KU1NlcXVlbmNlKCZleGVjLCBleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDApLCBi
bG9iUGFydHNMZW5ndGgpOworICAgIEpTT2JqZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2Uo
ZXhlYywgZXhlYy51bmNoZWNrZWRBcmd1bWVudCgwKSwgYmxvYlBhcnRzTGVuZ3RoKTsKICAgICBp
ZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKICAgICBBU1NFUlQoYmxvYlBhcnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggYzYyZGJiMmI4ZWUxMDlkN2ZkOGRmNzA2NGNk
ODNlODkzMWFkNzhlOS4uNDVkOWY5N2M1ZmZkZWQzOWRkZTVhMmZiYjI5ZjVhZjhmYTg2YWVlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTI0Nyw3ICsy
NDcsNyBAQCBKU0M6OkpTVmFsdWUganNEYXRlT3JOdWxsKEpTQzo6RXhlY1N0YXRlKiwgZG91Ymxl
KTsKIGRvdWJsZSB2YWx1ZVRvRGF0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAK
IC8vIFZhbGlkYXRlcyB0aGF0IHRoZSBwYXNzZWQgb2JqZWN0IGlzIGEgc2VxdWVuY2UgdHlwZSBw
ZXIgc2VjdGlvbiA0LjEuMTMgb2YgdGhlIFdlYklETCBzcGVjLgotSlNDOjpKU09iamVjdCogdG9K
U1NlcXVlbmNlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCB1bnNpZ25lZCYgbGVuZ3Ro
KTsKK0pTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNW
YWx1ZSwgdW5zaWduZWQmIGxlbmd0aCk7CiAKIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OkFycmF5QnVmZmVyKik7CiBKU0M6OkpTVmFs
dWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgSlNDOjpBcnJheUJ1
ZmZlclZpZXcqKTsKQEAgLTI4Miw4ICsyODIsOCBAQCBSZWZQdHI8SlNDOjpGbG9hdDMyQXJyYXk+
IHRvRmxvYXQzMkFycmF5KEpTQzo6SlNWYWx1ZSk7CiBSZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+
IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSk7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEpTVHlwZT4gVmVjdG9yPFJlZlB0cjxUPj4gdG9SZWZQdHJOYXRpdmVBcnJheShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgVCogKCopKEpTQzo6SlNWYWx1ZSkpOwotdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJn
dW1lbnRzKEpTQzo6RXhlY1N0YXRlKiwgc2l6ZV90IHN0YXJ0SW5kZXggPSAwKTsKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFycmF5KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFyZ3Vt
ZW50cyhKU0M6OkV4ZWNTdGF0ZSYsIHNpemVfdCBzdGFydEluZGV4ID0gMCk7CiAKIGJvb2wgc2hv
dWxkQWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqLCBOb2RlKik7CiBib29sIHNob3Vs
ZEFsbG93QWNjZXNzVG9GcmFtZShKU0M6OkV4ZWNTdGF0ZSosIEZyYW1lKik7CkBAIC00NzcsMjUg
KzQ3NywyNSBAQCBpbmxpbmUgaW50MzJfdCBmaW5pdGVJbnQzMlZhbHVlKEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGJvb2wmCiB9CiAKIC8vIFZhbGlkYXRlcyB0aGF0
IHRoZSBwYXNzZWQgb2JqZWN0IGlzIGEgc2VxdWVuY2UgdHlwZSBwZXIgc2VjdGlvbiA0LjEuMTMg
b2YgdGhlIFdlYklETCBzcGVjLgotaW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3Ro
KQoraW5saW5lIEpTQzo6SlNPYmplY3QqIHRvSlNTZXF1ZW5jZShKU0M6OkV4ZWNTdGF0ZSYgZXhl
YywgSlNDOjpKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCYgbGVuZ3RoKQogewogICAgIEpTQzo6SlNP
YmplY3QqIG9iamVjdCA9IHZhbHVlLmdldE9iamVjdCgpOwogICAgIGlmICghb2JqZWN0KSB7Ci0g
ICAgICAgIHRocm93U2VxdWVuY2VUeXBlRXJyb3IoKmV4ZWMpOworICAgICAgICB0aHJvd1NlcXVl
bmNlVHlwZUVycm9yKGV4ZWMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBKU0M6OkpTVmFsdWUgbGVuZ3RoVmFsdWUgPSBvYmplY3QtPmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
SlNDOjpKU1ZhbHVlIGxlbmd0aFZhbHVlID0gb2JqZWN0LT5nZXQoJmV4ZWMsIGV4ZWMucHJvcGVy
dHlOYW1lcygpLmxlbmd0aCk7CisgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGxlbmd0aFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKLSAgICAgICAgdGhyb3dTZXF1ZW5jZVR5cGVFcnJvcigqZXhlYyk7CisgICAgICAgIHRo
cm93U2VxdWVuY2VUeXBlRXJyb3IoZXhlYyk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIAotICAgIGxlbmd0aCA9IGxlbmd0aFZhbHVlLnRvVUludDMyKGV4ZWMpOwotICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICBsZW5ndGggPSBsZW5ndGhWYWx1ZS50b1VJbnQzMigm
ZXhlYyk7CisgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTY2MCwyMSArNjYwLDIxIEBAIGlubGluZSBS
ZWZQdHI8SlNDOjpGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KEpTQzo6SlNWYWx1ZSB2YWx1
ZSkgeyByZXR1cm4gSlNDCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgTmF0aXZlVmFsdWVU
cmFpdHM7CiAKIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFN0cmluZz4gewot
ICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpKU1ZhbHVlIGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVlKQorICAgIHN0YXRpYyBp
bmxpbmUgYm9vbCBuYXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1ZhbHVl
IGpzVmFsdWUsIFN0cmluZyYgaW5kZXhlZFZhbHVlKQogICAgIHsKLSAgICAgICAgaW5kZXhlZFZh
bHVlID0ganNWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICAgICAgaW5kZXhlZFZhbHVlID0g
anNWYWx1ZS50b1dURlN0cmluZygmZXhlYyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPHVuc2lnbmVkPiB7Ci0g
ICAgc3RhdGljIGlubGluZSBib29sIG5hdGl2ZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OkpTVmFsdWUganNWYWx1ZSwgdW5zaWduZWQmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMg
aW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlLCB1bnNpZ25lZCYgaW5kZXhlZFZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKCFq
c1ZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
aW5kZXhlZFZhbHVlID0ganNWYWx1ZS50b1VJbnQzMihleGVjKTsKLSAgICAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVlLnRvVUludDMy
KCZleGVjKTsKKyAgICAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC02ODIsMTggKzY4MiwxOCBA
QCB0ZW1wbGF0ZTw+IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czx1bnNpZ25lZD4gewogfTsKIAog
dGVtcGxhdGU8PiBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8ZmxvYXQ+IHsKLSAgICBzdGF0aWMg
aW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1
ZSBqc1ZhbHVlLCBmbG9hdCYgaW5kZXhlZFZhbHVlKQorICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBu
YXRpdmVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNDOjpKU1ZhbHVlIGpzVmFsdWUsIGZs
b2F0JiBpbmRleGVkVmFsdWUpCiAgICAgewotICAgICAgICBpbmRleGVkVmFsdWUgPSBqc1ZhbHVl
LnRvRmxvYXQoZXhlYyk7Ci0gICAgICAgIHJldHVybiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7Cisg
ICAgICAgIGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9GbG9hdCgmZXhlYyk7CisgICAgICAgIHJl
dHVybiAhZXhlYy5oYWRFeGNlcHRpb24oKTsKICAgICB9CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVj
dCBOYXRpdmVWYWx1ZVRyYWl0czxkb3VibGU+IHsKLSAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0
aXZlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBkb3Vi
bGUmIGluZGV4ZWRWYWx1ZSkKKyAgICBzdGF0aWMgaW5saW5lIGJvb2wgbmF0aXZlVmFsdWUoSlND
OjpFeGVjU3RhdGUmIGV4ZWMsIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlLCBkb3VibGUmIGluZGV4ZWRW
YWx1ZSkKICAgICB7Ci0gICAgICAgIGluZGV4ZWRWYWx1ZSA9IGpzVmFsdWUudG9OdW1iZXIoZXhl
Yyk7Ci0gICAgICAgIHJldHVybiAhZXhlYy0+aGFkRXhjZXB0aW9uKCk7CisgICAgICAgIGluZGV4
ZWRWYWx1ZSA9IGpzVmFsdWUudG9OdW1iZXIoJmV4ZWMpOworICAgICAgICByZXR1cm4gIWV4ZWMu
aGFkRXhjZXB0aW9uKCk7CiAgICAgfQogfTsKIApAQCAtNzE4LDcgKzcxOCw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIEpTVD4gVmVjdG9yPFJlZlB0cjxUPj4gdG9SZWZQdHJOYXRp
dmVBcnJheShKU0M6OkV4CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gVmVjdG9yPFQ+IHRvTmF0aXZlQXJyYXkoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IFZlY3RvcjxUPiB0b05hdGl2ZUFy
cmF5KEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlND
OjpKU09iamVjdCogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKCFvYmplY3Qp
CkBAIC03MzcsMTYgKzczNywxNiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9O
YXRpdmVBcnJheShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlCiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgVCBpbmRleFZhbHVl
OwotICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIG9iamVjdC0+Z2V0
KGV4ZWMsIGkpLCBpbmRleFZhbHVlKSkKKyAgICAgICAgaWYgKCFUcmFpdHNUeXBlOjpuYXRpdmVW
YWx1ZShleGVjLCBvYmplY3QtPmdldCgmZXhlYywgaSksIGluZGV4VmFsdWUpKQogICAgICAgICAg
ICAgcmV0dXJuIFZlY3RvcjxUPigpOwogICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGlu
ZGV4VmFsdWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IHNpemVfdCBzdGFydEluZGV4KQordGVtcGxhdGU8dHlwZW5hbWUgVD4gVmVjdG9yPFQ+IHRvTmF0
aXZlQXJndW1lbnRzKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBzaXplX3Qgc3RhcnRJbmRleCkKIHsK
LSAgICBzaXplX3QgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOworICAgIHNpemVfdCBs
ZW5ndGggPSBleGVjLmFyZ3VtZW50Q291bnQoKTsKICAgICBBU1NFUlQoc3RhcnRJbmRleCA8PSBs
ZW5ndGgpOwogCiAgICAgVmVjdG9yPFQ+IHJlc3VsdDsKQEAgLTc1NSw3ICs3NTUsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBWZWN0b3I8VD4gdG9OYXRpdmVBcmd1bWVudHMoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIHNpemVfdCBzdAogCiAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBUIGluZGV4VmFsdWU7Ci0gICAgICAgIGlmICghVHJh
aXRzVHlwZTo6bmF0aXZlVmFsdWUoZXhlYywgZXhlYy0+YXJndW1lbnQoaSksIGluZGV4VmFsdWUp
KQorICAgICAgICBpZiAoIVRyYWl0c1R5cGU6Om5hdGl2ZVZhbHVlKGV4ZWMsIGV4ZWMudW5jaGVj
a2VkQXJndW1lbnQoaSksIGluZGV4VmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxU
PigpOwogICAgICAgICByZXN1bHQudW5jaGVja2VkQXBwZW5kKGluZGV4VmFsdWUpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKaW5kZXggM2FmYThiZWE3
YTE0MzJjYTk5Y2I3M2RmMGM2MDQ0MzUyZmMwMDJhNS4uMDgyNDFmZGRhZDE1ZGM0YjVlYWY0Y2Fj
ZWY3MmI4MmFmMGM1OTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252
ZXJ0LmgKQEAgLTEyMiw3ICsxMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29u
dmVydGVyPFZlY3RvcjxUPj4gOiBEZWZhdWx0Q29udmVydGVyPFZlY3RvcjxUPj4gewogICAgIHN0
YXRpYyBWZWN0b3I8VD4gY29udmVydChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgdG9OYXRpdmVBcnJheSBmdW5j
dGlvbiBkb2Vzbid0IHRocm93IGEgdHlwZSBlcnJvciBpZiB0aGUgdmFsdWUgaXMgbm90IGFuIG9i
amVjdC4gSXMgdGhhdCBPSz8KLSAgICAgICAgcmV0dXJuIHRvTmF0aXZlQXJyYXk8VD4oJnN0YXRl
LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB0b05hdGl2ZUFycmF5PFQ+KHN0YXRlLCB2YWx1ZSk7
CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5j
cHAKaW5kZXggN2M0ODQ4ZDY4NDkwY2UyNzg2YWU3YzNjMWRhYWM2YzM4MTkyMjA0Zi4uNzE5N2Yw
ZmM0NWQwYWQwYzgzZGY0NzI5ZDIxZTE4MjI1ZTdiNzZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwCkBAIC0xNDksMTEgKzE0OSwxMiBAQCB2b2lkIEpT
RGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwg
U3RyaW5nJiByZXN1bHQpCiAKIHZvaWQgSlNEaWN0aW9uYXJ5Ojpjb252ZXJ0VmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KQogeworICAg
IEFTU0VSVChleGVjKTsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICBKU09iamVjdCogb2Jq
ZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMsIHZhbHVlLCBsZW5ndGgpOworICAgIEpTT2JqZWN0KiBv
YmplY3QgPSB0b0pTU2VxdWVuY2UoKmV4ZWMsIHZhbHVlLCBsZW5ndGgpOwogICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTAsMTMgKzIxMSwxNCBA
QCB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUgdmFs
dWUsIFJlZlB0cjxUcmFja0Jhc2U+JiByZQogCiB2b2lkIEpTRGljdGlvbmFyeTo6Y29udmVydFZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSGFzaFNldDxBdG9taWNTdHJpbmc+
JiByZXN1bHQpCiB7CisgICAgQVNTRVJUKGV4ZWMpOwogICAgIHJlc3VsdC5jbGVhcigpOwogCiAg
ICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5j
ZShleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gdG9KU1NlcXVl
bmNlKCpleGVjLCB2YWx1ZSwgbGVuZ3RoKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjgwLDExICsyODIsMTIgQEAgdm9pZCBKU0RpY3Rpb25h
cnk6OmNvbnZlcnRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVm
UHRyPFJUQ1IKIAogdm9pZCBKU0RpY3Rpb25hcnk6OmNvbnZlcnRWYWx1ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW0+PiYgcmVzdWx0KQog
eworICAgIEFTU0VSVChleGVjKTsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICBKU09iamVj
dCogb2JqZWN0ID0gdG9KU1NlcXVlbmNlKGV4ZWMsIHZhbHVlLCBsZW5ndGgpOworICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2UoKmV4ZWMsIHZhbHVlLCBsZW5ndGgpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcAppbmRleCAxMjEwMDQyNWI0NjQ2Yjc0MGY2
MTc2ZjhkMDhiZDdkODhkOGExZGUxLi40ZmMxYzdjNzkyMDdkYzJkZjg4MTNmNTM0ZjIwMWU2NTdh
ZjI3ZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAK
QEAgLTUyLDcgKzUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U0ZpbGUoRXhlY1N0YXRlJiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigm
ZXhlYywgQVNDSUlMaXRlcmFsKCJGaXJzdCBhcmd1bWVudCB0byBGaWxlIGNvbnN0cnVjdG9yIG11
c3QgYmUgYSB2YWxpZCBzZXF1ZW5jZSwgd2FzIHVuZGVmaW5lZCBvciBudWxsIikpOwogCiAgICAg
dW5zaWduZWQgYmxvYlBhcnRzTGVuZ3RoID0gMDsKLSAgICBKU09iamVjdCogYmxvYlBhcnRzID0g
dG9KU1NlcXVlbmNlKCZleGVjLCBhcmcsIGJsb2JQYXJ0c0xlbmd0aCk7CisgICAgSlNPYmplY3Qq
IGJsb2JQYXJ0cyA9IHRvSlNTZXF1ZW5jZShleGVjLCBhcmcsIGJsb2JQYXJ0c0xlbmd0aCk7CiAg
ICAgaWYgKGV4ZWMuaGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKGJsb2JQYXJ0cyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCmluZGV4IDVhZmJj
ZDAwNjM3ZjVmMTk0OGE5YjdkZmJiMGIxYTdhYjJmNzA2ZTkuLjM1MTI4Y2UwZjgxNjNjNzBlOWNi
ZDFhMDQ4ZmZiMTVkODI4NmVhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgZmlsbE1l
c3NhZ2VQb3J0QXJyYXkoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUs
IE1lc3NhZ2VQb3J0CiAKICAgICAvLyBWYWxpZGF0aW9uIG9mIHNlcXVlbmNlIHR5cGVzLCBwZXIg
V2ViSURMIHNwZWMgNC4xLjEzLgogICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7Ci0gICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHRvSlNTZXF1ZW5jZSgmc3RhdGUsIHZhbHVlLCBsZW5ndGgpOworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSB0b0pTU2VxdWVuY2Uoc3RhdGUsIHZhbHVlLCBsZW5ndGgpOwogICAg
IGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGYw
YmY3MGJkNDkxM2YwYjNkZGUxMWUxZGJhZjg3NmVkZmZmOWUxYjEuLjFkY2FkNTkzNjRjMmU3ODg1
OGFjMWM3ZTViNzg0YzkzMTg1MmUxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNzE3LDcgKzM3MTcsNyBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICRuYW1lLnVuY2hlY2tlZEFwcGVuZChpdGVtKTtcbiIpOwogICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKQogICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRp
dmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05hdGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5
cGU+KHN0YXRlLCAkYXJndW1lbnRJbmRleCk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4gJG5hbWUgPSB0b05h
dGl2ZUFyZ3VtZW50czwkbmF0aXZlRWxlbWVudFR5cGU+KCpzdGF0ZSwgJGFyZ3VtZW50SW5kZXgp
O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpO1xuIik7CiAgICAgICAgICAgICB9CkBAIC00NDU0LDcgKzQ0NTQsNyBAQCBzdWIgSlNWYWx1
ZVRvTmF0aXZlCiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMke2FycmF5T3JTZXF1
ZW5jZVR5cGV9LmgiKTsKICAgICAgICAgICAgIHJldHVybiAoIih0b1JlZlB0ck5hdGl2ZUFycmF5
PCR7YXJyYXlPclNlcXVlbmNlVHlwZX0sIEpTJHthcnJheU9yU2VxdWVuY2VUeXBlfT4oc3RhdGUs
ICR2YWx1ZSwgJkpTJHthcnJheU9yU2VxdWVuY2VUeXBlfTo6dG9XcmFwcGVkKSkiLCAxKTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gKCJ0b05hdGl2ZUFycmF5PCIgLiBHZXROYXRpdmVWZWN0
b3JJbm5lclR5cGUoJGFycmF5T3JTZXF1ZW5jZVR5cGUpIC4gIj4oc3RhdGUsICR2YWx1ZSkiLCAx
KTsKKyAgICAgICAgcmV0dXJuICgidG9OYXRpdmVBcnJheTwiIC4gR2V0TmF0aXZlVmVjdG9ySW5u
ZXJUeXBlKCRhcnJheU9yU2VxdWVuY2VUeXBlKSAuICI+KCpzdGF0ZSwgJHZhbHVlKSIsIDEpOwog
ICAgIH0KIAogICAgIHJldHVybiAoJHZhbHVlLCAwKSBpZiAkdHlwZSBlcSAiYW55IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKaW5kZXggYjA0ZjBiMGRiYThiYjI3N2JlNzU3YjMzZTNkNTNlZmFhMWFmNTE2Zi4uMWFmMzE0
YzZkYzVmYTZmMGQ3MTBjYWE2ZTMyMzVkNDNiZmYxYTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ5MDQs
NyArNDkwNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jCiAgICAgICAgIHJldHVybiB0aHJv
d1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0
T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0g
ICAgYXV0byBzZXF1ZW5jZSA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDApKTsKKyAgICBhdXRvIHNlcXVlbmNlID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpz
dGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4
Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKICAgICBpbXBsLm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKFdURk1vdmUoc2VxdWVuY2Up
KTsKQEAgLTQ5NzksNyArNDk3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcnJheShFCiAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJtZXRob2RXaXRo
T3B0aW9uYWxBcnJheSIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7Ci0gICAgYXV0byBhcnJheSA9IHN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgp
ID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkgOiB0b05hdGl2ZUFycmF5PFN0cmluZz4oc3Rh
dGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheSA9IHN0YXRl
LT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KCkg
OiB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQo
MCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwubWV0aG9kV2l0
aE9wdGlvbmFsQXJyYXkoV1RGTW92ZShhcnJheSkpOwpAQCAtNDk5NCw3ICs0OTk0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbEFycmF5SXMKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigq
c3RhdGUsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eSIpOwogICAg
IEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgSlNUZXN0T2JqOjppbmZvKCkp
OwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgYXV0byBhcnJh
eSA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKKyAg
ICBhdXRvIGFycmF5ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm1ldGhv
ZFdpdGhPcHRpb25hbEFycmF5SXNFbXB0eShXVEZNb3ZlKGFycmF5KSk7CkBAIC01Mzc3LDcgKzUz
NzcsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDcoRXhlY1N0YQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRU
aGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJh
eTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcg
PSB0b05hdGl2ZUFycmF5PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChX
VEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01NDExLDcgKzU0MTEsNyBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDko
RXhlY1N0YQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
LSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+
YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PFN0cmluZz4o
KnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFk
RXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogICAgIGltcGwub3ZlcmxvYWRlZE1ldGhvZChXVEZNb3ZlKGFycmF5QXJnKSk7CkBAIC01
NDI4LDcgKzU0MjgsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwKEV4ZWNTdAogICAgIGF1dG8mIGltcGwg
PSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVu
dENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9O
YXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0
byBhcnJheUFyZyA9IHRvTmF0aXZlQXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLm92ZXJs
b2FkZWRNZXRob2QoV1RGTW92ZShhcnJheUFyZykpOwpAQCAtNTY3NCw3ICs1Njc0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhVbnNpZ25lZExvbmdTZXEKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBl
ZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7Ci0gICAgYXV0byB1bnNpZ25lZExvbmdTZXF1ZW5jZSA9IHRvTmF0aXZlQXJy
YXk8dWludDMyX3Q+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdW5zaWdu
ZWRMb25nU2VxdWVuY2UgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5t
ZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UoV1RGTW92ZSh1bnNpZ25lZExvbmdTZXF1ZW5j
ZSkpOwpAQCAtNTY5Miw3ICs1NjkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1MKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVB
cnJheTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdmFsdWVz
ID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAg
ICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJy
YXkoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0cmluZ0FycmF5RnVu
Y3Rpb24oV1RGTW92ZSh2YWx1ZXMpLCBlYykpOwpAQCAtNTczMywxMCArNTczMywxMCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEFuZFdpdGhvdXROdWxsYQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVk
KCk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3Ioc3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4o
c3RhdGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZl
QXJyYXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2
ZUFycmF5PHVpbnQzMl90PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIG51
bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5h
cmd1bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5t
ZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UoV1RGTW92ZShhcnJheUFyZyksIFdU
Rk1vdmUobnVsbGFibGVBcnJheUFyZykpOwpAQCAtNTc1MywxMCArNTc1MywxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aEFuZFdpdGhvdXROdWxsYQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAyKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3Rh
dGUsIHN0YXRlLT5hcmd1bWVudCgwKSk7CisgICAgYXV0byBhcnJheUFyZyA9IHRvTmF0aXZlQXJy
YXk8dWludDMyX3Q+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICBhdXRvIG51bGxhYmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFy
cmF5PHVpbnQzMl90PihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDEpKTsKKyAgICBhdXRvIG51bGxh
YmxlQXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5PHVpbnQzMl90Pigqc3RhdGUsIHN0YXRlLT5hcmd1
bWVudCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC5tZXRo
b2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2UyKFdURk1vdmUoYXJyYXlBcmcpLCBXVEZN
b3ZlKG51bGxhYmxlQXJyYXlBcmcpKTsKQEAgLTU5NDIsNyArNTk0Miw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5jdGlv
bldpdGhTZXF1ZW5jCiAgICAgICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgICAg
IHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwgIm9iakFyZyIsICJUZXN0
T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aFNlcXVlbmNlIiwgIlRlc3RPYmoiKTsKICAgICB9Ci0g
ICAgYXV0byBhID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVu
dCgxKSk7CisgICAgYXV0byBhID0gdG9OYXRpdmVBcnJheTx1aW50MzJfdD4oKnN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwuc3RyaWN0RnVuY3Rpb25XaXRoU2VxdWVuY2Uo
b2JqQXJnLCBXVEZNb3ZlKGEpLCBlYykpOwpAQCAtNTk2NSw3ICs1OTY1LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0
aW9uV2l0aEFycmF5KEUKICAgICBhdXRvIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0
YXRlLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9i
aiIsICJzdHJpY3RGdW5jdGlvbldpdGhBcnJheSIsICJUZXN0T2JqIik7Ci0gICAgYXV0byBhcnJh
eSA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oc3RhdGUsIHN0YXRlLT5hcmd1bWVudCgxKSk7Cisg
ICAgYXV0byBhcnJheSA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0YXRlLCBzdGF0ZS0+YXJn
dW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNCb29sZWFuKGltcGwuc3RyaWN0RnVuY3Rpb25XaXRoQXJyYXkoKm9iakFyZywg
V1RGTW92ZShhcnJheSksIGVjKSk7CkBAIC01OTg3LDcgKzU5ODcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdN
ZXRob2QoRXhlYwogICAgIGF1dG8gaGVhZCA9IHN0YXRlLT5hcmd1bWVudCgwKS50b1dURlN0cmlu
ZyhzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgVmVjdG9yPFN0
cmluZz4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPFN0cmluZz4oc3RhdGUsIDEpOworICAgIFZl
Y3RvcjxTdHJpbmc+IHRhaWwgPSB0b05hdGl2ZUFyZ3VtZW50czxTdHJpbmc+KCpzdGF0ZSwgMSk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgaW1wbC52YXJpYWRpY1N0cmlu
Z01ldGhvZChXVEZNb3ZlKGhlYWQpLCBXVEZNb3ZlKHRhaWwpKTsKQEAgLTYwMDcsNyArNjAwNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25WYXJpYWRpY0RvdWJsZU1ldGhvZChFeGVjCiAgICAgYXV0byBoZWFkID0gY29udmVydDxkb3Vi
bGU+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVz
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBWZWN0b3I8ZG91YmxlPiB0
YWlsID0gdG9OYXRpdmVBcmd1bWVudHM8ZG91YmxlPihzdGF0ZSwgMSk7CisgICAgVmVjdG9yPGRv
dWJsZT4gdGFpbCA9IHRvTmF0aXZlQXJndW1lbnRzPGRvdWJsZT4oKnN0YXRlLCAxKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBpbXBsLnZhcmlhZGljRG91YmxlTWV0aG9k
KFdURk1vdmUoaGVhZCksIFdURk1vdmUodGFpbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDU5Mjg5MzU3YzkxZDg3ZDJiNjNjNzJlOTJlYTFj
YmM3ODE4NTFhYjAuLjFmYTFlZGFkNzhiZDQ4ZjUzYWVhNDllMDliNmEyN2I5MjlhMDBmNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNvbnN0cnVjdEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM0KEV4ZWNTdGF0ZSogcwogc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzNShFeGVjU3RhdGUq
IHN0YXRlKQogewogICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKLSAgICBWZWN0b3I8
aW50MzJfdD4gbG9uZ0FyZ3MgPSB0b05hdGl2ZUFyZ3VtZW50czxpbnQzMl90PihzdGF0ZSwgMCk7
CisgICAgVmVjdG9yPGludDMyX3Q+IGxvbmdBcmdzID0gdG9OYXRpdmVBcmd1bWVudHM8aW50MzJf
dD4oKnN0YXRlLCAwKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBhdXRv
IG9iamVjdCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUobG9uZ0FyZ3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggNDdlNzUzMDQyODRiNGQ0Njg2MmVmNjY0YTJjOWZmZjYy
OTk2MzUwNy4uODJlOGY5MTA1OTBjN2M1NDZiYmYwZGMwMzNlNTVlMTQ0OGQzYWU1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCkBAIC00NTUsNyArNDU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0
YXQKICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsICJUZXN0VHlwZWRl
ZnMiLCAiZnVuYyIpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywg
SlNUZXN0VHlwZWRlZnM6OmluZm8oKSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKLSAgICBhdXRvIHggPSB0b05hdGl2ZUFycmF5PGludDMyX3Q+KHN0YXRlLCBzdGF0
ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8geCA9IHRvTmF0aXZlQXJyYXk8aW50MzJfdD4oKnN0
YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhj
ZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogICAgIGltcGwuZnVuYyhXVEZNb3ZlKHgpKTsKQEAgLTUxOCw3ICs1MTgsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxs
YWJsZUFycmF5QXJnKEV4ZQogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7
CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
c3RhdGUpKTsKLSAgICBhdXRvIGFycmF5QXJnID0gdG9OYXRpdmVBcnJheTxTdHJpbmc+KHN0YXRl
LCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gYXJyYXlBcmcgPSB0b05hdGl2ZUFycmF5
PFN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIGltcGwubnVsbGFibGVBcnJheUFyZyhXVEZNb3ZlKGFycmF5QXJn
KSk7CkBAIC01NjgsNyArNTY4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbigKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGF1dG8gdmFsdWVzID0gdG9OYXRpdmVBcnJh
eTxTdHJpbmc+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCkpOworICAgIGF1dG8gdmFsdWVzID0g
dG9OYXRpdmVBcnJheTxTdHJpbmc+KCpzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXko
c3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLnN0cmluZ0FycmF5RnVuY3Rp
b24oV1RGTW92ZSh2YWx1ZXMpLCBlYykpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ0Fy
cmF5RnVuY3Rpb24yCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhdXRv
IHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50KDAp
KTsKKyAgICBhdXRvIHZhbHVlcyA9IHRvTmF0aXZlQXJyYXk8U3RyaW5nPigqc3RhdGUsIHN0YXRl
LT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc0FycmF5KHN0YXRlLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
aW1wbC5zdHJpbmdBcnJheUZ1bmN0aW9uMihXVEZNb3ZlKHZhbHVlcyksIGVjKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>