<?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>109065</bug_id>
          
          <creation_ts>2013-02-06 10:31:11 -0800</creation_ts>
          <short_desc>[v8] move persistent::new and ::dispose into same class</short_desc>
          <delta_ts>2013-02-07 11:54:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (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>0</everconfirmed>
          <reporter name="Dan Carney">dcarney</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826533</commentid>
    <comment_count>0</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-06 10:31:11 -0800</bug_when>
    <thetext>[v8] move persistent::new and ::dispose into same class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826534</commentid>
    <comment_count>1</comment_count>
      <attachid>186875</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-06 10:33:14 -0800</bug_when>
    <thetext>Created attachment 186875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826544</commentid>
    <comment_count>2</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-06 10:42:38 -0800</bug_when>
    <thetext>There&apos;s no reason to ever pass around v8::Persistent objects, and the misuse use them makes it easy to generate memory leaks. This patch fixes that problem for ScriptWrappable and DomDataStore.

I haven&apos;t rebaselined the bindings test classed, but i&apos;ll do that before commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826675</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 12:56:17 -0800</bug_when>
    <thetext>I don&apos;t really understand what problem this patch solves.  Is this just about making the code easier to understand?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826679</commentid>
    <comment_count>4</comment_count>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-06 12:59:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; I don&apos;t really understand what problem this patch solves.  Is this just about making the code easier to understand?

i just want the Persistent::New and Persistent::Dispose in the same spot, and to ensure Persistent::Clear is called on the correct object.  Often, the wrong thing is cleared (the handle coming in on the weak callback and not the handle that created the weak callback).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826688</commentid>
    <comment_count>5</comment_count>
      <attachid>186875</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 13:05:45 -0800</bug_when>
    <thetext>Comment on attachment 186875
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2183
&gt; -    V8DOMWrapper::associateObjectWithWrapper(impl.release(), &amp;${v8InterfaceName}Constructor::info, wrapper, args.GetIsolate());
&gt; +    V8DOMWrapper::associateObjectWithWrapper(impl.release(), &amp;${v8InterfaceName}Constructor::info, wrapper, args.GetIsolate(), true);

Is it possible that we could avoid having to pass &quot;true&quot; here?  How did we used to figure this out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826689</commentid>
    <comment_count>6</comment_count>
      <attachid>186875</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 13:06:25 -0800</bug_when>
    <thetext>Comment on attachment 186875
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3545
&gt; -    v8::Persistent&lt;v8::Object&gt; wrapperHandle = V8DOMWrapper::associateObjectWithWrapper(impl, &amp;info, wrapper, isolate);
&gt; -    if (!hasDependentLifetime)
&gt; -        wrapperHandle.MarkIndependent();
&gt; +    V8DOMWrapper::associateObjectWithWrapper(impl, &amp;info, wrapper, isolate, hasDependentLifetime);

I see.  We used to do it here.  Maybe we should use an enum instead of a boolean parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826690</commentid>
    <comment_count>7</comment_count>
      <attachid>186875</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-06 13:09:30 -0800</bug_when>
    <thetext>Comment on attachment 186875
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3545
&gt;&gt; +    V8DOMWrapper::associateObjectWithWrapper(impl, &amp;info, wrapper, isolate, hasDependentLifetime);
&gt; 
&gt; I see.  We used to do it here.  Maybe we should use an enum instead of a boolean parameter.

I could add the WrapperConfiguration at this stage and pass that.  It would be easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826712</commentid>
    <comment_count>8</comment_count>
      <attachid>186875</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-06 13:29:33 -0800</bug_when>
    <thetext>Comment on attachment 186875
Patch

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

Generally this patch looks fine.  I would prefer if the associateObjectWithWrapper didn&apos;t have a raw boolean parameter though.  Either an enum or a WrapperConfiguration seems better.

&gt; Source/WebCore/bindings/v8/ScriptWrappable.h:47
&gt; +        if (!m_maskedWrapper.IsEmpty())
&gt; +            CRASH();

This part of the patch seems separable from the rest of this work.  Perhaps we should make this change in a separate patch?

&gt; Source/WebCore/bindings/v8/ScriptWrappable.h:79
&gt;      v8::Persistent&lt;v8::Object&gt; m_maskedWrapper;

Aside from the masking, it seems like we could use a ScopedPersistent here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826718</commentid>
    <comment_count>9</comment_count>
      <attachid>186875</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-06 13:40:43 -0800</bug_when>
    <thetext>Comment on attachment 186875
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/ScriptWrappable.h:47
&gt;&gt; +            CRASH();
&gt; 
&gt; This part of the patch seems separable from the rest of this work.  Perhaps we should make this change in a separate patch?

sure. i can remove it or replace it with an assert in another patch. i thought it might help block a potential use after free exploit, but I understood the ordering wrong.

&gt;&gt; Source/WebCore/bindings/v8/ScriptWrappable.h:79
&gt;&gt;      v8::Persistent&lt;v8::Object&gt; m_maskedWrapper;
&gt; 
&gt; Aside from the masking, it seems like we could use a ScopedPersistent here.

Yeah, if I can get the masking removed at some point, I&apos;ll just replace it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827148</commentid>
    <comment_count>10</comment_count>
      <attachid>187015</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 01:06:29 -0800</bug_when>
    <thetext>Created attachment 187015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827149</commentid>
    <comment_count>11</comment_count>
      <attachid>187016</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 01:09:50 -0800</bug_when>
    <thetext>Created attachment 187016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827150</commentid>
    <comment_count>12</comment_count>
      <attachid>187016</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 01:10:24 -0800</bug_when>
    <thetext>Comment on attachment 187016
Patch

comments addressed - bindings tests rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827157</commentid>
    <comment_count>13</comment_count>
      <attachid>187016</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-07 01:15:56 -0800</bug_when>
    <thetext>Comment on attachment 187016
Patch

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

&gt; Source/WebCore/bindings/v8/WrapperTypeInfo.h:148
&gt; +            DEPENDENT, INDEPENDENT

Per the style guide, this should be:

  Dependent, Independent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827325</commentid>
    <comment_count>14</comment_count>
      <attachid>187063</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 04:40:45 -0800</bug_when>
    <thetext>Created attachment 187063
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827326</commentid>
    <comment_count>15</comment_count>
      <attachid>187063</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 04:41:18 -0800</bug_when>
    <thetext>Comment on attachment 187063
Patch

enum values names fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827330</commentid>
    <comment_count>16</comment_count>
      <attachid>187063</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-07 04:44:47 -0800</bug_when>
    <thetext>Comment on attachment 187063
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827527</commentid>
    <comment_count>17</comment_count>
      <attachid>187063</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 08:08:20 -0800</bug_when>
    <thetext>Comment on attachment 187063
Patch

Rejecting attachment 187063 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 187063, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:

patching file Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8MessageChannelCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8MutationObserverCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8WebKitPointCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16434205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827591</commentid>
    <comment_count>18</comment_count>
      <attachid>187063</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 09:00:35 -0800</bug_when>
    <thetext>Comment on attachment 187063
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827601</commentid>
    <comment_count>19</comment_count>
      <attachid>187063</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 09:20:11 -0800</bug_when>
    <thetext>Comment on attachment 187063
Patch

Rejecting attachment 187063 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 187063, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:

patching file Source/WebCore/bindings/v8/custom/V8IntentCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8MessageChannelCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8MutationObserverCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8WebKitPointCustom.cpp
patching file Source/WebCore/bindings/v8/custom/V8XMLHttpRequestCustom.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16430231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827642</commentid>
    <comment_count>20</comment_count>
      <attachid>187130</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 10:02:14 -0800</bug_when>
    <thetext>Created attachment 187130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827644</commentid>
    <comment_count>21</comment_count>
      <attachid>187130</attachid>
    <who name="Dan Carney">dcarney</who>
    <bug_when>2013-02-07 10:02:56 -0800</bug_when>
    <thetext>Comment on attachment 187130
Patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827767</commentid>
    <comment_count>22</comment_count>
      <attachid>187130</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 11:54:20 -0800</bug_when>
    <thetext>Comment on attachment 187130
Patch

Clearing flags on attachment: 187130

Committed r142159: &lt;http://trac.webkit.org/changeset/142159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827768</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 11:54:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186875</attachid>
            <date>2013-02-06 10:33:14 -0800</date>
            <delta_ts>2013-02-07 01:06:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109065-20130206192948.patch</filename>
            <type>text/plain</type>
            <size>34815</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uYTRhMTJkZDBiOGNlYmMxOWI4OGQ1N2NjZWViYWY4
MzliOGVkMjYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEzLTAyLTA2ICBEYW4g
Q2FybmV5ICA8ZGNhcm5leUBnb29nbGUuY29tPgorCisgICAgICAgIFt2OF0gbW92ZSBwZXJzaXN0
ZW50OjpuZXcgYW5kIDo6ZGlzcG9zZSBpbnRvIHNhbWUgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGlu
IGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6Cisg
ICAgICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5l
cmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252
ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0
YVN0b3JlOjpzZXRXcmFwcGVyKToKKyAgICAgICAgKERPTURhdGFTdG9yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OnNldFdyYXBwZXJJbk9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBl
ck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlck1hcDo6Z2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFw
cGVyTWFwOjpyZW1vdmVBbmREaXNwb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJN
YXA6OmRlZmF1bHRXZWFrQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdy
YXBwYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjp+U2NyaXB0V3Jh
cHBhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpkaXNwb3NlV3JhcHBlcik6CisgICAgICAgIChTY3Jp
cHRXcmFwcGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjp3ZWFrQ2Fs
bGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdyk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6CisgICAgICAgIChWOERPTVdyYXBwZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp3ZWFrTlBPYmplY3RDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVW
OE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldFY4T2JqZWN0Rm9y
TlBPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6
ZUNvbnRleHRJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZv
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdyYXBwZXJDb25maWd1cmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OldyYXBwZXJDb25maWd1cmF0aW9uOjpjb25maWd1cmVXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6d3JhcEFycmF5QnVmZmVyVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpj
b25zdHJ1Y3RXZWJHTEFycmF5KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRp
b0NvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBdWRpb0NvbnRleHQ6OmNv
bnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTUZvcm1EYXRhQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NRm9ybURhdGE6
OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERhdGFWaWV3Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmNv
bnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp2OEhU
TUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnRlbnQ6
OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2Fn
ZUNoYW5uZWw6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFdlYktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKwogMjAxMy0wMi0wNiAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgT3B0aW1pemUgR2x5cGhQYWdlIGZvciBjYXNlIHdoZXJlIGFsbCBnbHlwaHMgYXJl
IGF2YWlsYWJsZSBpbiB0aGUgc2FtZSBmb250LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAzMzQyODVhNjZhZTEwMmI3ODZj
ODFiYTAyNTIzN2IzMmE0OTliNmRiLi5lYzI1MzEwNTQyNzA1NjhmMmEyYTFjODljMmY5NWUxODk4
MzY3OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JWOC5wbQpAQCAtMTk2NCw3ICsxOTY0LDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIHRydWUpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTIwMzksNyArMjAzOSw3IEBAIEVORAogICAgIFJlZlB0
cjwke2ludGVyZmFjZU5hbWV9PiBldmVudCA9ICR7aW50ZXJmYWNlTmFtZX06OmNyZWF0ZSh0eXBl
LCBldmVudEluaXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGV2ZW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCB0cnVlKTsKICAgICByZXR1cm4g
d3JhcHBlcjsKIH0KIApAQCAtMjE4MCw3ICsyMTgwLDcgQEAgRU5ECiAKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1lfUNvbnN0cnVjdG9yOjpp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJiR7djhJbnRlcmZhY2VOYW1l
fUNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgdHJ1ZSk7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMzU0Miw5ICszNTQyLDcgQEAgRU5ECiAgICAg
ICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdy
YXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVu
dExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdy
YXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIEVORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAK
aW5kZXggY2NiOWI4YTBjNmZkMGQxNTg3ODJmOTQ1NDFiYjUxM2QyYWEyM2ZkOC4uMTJhNTJmZTQw
NmVhYTNkOWEwMzY0MjhjNzRhZDZhNzhjNGUwYmE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC04MCwyNCArODAsNCBAQCB2b2lkIERPTURhdGFT
dG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKICAgICBpbmZvLmFkZE1lbWJlcihtX3dyYXBwZXJNYXAsICJ3cmFwcGVyTWFwIik7
CiB9CiAKLXZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGNvbnRleHQpCi17Ci0g
ICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBzdGF0aWNfY2FzdDxTY3JpcHRXcmFwcGFibGUqPihj
b250ZXh0KTsKLSAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSk7Ci0gICAgQVNTRVJUKGtleS0+d3JhcHBlcigpID09IHdyYXBwZXIpOwotICAgIC8v
IE5vdGU6IHxvYmplY3R8IG1pZ2h0IG5vdCBiZSBlcXVhbCB0byB8a2V5fCwgZS5nLiwgaWYgU2Ny
aXB0V3JhcHBhYmxlIGlzbid0IGEgbGVmdC1tb3N0IGJhc2UgY2xhc3MuCi0gICAgdm9pZCogb2Jq
ZWN0ID0gdG9OYXRpdmUod3JhcHBlcik7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiBpbmZvID0gdG9X
cmFwcGVyVHlwZUluZm8od3JhcHBlcik7Ci0gICAgQVNTRVJUKGluZm8tPmRlcmVmT2JqZWN0RnVu
Y3Rpb24pOwotCi0gICAga2V5LT5jbGVhcldyYXBwZXIoKTsKLSAgICB2YWx1ZS5EaXNwb3NlKCk7
Ci0gICAgdmFsdWUuQ2xlYXIoKTsKLSAgICAvLyBGSVhNRTogSSBub3RpY2VkIHRoYXQgNTAlfiBv
ZiBtaW5vciBHQyBjeWNsZSB0aW1lcyBjYW4gYmUgY29uc3VtZWQKLSAgICAvLyBpbnNpZGUga2V5
LT5kZXJlZigpLCB3aGljaCBjYXVzZXMgTm9kZSBkZXN0cnVjdGlvbnMuIFdlIHNob3VsZAotICAg
IC8vIG1ha2UgTm9kZSBkZXN0cnVjdGlvbnMgaW5jcmVtZW50YWwuCi0gICAgaW5mby0+ZGVyZWZP
YmplY3Qob2JqZWN0KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCBkNzJkNGE1MTA1Mzc2MmRkMjcyMzE1
NTUxZjI5MzIwZjI1MjhhYzQzLi4wMjY2ZWQ5MjlkZTg3NTliNzVmNTU4MDU1OGE4NDE5ZmZkMjUz
MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAtODks
MTUgKzg5LDE1IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
ICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgdm9pZCBz
ZXRXcmFwcGVyKFQqIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgewogICAgICAgICBpZiAobWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qo
b2JqZWN0KSAmJiBpc01haW5Xb3JsZE9iamVjdChvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAo
TElLRUxZKCFET01XcmFwcGVyV29ybGQ6Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpIHsKLSAgICAg
ICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlKTsK
KyAgICAgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29s
YXRlLCBjb25maWd1cmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGN1cnJlbnQoaXNvbGF0ZSktPnNldChvYmpl
Y3QsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgICAgICByZXR1cm4gY3VycmVudChpc29sYXRlKS0+
c2V0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KQEAgLTEwOCwyMSArMTA4LDIxIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIG1fd3JhcHBlck1hcC5nZXQob2JqZWN0KTsKICAgICB9CiAKKyAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0ZToK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkIHNldChUKiBvYmplY3Qs
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRl
KQorICAgIGlubGluZSB2b2lkIHNldChUKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9u
JiBjb25maWd1cmF0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKCEhb2JqZWN0KTsKICAgICAg
ICAgQVNTRVJUKCF3cmFwcGVyLklzRW1wdHkoKSk7CiAgICAgICAgIGlmIChtYWluV29ybGRXcmFw
cGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIG1fdHlwZSA9PSBNYWluV29ybGQpIHsKLSAg
ICAgICAgICAgIHNldFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOwor
ICAgICAgICAgICAgc2V0V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwg
Y29uZmlndXJhdGlvbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
bV93cmFwcGVyTWFwLnNldChvYmplY3QsIHdyYXBwZXIpOworICAgICAgICBtX3dyYXBwZXJNYXAu
c2V0KG9iamVjdCwgd3JhcHBlciwgY29uZmlndXJhdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCBy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7Ci0KLXByaXZhdGU6CiAg
ICAgc3RhdGljIERPTURhdGFTdG9yZSogbWFpbldvcmxkU3RvcmUoKTsKIAogICAgIHN0YXRpYyBi
b29sIG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KHZvaWQqKSB7IHJldHVybiBmYWxz
ZTsgfQpAQCAtMTU0LDE5ICsxNTQsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG9iamVj
dC0+d3JhcHBlcigpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVj
dCh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKikKKyAgICBz
dGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3Qodm9pZCosIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4sIHY4OjpJc29sYXRlKiwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mKQogICAgIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFdy
YXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgc3RhdGljIHZvaWQg
c2V0V3JhcHBlckluT2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29u
ZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVChvYmplY3Qt
PndyYXBwZXIoKS5Jc0VtcHR5KCkpOwotICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBl
cik7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsoaXNvbGF0ZSwgb2JqZWN0LCB3ZWFrQ2FsbGJh
Y2spOworICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlciwgaXNvbGF0ZSwgY29uZmln
dXJhdGlvbik7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJc29s
YXRlKiwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogY29udGV4dCk7Ci0KICAgICBU
eXBlIG1fdHlwZTsKICAgICBET01XcmFwcGVyTWFwPHZvaWQ+IG1fd3JhcHBlck1hcDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKaW5kZXggMDBjMDNlMDk3
NDM3MGM2ODUxMjNlYjRlNWU1NjhmM2M4Nzg0Yzk5NC4uYWYwZjg5NjcyNzZkZTNkYmQwZDQyYzE0
MWJlOTEwMGQwMThjMmZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBw
ZXJNYXAuaApAQCAtNTAsMTcgKzUwLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gZ2V0KEtleVR5cGUqIGtleSkKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGdldChLZXlUeXBlKiBrZXkpCiAgICAgewogICAgICAgICByZXR1cm4g
bV9tYXAuZ2V0KGtleSk7CiAgICAgfQogCi0gICAgdm9pZCBzZXQoS2V5VHlwZSoga2V5LCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHZvaWQgc2V0KEtleVR5cGUqIGtl
eSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBjb25zdCBXcmFwcGVyQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9tYXAuY29udGFp
bnMoa2V5KSk7CiAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxLZXlUeXBlKj4odG9OYXRpdmUo
d3JhcHBlcikpID09IGtleSk7Ci0gICAgICAgIHdyYXBwZXIuTWFrZVdlYWsobV9pc29sYXRlLCB0
aGlzLCBtX2NhbGxiYWNrKTsKLSAgICAgICAgbV9tYXAuc2V0KGtleSwgd3JhcHBlcik7CisgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6TmV3KG1faXNvbGF0ZSwgd3JhcHBlcik7CisgICAgICAgIGNvbmZpZ3Vy
YXRpb24uY29uZmlndXJlV3JhcHBlcihwZXJzaXN0ZW50LCBtX2lzb2xhdGUpOworICAgICAgICBw
ZXJzaXN0ZW50Lk1ha2VXZWFrKG1faXNvbGF0ZSwgdGhpcywgbV9jYWxsYmFjayk7CisgICAgICAg
IG1fbWFwLnNldChrZXksIHBlcnNpc3RlbnQpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpA
QCAtODEsMTIgKzgzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9j
YWxsYmFjayk7CiAgICAgfQogCi0gICAgdm9pZCByZW1vdmUoS2V5VHlwZSoga2V5LCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgIHZvaWQgcmVtb3ZlQW5kRGlzcG9zZShL
ZXlUeXBlKiBrZXksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogICAgIHsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
cigqdmFsdWUpOwogICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdCA9IG1fbWFw
LmZpbmQoa2V5KTsKICAgICAgICAgQVNTRVJUKGl0ICE9IG1fbWFwLmVuZCgpKTsKICAgICAgICAg
QVNTRVJUKGl0LT52YWx1ZSA9PSB3cmFwcGVyKTsKICAgICAgICAgbV9tYXAucmVtb3ZlKGl0KTsK
KyAgICAgICAgd3JhcHBlci5EaXNwb3NlKGlzb2xhdGUpOworICAgICAgICB2YWx1ZS5DbGVhcigp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTk4LDEwICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAg
ICBXcmFwcGVyVHlwZUluZm8qIHR5cGUgPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKICAg
ICAgICAgQVNTRVJUKHR5cGUtPmRlcmVmT2JqZWN0RnVuY3Rpb24pOwogICAgICAgICBLZXlUeXBl
KiBrZXkgPSBzdGF0aWNfY2FzdDxLZXlUeXBlKj4odG9OYXRpdmUod3JhcHBlcikpOwotCi0gICAg
ICAgIG1hcC0+cmVtb3ZlKGtleSwgd3JhcHBlcik7Ci0gICAgICAgIHdyYXBwZXIuRGlzcG9zZSgp
OwotICAgICAgICB3cmFwcGVyLkNsZWFyKCk7CisgICAgICAgIG1hcC0+cmVtb3ZlQW5kRGlzcG9z
ZShrZXksIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgICAgICB0eXBlLT5kZXJlZk9iamVjdChrZXkp
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUu
aAppbmRleCA2NTUwMDE3NDVhZWZmY2MyZTNmYjU3YWEwMWE2ZmJkNDgzM2M3MzRlLi5jMjJlNGJj
ZTk2MDA2MmFkMjFhNjc2ZDAxMjc1ZGY4MDkzMjVhNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBT
Y3JpcHRXcmFwcGFibGVfaAogCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgorI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgogI2luY2x1ZGUgPHY4Lmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQwLDI4ICs0MSwyNCBAQCBjbGFzcyBTY3JpcHRXcmFwcGFi
bGUgewogcHVibGljOgogICAgIFNjcmlwdFdyYXBwYWJsZSgpIHsgfQogCi0gICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcigpIGNvbnN0CisgICAgflNjcmlwdFdyYXBwYWJsZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4obWFza09y
VW5tYXNrUG9pbnRlcigqbV9tYXNrZWRXcmFwcGVyKSk7CisgICAgICAgIGlmICghbV9tYXNrZWRX
cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgIENSQVNIKCk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZXRXcmFwcGVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyKCkgY29uc3QKICAgICB7Ci0gICAgICAgIG1fbWFz
a2VkV3JhcHBlciA9IG1hc2tPclVubWFza1BvaW50ZXIoKndyYXBwZXIpOworICAgICAgICByZXR1
cm4gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PihtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdy
YXBwZXIpKTsKICAgICB9CiAKLSAgICB2b2lkIGNsZWFyV3JhcHBlcigpCisgICAgdm9pZCBzZXRX
cmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgbV9tYXNr
ZWRXcmFwcGVyLkNsZWFyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBkaXNwb3NlV3JhcHBlcigpCi0g
ICAgewotICAgICAgICBBU1NFUlQoIW1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAg
ICBtX21hc2tlZFdyYXBwZXIgPSB3cmFwcGVyKCk7Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlci5E
aXNwb3NlKCk7Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlci5DbGVhcigpOworICAgICAgICBBU1NF
UlQobV9tYXNrZWRXcmFwcGVyLklzRW1wdHkoKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdy
YXBwZXIpOworICAgICAgICBjb25maWd1cmF0aW9uLmNvbmZpZ3VyZVdyYXBwZXIocGVyc2lzdGVu
dCwgaXNvbGF0ZSk7CisgICAgICAgIHBlcnNpc3RlbnQuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywg
d2Vha0NhbGxiYWNrKTsKKyAgICAgICAgbV9tYXNrZWRXcmFwcGVyID0gbWFza09yVW5tYXNrUG9p
bnRlcigqcGVyc2lzdGVudCk7CiAgICAgfQogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdApAQCAtNzEsNiArNjgsMTQg
QEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBpbmxpbmUgdm9pZCBkaXNwb3NlV3Jh
cHBlcih2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKCFtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCp2YWx1ZSA9
PSBtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKKyAgICAgICAgdmFsdWUu
RGlzcG9zZSgpOworICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xlYXIoKTsKKyAgICB9CisKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX21hc2tlZFdyYXBwZXI7CiAKICAgICBzdGF0
aWMgaW5saW5lIHY4OjpPYmplY3QqIG1hc2tPclVubWFza1BvaW50ZXIoY29uc3Qgdjg6Ok9iamVj
dCogb2JqZWN0KQpAQCAtNzksNiArODQsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgdWlu
dHB0cl90IHJhbmRvbU1hc2sgPSB+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmV2ViQ29y
ZU1lbW9yeVR5cGVzOjpET00pID4+IDEzKTsgLy8gRW50cm9weSB2aWEgQVNMUi4KICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8djg6Ok9iamVjdCo+KChvYmplY3RQb2ludGVyIF4gcmFu
ZG9tTWFzaykgJiAoIW9iamVjdFBvaW50ZXIgLSAxKSk7IC8vIFByZXNlcnZlIG51bGwgd2l0aG91
dCBicmFuY2hpbmcuCiAgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJ
c29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBj
b250ZXh0KQorICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBzdGF0aWNfY2Fz
dDxTY3JpcHRXcmFwcGFibGUqPihjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09i
amVjdCgpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGtl
eS0+d3JhcHBlcigpID09IHdyYXBwZXIpOworICAgICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZh
bHVlKTsKKworICAgICAgICAvLyBOb3RlOiB8b2JqZWN0fCBtaWdodCBub3QgYmUgZXF1YWwgdG8g
fGtleXwsIGUuZy4sIGlmIFNjcmlwdFdyYXBwYWJsZSBpc24ndCBhIGxlZnQtbW9zdCBiYXNlIGNs
YXNzLgorICAgICAgICB2b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKKyAgICAgICAg
V3JhcHBlclR5cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CisgICAg
ICAgIEFTU0VSVChpbmZvLT5kZXJlZk9iamVjdEZ1bmN0aW9uKTsKKworICAgICAgICAvLyBGSVhN
RTogSSBub3RpY2VkIHRoYXQgNTAlfiBvZiBtaW5vciBHQyBjeWNsZSB0aW1lcyBjYW4gYmUgY29u
c3VtZWQKKyAgICAgICAgLy8gaW5zaWRlIGtleS0+ZGVyZWYoKSwgd2hpY2ggY2F1c2VzIE5vZGUg
ZGVzdHJ1Y3Rpb25zLiBXZSBzaG91bGQKKyAgICAgICAgLy8gbWFrZSBOb2RlIGRlc3RydWN0aW9u
cyBpbmNyZW1lbnRhbC4KKyAgICAgICAgaW5mby0+ZGVyZWZPYmplY3Qob2JqZWN0KTsKKyAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDM1YzZkNmE0NjhmZTEwNjEzYzBmNThh
ZTQxNDVlMmIxNDMxY2YyYzEuLmNhNzVkMTI2MjJmOTgzNWJmYzhhZDdkNmQwNDkwNjczMzc5YzA1
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9N
V2luZG93KCkKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGlubmVyR2xvYmFsT2JqZWN0ID0g
dG9Jbm5lckdsb2JhbE9iamVjdChtX2NvbnRleHQuZ2V0KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6
c2V0TmF0aXZlSW5mbyhpbm5lckdsb2JhbE9iamVjdCwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5k
b3cpOwogICAgIGlubmVyR2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUod2luZG93V3JhcHBlcik7
Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRy
PERPTVdpbmRvdz4od2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBt
X2lzb2xhdGUpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
UGFzc1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93
V3JhcHBlciwgbV9pc29sYXRlLCB0cnVlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCBkOGZmMjg2MWZkNzA1ZjJj
NjZjZDRmZjAwY2VjZDc3YTFjNzcwOGIyLi5jYTI0YWJlMzA0Yzc2NzBjZDQxZjNkMTFkYTE4Njdl
OTVkZTkxYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApA
QCAtNTYsMTEgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqLCB2ODo6SXNvbGF0ZSopOwog
CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1Jl
ZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklz
b2xhdGUqKTsKKyAgICAgICAgc3RhdGljIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4sIFdyYXBwZXJUeXBlSW5mbyos
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgYm9vbCBoYXNEZXBlbmRlbnRM
aWZldGltZSk7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXROYXRpdmVJbmZvKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyosIHZvaWQqKTsKICAgICAgICAgc3Rh
dGljIGlubGluZSB2b2lkIGNsZWFyTmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBX
cmFwcGVyVHlwZUluZm8qKTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIHNldFdyYXBwZXJD
bGFzcyh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwotICAgICAgICBzdGF0aWMg
aW5saW5lIHZvaWQgc2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2Jq
ZWN0Pik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNET01XcmFwcGVyKHY4OjpIYW5kbGU8djg6
OlZhbHVlPik7CiAgICAgICAgIHN0YXRpYyBib29sIGlzV3JhcHBlck9mVHlwZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIFdyYXBwZXJUeXBlSW5mbyopOwpAQCAtNjksMTYgKzY3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBzZXROYW1lZEhpZGRlblJlZmVyZW5j
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHBhcmVudCwgY29uc3QgY2hhciogbmFtZSwgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNoaWxkKTsKICAgICB9OwogCi0gICAgaW5saW5lIHZvaWQgVjhET01X
cmFwcGVyOjpzZXRXcmFwcGVyQ2xhc3Modm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIpCi0gICAgewotICAgICAgICB3cmFwcGVyLlNldFdyYXBwZXJDbGFzc0lkKHY4RE9N
T2JqZWN0Q2xhc3NJZCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgVjhET01XcmFwcGVyOjpz
ZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIp
Ci0gICAgewotICAgICAgICB3cmFwcGVyLlNldFdyYXBwZXJDbGFzc0lkKHY4RE9NTm9kZUNsYXNz
SWQpOwotICAgIH0KLQogICAgIGlubGluZSB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5m
byh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBwZXJUeXBlSW5mbyogdHlwZSwg
dm9pZCogb2JqZWN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKHdyYXBwZXItPkludGVybmFsRmll
bGRDb3VudCgpID49IDIpOwpAQCAtOTcsMTQgKzg1LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgaW5saW5lIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihQYXNzUmVmUHRyPFQ+IG9iamVjdCwgV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBib29sIGhhc0Rl
cGVuZGVudExpZmV0aW1lKQogICAgIHsKICAgICAgICAgc2V0TmF0aXZlSW5mbyh3cmFwcGVyLCB0
eXBlLCBvYmplY3QuZ2V0KCkpOwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsK
LSAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7Ci0gICAgICAg
IHNldFdyYXBwZXJDbGFzcyhvYmplY3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwotICAgICAgICBE
T01EYXRhU3RvcmU6OnNldFdyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSwg
aXNvbGF0ZSk7Ci0gICAgICAgIHJldHVybiB3cmFwcGVySGFuZGxlOworICAgICAgICBBU1NFUlQo
bWF5YmVET01XcmFwcGVyKHdyYXBwZXIpKTsKKyAgICAgICAgV3JhcHBlckNvbmZpZ3VyYXRpb24g
Y29uZmlndXJhdGlvbiA9IGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24ob2JqZWN0LmdldCgpLCBo
YXNEZXBlbmRlbnRMaWZldGltZSk7CisgICAgICAgIERPTURhdGFTdG9yZTo6c2V0V3JhcHBlcihv
YmplY3QubGVha1JlZigpLCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuY3BwCmluZGV4IDQ1YmVhMmViNTFhODM5NGI5MTI1OGUwMjU0Njk0ZjdiZWFm
YzA5NjQuLmZjM2Q2MzAxNDA0M2VkYWM1ZDI5ZTEyNjhiNDM4NjFhNTczOTdlZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCkBAIC00MDIsOSArNDAyLDcgQEAg
c3RhdGljIHZvaWQgd2Vha05QT2JqZWN0Q2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4
OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4KIAogICAgIC8vIE11c3QgcmVtb3ZlIGZyb20gb3VyIG1h
cCBiZWZvcmUgY2FsbGluZyBfTlBOX1JlbGVhc2VPYmplY3QoKS4gX05QTl9SZWxlYXNlT2JqZWN0
IGNhbgogICAgIC8vIGNhbGwgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdCwgd2hpY2ggdXNlcyB0
aGUgdGFibGUgYXMgd2VsbC4KLSAgICBzdGF0aWNOUE9iamVjdE1hcCgpLnJlbW92ZShucE9iamVj
dCwgd3JhcHBlcik7Ci0gICAgd3JhcHBlci5EaXNwb3NlKCk7Ci0gICAgd3JhcHBlci5DbGVhcigp
OworICAgIHN0YXRpY05QT2JqZWN0TWFwKCkucmVtb3ZlQW5kRGlzcG9zZShucE9iamVjdCwgd3Jh
cHBlciwgaXNvbGF0ZSk7CiAKICAgICBpZiAoX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKICAgICAg
ICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsKQEAgLTQ0OCwyNyArNDQ2LDI0IEBAIHY4
OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0KiBv
YmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgICAgIHJldHVybiB2YWx1ZTsKIAogICAgIFY4RE9N
V3JhcHBlcjo6c2V0TmF0aXZlSW5mbyh2YWx1ZSwgbnBPYmplY3RUeXBlSW5mbygpLCBvYmplY3Qp
OwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHZhbHVlKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldFdy
YXBwZXJDbGFzcyhvYmplY3QsIHdyYXBwZXJIYW5kbGUpOwogCiAgICAgLy8gS0pTIHJldGFpbnMg
dGhlIG9iamVjdCBhcyBwYXJ0IG9mIGl0cyB3cmFwcGVyIChzZWUgQmluZGluZ3M6OkNJbnN0YW5j
ZSkuCiAgICAgX05QTl9SZXRhaW5PYmplY3Qob2JqZWN0KTsKICAgICBfTlBOX1JlZ2lzdGVyT2Jq
ZWN0KG9iamVjdCwgcm9vdCk7CiAKLSAgICBzdGF0aWNOUE9iamVjdE1hcCgpLnNldChvYmplY3Qs
IHdyYXBwZXJIYW5kbGUpOwotICAgIEFTU0VSVChWOERPTVdyYXBwZXI6Om1heWJlRE9NV3JhcHBl
cih3cmFwcGVySGFuZGxlKSk7CisgICAgV3JhcHBlckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlv
biA9IGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24ob2JqZWN0LCB0cnVlKTsKKyAgICBzdGF0aWNO
UE9iamVjdE1hcCgpLnNldChvYmplY3QsIHZhbHVlLCBjb25maWd1cmF0aW9uKTsKKyAgICBBU1NF
UlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CiAKIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVjdCogb2JqZWN0
KQogewotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBzdGF0aWNOUE9i
amVjdE1hcCgpLmdldChvYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IHN0YXRpY05QT2JqZWN0TWFwKCkuZ2V0KG9iamVjdCk7CiAgICAgaWYgKCF3cmFwcGVyLklz
RW1wdHkoKSkgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgICAgIFY4RE9N
V3JhcHBlcjo6Y2xlYXJOYXRpdmVJbmZvKHdyYXBwZXIsIG5wT2JqZWN0VHlwZUluZm8oKSk7Ci0g
ICAgICAgIHN0YXRpY05QT2JqZWN0TWFwKCkucmVtb3ZlKG9iamVjdCwgd3JhcHBlcik7Ci0gICAg
ICAgIHdyYXBwZXIuRGlzcG9zZSgpOwotICAgICAgICB3cmFwcGVyLkNsZWFyKCk7CisgICAgICAg
IHN0YXRpY05QT2JqZWN0TWFwKCkucmVtb3ZlQW5kRGlzcG9zZShvYmplY3QsIHdyYXBwZXIsIHY4
OjpJc29sYXRlOjpHZXRDdXJyZW50KCkpOwogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3Qob2Jq
ZWN0KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDJjOWVkZTg2NmVmZTUyNjc3MzE4ZDEyZTU5
OTUzNGExYzcyM2EzYmUuLmRhZjAxYTBhZDk2Njg1M2I0YzBiM2E0ODA3NzU4MWM3YjA2N2NjM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBXb3JrZXJTY3JpcHRDb250cm9s
bGVyOjppbml0aWFsaXplQ29udGV4dElmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFz
c1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQpLCBjb250ZXh0VHlwZSwganNX
b3JrZXJDb250ZXh0LCBtX2lzb2xhdGUpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQp
LCBjb250ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0LCBtX2lzb2xhdGUsIHRydWUpOwogCiAgICAg
Ly8gSW5zZXJ0IHRoZSBvYmplY3QgaW5zdGFuY2UgYXMgdGhlIHByb3RvdHlwZSBvZiB0aGUgc2hh
ZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0LT5HbG9iYWwoKS0+R2V0UHJvdG90
eXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5
cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApp
bmRleCA4YmQ2ZTI5MGFlYjFjZmVlZDU1MmM0MmQzODYxYjNlYjQ5NDdiMTViLi4yMzliMDM2ODY2
MmFjZjc2MDhkNTRhMTZhY2JiMDJhZWU5ZWFlMWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0OwogICAgIGNsYXNzIERPTURhdGFTdG9y
ZTsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKKyAgICBjbGFzcyBOb2RlOwogCiAgICAgc3RhdGlj
IGNvbnN0IGludCB2OERPTVdyYXBwZXJUeXBlSW5kZXggPSAwOwogICAgIHN0YXRpYyBjb25zdCBp
bnQgdjhET01XcmFwcGVyT2JqZWN0SW5kZXggPSAxOwpAQCAtMTQxLDYgKzE0MiwzMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXcmFwcGVyVHlwZUlu
Zm8qPihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyVHlwZUluZGV4KSk7CiAgICAgfQogCisgICAgc3RydWN0IFdyYXBwZXJDb25maWd1cmF0aW9u
IHsKKworICAgICAgICB2b2lkIGNvbmZpZ3VyZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHdyYXBwZXIuU2V0V3JhcHBlckNsYXNzSWQoY2xhc3NJZCk7CisgICAgICAgICAg
ICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQorICAgICAgICAgICAgICAgIHdyYXBwZXIuTWFy
a0luZGVwZW5kZW50KGlzb2xhdGUpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgdWludDE2
X3QgY2xhc3NJZDsKKyAgICAgICAgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZTsKKyAg
ICB9OworCisgICAgaW5saW5lIFdyYXBwZXJDb25maWd1cmF0aW9uIGJ1aWxkV3JhcHBlckNvbmZp
Z3VyYXRpb24odm9pZCosIGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUpCisgICAgeworICAgICAg
ICBXcmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0ge3Y4RE9NT2JqZWN0Q2xhc3NJ
ZCwgaGFzRGVwZW5kZW50TGlmZXRpbWV9OworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
KyAgICB9CisKKyAgICBpbmxpbmUgV3JhcHBlckNvbmZpZ3VyYXRpb24gYnVpbGRXcmFwcGVyQ29u
ZmlndXJhdGlvbihOb2RlKiwgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSkKKyAgICB7CisgICAg
ICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01Ob2RlQ2xhc3NJ
ZCwgaGFzRGVwZW5kZW50TGlmZXRpbWV9OworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
KyAgICB9CiB9CiAKICNlbmRpZiAvLyBXcmFwcGVyVHlwZUluZm9faApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3Bw
CmluZGV4IGQ5NzJjMzFlN2Y4ZDlmYmU5NjVhN2IxZTg2YmU2ZmI1OTJmMmMyZmYuLjQ2Yzk1NDdj
ODNjZGI1Yzk0YTQ0ZjNlZGFlN2JlMGExZWM4MWYxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0
cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICB2ODo6Vjg6OkFkanVz
dEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwog
ICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhl
IGFycmF5LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVy
KCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCB0cnVlKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCA4MzIxY2RhNDVhMzg2YjFjNmMwYjQ5
OTM2MmMwODhmNDc1Mjg1NWVmLi45NzU1NzIwZThmNTYxNWE2MDBkMTBkNWI3MmMwM2U5NmNhY2Rl
ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJh
eUJ1ZmZlclZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtNTUsOCArNTUsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd3JhcEFycmF5QnVmZmVyVmlldyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
LCBXcmFwcGVyVHlwZQogICAgIGlmIChoYXNJbmRleGVyKQogICAgICAgICBhcmdzLkhvbGRlcigp
LT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoYXJyYXkuZ2V0KCktPmJh
c2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCktPmxlbmd0aCgpKTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCkpOwotICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCks
IHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBmYWxzZSk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKQEAgLTIyNSw4ICsyMjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
c3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQog
ICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVy
KCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBl
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgd3JhcHBlckhhbmRsZS5NYXJrSW5k
ZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIGZhbHNl
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOThk
MjI1ZWIwZWMzMGNiOTUyYjMzZDljZmQzNTI2MWVlMDc0N2UyMC4uNTM4ZDNkYjY3YTFjMjc5MTlj
MDkxYzU1NGEyOGQ5Zjc3OGY0ZWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC03Myw3ICs3
Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lCiAgICAgCiAgICAgLy8gVHJhbnNmb3JtIHRo
ZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXVkaW8gY29udGV4dC4KICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGF1ZGlvQ29udGV4dC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgdHJ1ZSk7CiAgICAgCiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggMDU0NTM4NDc2Y2I3NmI3NTYxODU0
ZWFhOTExNjI5NjUxM2I1MmM4My4uMzliNDBkOTNmMWRhZTY4NmY4YWIxNTRmNTZlNjg2MjMzMjIz
N2Q5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
Rm9ybURhdGFDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbgogICAgIFJlZlB0cjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSBET01Gb3Jt
RGF0YTo6Y3JlYXRlKGZvcm0pOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKGRvbUZvcm1EYXRhLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRv
bUZvcm1EYXRhLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCB0
cnVlKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IDdiZDdhOTFm
NjgzZWZlNmIxZDI4MTc0M2U0Mjk1OTA4ZGUwNjgzZTMuLjFlNDM4ZWEwNTQyZDUyYzA5MjY5YzZl
YzFkODgwODNiODcxZTg4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhlIGNh
bGwgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAgICAg
IFJlZlB0cjxEYXRhVmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgICAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogICAgIH0KICAgICBpZiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgIVY4QXJyYXlCdWZm
ZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IDNiNTNiYjkwZGNlNWY4MWExZjBlMzc4OTg2
MWRiZWIxNWFhOTUyMGYuLmU4NzY1NjUxZTIzNTJhYzE5NzA0YzJhNTk0NWZiZGQzNDQ3NTRiNWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFn
ZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZwogCiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVu
dCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9uYWxIZWlnaHQpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbWFnZS5yZWxlYXNlKCksICZWOEhUTUxJbWFnZUVsZW1lbnRD
b25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLCAmVjhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB0cnVlKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKaW5kZXggYWI2NDY3
ZWNkMTk4ODFhNmQ4NWQ5MjJkYjc5Yjc4ZmI1NDhlYjNhNC4uZTY5MzhmNDgzNzU0ZjE2OTFmNGMw
MWQyOWQ3MjRhZDMwZjA3M2UzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhCiAgICAgICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBl
cihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCB0cnVl
KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCkBAIC04MCw3ICs4MCw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIHRydWUpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKaW5kZXggMzNhMGEyMzRk
OWExNjMzMzQ2ZjA5YWM2Mjk1MWNkOWU1NjkxZmZmNS4uNDc5YzUyY2ZhNDhiYzM3MGM1N2NlN2Uz
NzJjYjBhZTY2MGQ1ZWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndQogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRI
aWRkZW5SZWZlcmVuY2Uod3JhcHBlciwgInBvcnQxIiwgdG9WOChvYmotPnBvcnQxKCksIGFyZ3Mu
SG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1l
ZEhpZGRlblJlZmVyZW5jZSh3cmFwcGVyLCAicG9ydDIiLCB0b1Y4KG9iai0+cG9ydDIoKSwgYXJn
cy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwg
dHJ1ZSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5j
cHAKaW5kZXggOTc3YmNiMzhmNmQwM2MyNTZjNDAyNDA2Y2JjOGExZGEwNGZmZTU4YS4uOTViZGJh
ZjAxODgwNzAxY2M1M2M2NWFlYWNhNDI0ZWFiNmM5YzQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1
c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TXV0YXRp
b25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXIKICAgICBS
ZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNy
ZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBSZWZQ
dHI8TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2ZXIgPSBNdXRhdGlvbk9ic2VydmVyOjpjcmVhdGUo
Y2FsbGJhY2sucmVsZWFzZSgpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
b2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIHRy
dWUpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKaW5kZXggM2Yx
MGRlNDVlZTkzYjhlMjk0Njk4MTRlNjdhZWRmM2U0NGI5MzNiZi4uYjM3NWQ5YWY3MzJkMGY3MDcz
NjI1ZTg4MGFiNDZmOTE4N2RhZWE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcApAQCAtNTcsNyArNTcs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRQb2ludDo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbgogICAgIH0KICAgICBSZWZQdHI8V2ViS2l0UG9p
bnQ+IHBvaW50ID0gV2ViS2l0UG9pbnQ6OmNyZWF0ZSh4LCB5KTsKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCksIHRydWUpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5j
cHAKaW5kZXggOTVkYzM2M2EyYTE0M2NhNTQ0NzNiNjkzNDA5YTZhNGQxOTQ0ZTZhNC4uZDVhMjlh
MjkxNGY4NTJjNzYwNGZjNTBmN2M1ZGUyZGVkNWY1ZjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9t
LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVx
dWVzdDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndQogICAgIFJlZlB0
cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcih4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcih4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSwgdHJ1ZSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187015</attachid>
            <date>2013-02-07 01:06:29 -0800</date>
            <delta_ts>2013-02-07 01:09:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109065-20130207100305.patch</filename>
            <type>text/plain</type>
            <size>56010</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uMWU2YjQ5Zjg2ZDM4YmRiMmNhYzJkNjQwMWZlNjEy
NGQ5NTk2YjIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMy0wMi0wNyAgRGFu
IENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbdjhdIG1vdmUgcGVyc2lz
dGVudDo6bmV3IGFuZCA6OmRpc3Bvc2UgaW50byBzYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIE5vIGNoYW5nZSBp
biBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVNpbmdsZUNvbnN0cnVjdG9yQ2FsbGJhY2spOgor
ICAgICAgICAoR2VuZXJhdGVFdmVudENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2Vu
ZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVUb1Y4Q29u
dmVydGVycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5OjpjcmVhdGVXcmFwcGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRl
V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFdmVu
dENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFdmVudFRhcmdldDo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RFeGNlcHRpb246OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEludGVyZmFjZTo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3Jh
cHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RPYmo6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMkNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OmNvbnN0cnVjdG9yM0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yNENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6c2V0V3JhcHBl
cik6CisgICAgICAgIChET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0
b3JlOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVySW5P
YmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFw
cGVyTWFwOjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlck1hcDo6cmVtb3ZlQW5k
RGlzcG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyTWFwOjpkZWZhdWx0V2Vha0Nh
bGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
V3JhcHBhYmxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChTY3JpcHRXcmFwcGFibGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpkaXNwb3NlV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OndlYWtDYWxsYmFjayk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuaDoKKyAgICAgICAgKFY4RE9NV3JhcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndlYWtOUE9i
amVjdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVY4T2JqZWN0Rm9yTlBPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Zm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplQ29udGV4dElmTmVlZGVk
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV3JhcHBlckNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6V3JhcHBlckNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVdyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6YnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBcnJh
eUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjp3
cmFwQXJyYXlCdWZmZXJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFdlYkdMQXJy
YXkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOEF1ZGlvQ29udGV4dDo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEYXRhVmlldzo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVu
dENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnY4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEludGVudDo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5u
ZWxDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3Ry
dWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uT2Jz
ZXJ2ZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V2Vi
S2l0UG9pbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20pOgorCiAyMDEzLTAy
LTA2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6
ZSBHbHlwaFBhZ2UgZm9yIGNhc2Ugd2hlcmUgYWxsIGdseXBocyBhcmUgYXZhaWxhYmxlIGluIHRo
ZSBzYW1lIGZvbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtCmluZGV4IDMzNDI4NWE2NmFlMTAyYjc4NmM4MWJhMDI1MjM3YjMyYTQ5
OWI2ZGIuLjIzZjYwNDFlOTUzYmYwNGQ0MDNiNThiNTU2MTA4NGQ4OWY4NWZmN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBA
IC0xOTY0LDcgKzE5NjQsNyBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVO
VCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMjAzOSw3ICsyMDM5LDcgQEAgRU5E
CiAgICAgUmVmUHRyPCR7aW50ZXJmYWNlTmFtZX0+IGV2ZW50ID0gJHtpbnRlcmZhY2VOYW1lfTo6
Y3JlYXRlKHR5cGUsIGV2ZW50SW5pdCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoZXZlbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZXZl
bnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0y
MTgwLDcgKzIxODAsNyBAQCBFTkQKIAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFz
ZSgpLCAmJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwucmVsZWFzZSgpLCAmJHt2OEludGVyZmFjZU5hbWV9Q29uc3RydWN0b3I6OmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5E
RU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBAIC0zNTQyLDkgKzM1NDIsNyBAQCBF
TkQKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3Bl
cnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAm
aW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6REVQRU5ERU5UIDogV3JhcHBlckNvbmZpZ3VyYXRpb246OklOREVQRU5ERU5U
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIEVORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXgg
ZjBmM2YzNjU0MzY0ZmMxZGUxNTkzMThlMTY2YTlmNGYzZDY5NWJiMi4uYWJkYWJkZmI4Njg3ZDU0
N2MzYmY5MDJmODkzMTY2ZDlmMmI4NjcwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC0xODQs
OSArMTg0LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEZsb2F0NjRBcnJheTo6Y3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPEZsb2F0NjRBcnJheT4gaW0KICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQo
KSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRs
ZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8s
IHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAg
ICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwg
aGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UIDog
V3JhcHBlckNvbmZpZ3VyYXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIHZvaWQgVjhGbG9hdDY0QXJyYXk6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggYTA1ZGNlZmFkZDhiMWJiYzAxYzM3Y2Nm
ZDYwZWZhYmRhOGQ3MjYxNC4uZTJjNjEwZTYzMmUwMjg5NWUwM2JhZDg1NDI5MzY4YWJmNmY5MGRj
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTIxMSw5ICsyMTEsNyBA
QCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6Y3JlYXRlV3Jh
cHBlcihQYXNzUmVmUHRyPFRlc3RBY3RpdgogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRl
KTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwg
aXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBl
ckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRl
bnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6SU5ERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBW
OFRlc3RBY3RpdmVET01PYmplY3Q6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDQ2ZDRhN2Q5NjA4ZGQ4YWU0YWU3YzEz
MmZkMDc1YzQ4MzBiM2UxZTIuLmZkZGYyZDE4NGVlNTI5NWMyYWE5MTRhZjE0MzlhNzliZmM3OTQ4
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTQ5LDkgKzE0
OSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmNy
ZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0Q3VzCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
CiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlz
b2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFw
cGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3
cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0Rl
cGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBw
ZXJDb25maWd1cmF0aW9uOjpJTkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2
b2lkIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZDczOGU5NWRhZTBjZmFlZDA0
MmQwZjZkNDVmOWNjMjQ5ODJiNTBjNS4uMzc2OTg1YWU3MTVhZTYwYmExMzlhNGE1OTU0OGNhZTJi
ODJiYzBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1CiAgICAgUmVmUHRyPFRlc3RFdmVudENv
bnN0cnVjdG9yPiBldmVudCA9IFRlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUodHlwZSwgZXZl
bnRJbml0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9s
ZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVu
dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRF
UEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTE4MSw5ICsxODEsNyBAQCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZVdyYXBw
ZXIoUGFzc1JlZlB0cjxUZXN0RXZlbgogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsK
LSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNv
bGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhh
bmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVj
dFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRM
aWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29uZmln
dXJhdGlvbjo6SU5ERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcAppbmRleCAwMjg1YjdjMjc3MzM3MTJlYWE2MWU0N2M3NTE2N2Q1MjQxMjNi
MDQ0Li5jNzY3NWM0ZmQ5NWIzZDQ2ZTMxODZiMzE2NzE2NjBhMTE1MGE1YmM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5jcHAKQEAgLTIxNSw5ICsyMTUsNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEV2ZW50
VGFyZwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFo
YXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRl
bnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGws
ICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJD
b25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SU5ERVBFTkRF
TlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBWOFRlc3RFdmVudFRhcmdldDo6ZGVy
ZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBmYjU0NmU4
YWMyZTE0MDEwNjI4MGM0ZTMwZjFiNmM0Yjc0MTBiM2U0Li4wNmNiODc2NWFlZWE2YTUzY2U0Yjhi
YjY3YjAxYTMxNTFlZTk3MjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTQwLDkgKzE0
MCw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXhjZXB0aW9uOjpjcmVhdGVXcmFw
cGVyKFBhc3NSZWZQdHI8VGVzdEV4Y2VwdGlvbj4KICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAK
ICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNv
bGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBw
ZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdy
YXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVw
ZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UIDogV3JhcHBl
ckNvbmZpZ3VyYXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZv
aWQgVjhUZXN0RXhjZXB0aW9uOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCmluZGV4IDY0YTE3YWZjNTYzYWE5MDgzYmU3MmVkYmFlMjlhMTkxYThlNWYyNDYu
Ljc1OTZjNmRiMzZiN2YzNTlkZjU3ZjUyZjA0YmU5ZWJjNjZlMjAwMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRl
cmZhY2UuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVz
dEludGVyZmFjZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAg
IGlmIChlYykKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogICBm
YWlsOgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
QEAgLTM3MCw5ICszNzAsNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEludGVyZmFj
ZTo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RJbnRlcmZhY2U+CiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGlt
cGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGws
ICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1l
KQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVO
REVOVCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJTkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiB2b2lkIFY4VGVzdEludGVyZmFjZTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDAw
YmIwYTk5OWYwNjMyZDM2OGQ2ODA1YTRkNjEzYjJkZTI3ZWIwYjAuLmRkNGFjMjUwODhmMGNkN2Q3
MzNkNDg1NzBkNGUwMzE2NmIwNjk4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5jcHAKQEAgLTE0OSw5ICsxNDksNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxUZQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFo
YXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRl
bnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGws
ICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJD
b25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SU5ERVBFTkRF
TlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggZDAzY2Y0NWRmZDk0MDVhODJiZDU3ODJkMTIzZDM1YTc3YjJlMWY0
Ny4uMDlmZjc4YzcwMjkwMzI2YTUzYjMxMGQxMDAzMDM3N2QwMjcyYjQ5MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNr
KGNvbnN0IHY4OgogICAgIGlmIChlYykKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4VGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1w
bC5yZWxlYXNlKCksICZWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5U
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKICAgZmFpbDoKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xOTAsOSArMTkwLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVyKFBhc3NS
ZWZQdHI8VGVzdE5hbWUKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwot
ICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFy
a0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUg
PyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UIDogV3JhcHBlckNvbmZpZ3VyYXRpb246
OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcjo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCmluZGV4IGQz
YzZiNDBhMzA1OWNkYjFhYzVkMjk3ZWQ5MWRmM2VmOWI5OGZhNTkuLjc2ZjAzZGJiZTRkYzVkNDYw
NTEzZTlkNGRkYjkxYjQ5MmE2YzhhMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBSZWZQdHI8VGVzdE5vZGU+IGltcGwgPSBUZXN0
Tm9kZTo6Y3JlYXRlKCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTUzLDkgKzE1Myw3
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6Y3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlc3ROb2RlPiBpbXBsLCB2ODo6CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xh
dGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVy
LCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFw
cGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVu
ZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJD
b25maWd1cmF0aW9uOjpJTkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lk
IFY4VGVzdE5vZGU6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYzEx
MTA4NDBmYWQwODFkMmYxZDA2NjFmMDVlZTUyZGQ1MDM3MzExYS4uMGRjNDEzZjI2ZjMxZGUwZWMw
ODFjMmI0MjMyOTE4MDdhOTczMDA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIwOTAsNyArMjA5MCw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPYmo6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBSZWZQdHI8VGVzdE9iaj4gaW1wbCA9IFRlc3RP
Ymo6OmNyZWF0ZSh0ZXN0Q2FsbGJhY2spOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVj
dFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1w
bC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNv
bmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIy
OTUsOSArMjI5NSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T2JqOjpjcmVhdGVX
cmFwcGVyKFBhc3NSZWZQdHI8VGVzdE9iaj4gaW1wbCwgdjg6OkhhCiAgICAgICAgIHJldHVybiB3
cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwu
Z2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJI
YW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZp
bmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQot
ICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xh
dGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVO
VCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJTkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBw
ZXI7CiB9CiB2b2lkIFY4VGVzdE9iajo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDUwMzY0MzhkMmFm
OGRlM2U5ZGViMzYwYmY5NTJmNjc5YmE1NmJiYmIuLmU2MTAzY2I4MjE1YmI0ZWViMTgyNThlMDE0
ZmMxN2FlNzJjNzhiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9ycy5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMUNhbGxiYWNrKGNvbnN0IHYKICAgICBS
ZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
CkBAIC04OCw3ICs4OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjJDYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRyPFRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM6OmNyZWF0ZShhcnJheUJ1ZmZlclZpZXcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAg
LTEwMCw3ICsxMDAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y29uc3RydWN0b3IzQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0cjxUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUoYmxvYik7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTEyLDcgKzExMiw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpj
b25zdHJ1Y3RvcjRDYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShzdHJp
bmcpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVO
VCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIwNCw5ICsyMDQsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZVdyYXBw
ZXIoUGFzc1JlZlB0cjxUZQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQ
ZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7
Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5N
YXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGlt
ZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6SU5ERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBWOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4
IDU2YmVkOTgwNTYwMmQ1NmVjOWM1MTM3Y2JkYjU0Yjg4NDFjMGIzZGIuLjIwYzQxMGZmYTZkYWVl
MjgzZGJiMzAzY2U5NWQ2NDY0ZjgxMGIzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZTo6Y29uc3RydWN0b3JDYWxsYmFjaygKICAgICBSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZT4gaW1wbCA9IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OmNyZWF0ZShoZWxsbywgZGF0YSwgbWVzc2FnZVBvcnRBcnJheVRyYW5zZmVyTGlzdCk7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4
RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMzIyLDkgKzMyMiw3IEBAIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVy
KFBhc3NSCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQ
cm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAo
IWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVu
ZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1w
bCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJTkRFUEVO
REVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggY2NiOWI4YTBjNmZkMGQxNTg3
ODJmOTQ1NDFiYjUxM2QyYWEyM2ZkOC4uMTJhNTJmZTQwNmVhYTNkOWEwMzY0MjhjNzRhZDZhNzhj
NGUwYmE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3Bw
CkBAIC04MCwyNCArODAsNCBAQCB2b2lkIERPTURhdGFTdG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZE1l
bWJlcihtX3dyYXBwZXJNYXAsICJ3cmFwcGVyTWFwIik7CiB9CiAKLXZvaWQgRE9NRGF0YVN0b3Jl
Ojp3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpW
YWx1ZT4gdmFsdWUsIHZvaWQqIGNvbnRleHQpCi17Ci0gICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkg
PSBzdGF0aWNfY2FzdDxTY3JpcHRXcmFwcGFibGUqPihjb250ZXh0KTsKLSAgICBBU1NFUlQodmFs
dWUtPklzT2JqZWN0KCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7Ci0gICAgQVNTRVJUKGtl
eS0+d3JhcHBlcigpID09IHdyYXBwZXIpOwotICAgIC8vIE5vdGU6IHxvYmplY3R8IG1pZ2h0IG5v
dCBiZSBlcXVhbCB0byB8a2V5fCwgZS5nLiwgaWYgU2NyaXB0V3JhcHBhYmxlIGlzbid0IGEgbGVm
dC1tb3N0IGJhc2UgY2xhc3MuCi0gICAgdm9pZCogb2JqZWN0ID0gdG9OYXRpdmUod3JhcHBlcik7
Ci0gICAgV3JhcHBlclR5cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7
Ci0gICAgQVNTRVJUKGluZm8tPmRlcmVmT2JqZWN0RnVuY3Rpb24pOwotCi0gICAga2V5LT5jbGVh
cldyYXBwZXIoKTsKLSAgICB2YWx1ZS5EaXNwb3NlKCk7Ci0gICAgdmFsdWUuQ2xlYXIoKTsKLSAg
ICAvLyBGSVhNRTogSSBub3RpY2VkIHRoYXQgNTAlfiBvZiBtaW5vciBHQyBjeWNsZSB0aW1lcyBj
YW4gYmUgY29uc3VtZWQKLSAgICAvLyBpbnNpZGUga2V5LT5kZXJlZigpLCB3aGljaCBjYXVzZXMg
Tm9kZSBkZXN0cnVjdGlvbnMuIFdlIHNob3VsZAotICAgIC8vIG1ha2UgTm9kZSBkZXN0cnVjdGlv
bnMgaW5jcmVtZW50YWwuCi0gICAgaW5mby0+ZGVyZWZPYmplY3Qob2JqZWN0KTsKLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3Rv
cmUuaAppbmRleCBkNzJkNGE1MTA1Mzc2MmRkMjcyMzE1NTUxZjI5MzIwZjI1MjhhYzQzLi4wMjY2
ZWQ5MjlkZTg3NTliNzVmNTU4MDU1OGE4NDE5ZmZkMjUzMTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApAQCAtODksMTUgKzg5LDE1IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyB2b2lkIHNldFdyYXBw
ZXIoVCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyKFQqIG9iamVjdCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3Qg
V3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAgICAgICBpZiAo
bWFpbldvcmxkV3JhcHBlcklzU3RvcmVkSW5PYmplY3Qob2JqZWN0KSAmJiBpc01haW5Xb3JsZE9i
amVjdChvYmplY3QpKSB7CiAgICAgICAgICAgICBpZiAoTElLRUxZKCFET01XcmFwcGVyV29ybGQ6
Omlzb2xhdGVkV29ybGRzRXhpc3QoKSkpIHsKLSAgICAgICAgICAgICAgICBzZXRXcmFwcGVySW5P
YmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlKTsKKyAgICAgICAgICAgICAgICBzZXRXcmFw
cGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGN1cnJlbnQoaXNvbGF0ZSktPnNldChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOwor
ICAgICAgICByZXR1cm4gY3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdCwgd3JhcHBlciwgaXNv
bGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
QEAgLTEwOCwyMSArMTA4LDIxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fd3JhcHBlck1h
cC5nZXQob2JqZWN0KTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotICAgIGlubGluZSB2b2lkIHNldChUKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgIGlubGluZSB2b2lkIHNldChU
KiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCEhb2JqZWN0KTsKICAgICAgICAgQVNTRVJUKCF3cmFwcGVyLklzRW1w
dHkoKSk7CiAgICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmpl
Y3QpICYmIG1fdHlwZSA9PSBNYWluV29ybGQpIHsKLSAgICAgICAgICAgIHNldFdyYXBwZXJJbk9i
amVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgICAgICAgICAgc2V0V3JhcHBlcklu
T2JqZWN0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgbV93cmFwcGVyTWFwLnNldChvYmplY3Qs
IHdyYXBwZXIpOworICAgICAgICBtX3dyYXBwZXJNYXAuc2V0KG9iamVjdCwgd3JhcHBlciwgY29u
ZmlndXJhdGlvbik7CiAgICAgfQogCi0gICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7Ci0KLXByaXZhdGU6CiAgICAgc3RhdGljIERPTURhdGFTdG9yZSog
bWFpbldvcmxkU3RvcmUoKTsKIAogICAgIHN0YXRpYyBib29sIG1haW5Xb3JsZFdyYXBwZXJJc1N0
b3JlZEluT2JqZWN0KHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTU0LDE5ICsxNTQsMTUg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG9iamVjdC0+d3JhcHBlcigpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdCh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKikKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5P
YmplY3Qodm9pZCosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiwgY29uc3Qg
V3JhcHBlckNvbmZpZ3VyYXRpb24mKQogICAgIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQotICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFw
cGFibGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCisgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNjcmlw
dFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJ
c29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlv
bikKICAgICB7Ci0gICAgICAgIEFTU0VSVChvYmplY3QtPndyYXBwZXIoKS5Jc0VtcHR5KCkpOwot
ICAgICAgICBvYmplY3QtPnNldFdyYXBwZXIod3JhcHBlcik7Ci0gICAgICAgIHdyYXBwZXIuTWFr
ZVdlYWsoaXNvbGF0ZSwgb2JqZWN0LCB3ZWFrQ2FsbGJhY2spOworICAgICAgICBvYmplY3QtPnNl
dFdyYXBwZXIod3JhcHBlciwgaXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJc29sYXRlKiwgdjg6OlBlcnNpc3RlbnQ8djg6
OlZhbHVlPiwgdm9pZCogY29udGV4dCk7Ci0KICAgICBUeXBlIG1fdHlwZTsKICAgICBET01XcmFw
cGVyTWFwPHZvaWQ+IG1fd3JhcHBlck1hcDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01XcmFwcGVyTWFwLmgKaW5kZXggMDBjMDNlMDk3NDM3MGM2ODUxMjNlYjRlNWU1NjhmM2M4
Nzg0Yzk5NC4uYWYwZjg5NjcyNzZkZTNkYmQwZDQyYzE0MWJlOTEwMGQwMThjMmZiNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaApAQCAtNTAsMTcgKzUwLDE5
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gZ2V0KEtleVR5cGUqIGtleSkKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldChLZXlU
eXBlKiBrZXkpCiAgICAgewogICAgICAgICByZXR1cm4gbV9tYXAuZ2V0KGtleSk7CiAgICAgfQog
Ci0gICAgdm9pZCBzZXQoS2V5VHlwZSoga2V5LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKQorICAgIHZvaWQgc2V0KEtleVR5cGUqIGtleSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwcGVyLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghbV9tYXAuY29udGFpbnMoa2V5KSk7CiAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxLZXlUeXBlKj4odG9OYXRpdmUod3JhcHBlcikpID09IGtleSk7Ci0gICAg
ICAgIHdyYXBwZXIuTWFrZVdlYWsobV9pc29sYXRlLCB0aGlzLCBtX2NhbGxiYWNrKTsKLSAgICAg
ICAgbV9tYXAuc2V0KGtleSwgd3JhcHBlcik7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHBlcnNpc3RlbnQgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KG1faXNv
bGF0ZSwgd3JhcHBlcik7CisgICAgICAgIGNvbmZpZ3VyYXRpb24uY29uZmlndXJlV3JhcHBlcihw
ZXJzaXN0ZW50LCBtX2lzb2xhdGUpOworICAgICAgICBwZXJzaXN0ZW50Lk1ha2VXZWFrKG1faXNv
bGF0ZSwgdGhpcywgbV9jYWxsYmFjayk7CisgICAgICAgIG1fbWFwLnNldChrZXksIHBlcnNpc3Rl
bnQpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpAQCAtODEsMTIgKzgzLDE1IEBAIHB1Ymxp
YzoKICAgICAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9jYWxsYmFjayk7CiAgICAgfQogCi0gICAg
dm9pZCByZW1vdmUoS2V5VHlwZSoga2V5LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyKQorICAgIHZvaWQgcmVtb3ZlQW5kRGlzcG9zZShLZXlUeXBlKiBrZXksIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKKyAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcigqdmFsdWUpOwogICAgICAgICB0eXBl
bmFtZSBNYXBUeXBlOjppdGVyYXRvciBpdCA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgQVNT
RVJUKGl0ICE9IG1fbWFwLmVuZCgpKTsKICAgICAgICAgQVNTRVJUKGl0LT52YWx1ZSA9PSB3cmFw
cGVyKTsKICAgICAgICAgbV9tYXAucmVtb3ZlKGl0KTsKKyAgICAgICAgd3JhcHBlci5EaXNwb3Nl
KGlzb2xhdGUpOworICAgICAgICB2YWx1ZS5DbGVhcigpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTk4LDEwICsxMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBXcmFwcGVyVHlwZUluZm8qIHR5cGUg
PSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKICAgICAgICAgQVNTRVJUKHR5cGUtPmRlcmVm
T2JqZWN0RnVuY3Rpb24pOwogICAgICAgICBLZXlUeXBlKiBrZXkgPSBzdGF0aWNfY2FzdDxLZXlU
eXBlKj4odG9OYXRpdmUod3JhcHBlcikpOwotCi0gICAgICAgIG1hcC0+cmVtb3ZlKGtleSwgd3Jh
cHBlcik7Ci0gICAgICAgIHdyYXBwZXIuRGlzcG9zZSgpOwotICAgICAgICB3cmFwcGVyLkNsZWFy
KCk7CisgICAgICAgIG1hcC0+cmVtb3ZlQW5kRGlzcG9zZShrZXksIHdyYXBwZXIsIGlzb2xhdGUp
OwogICAgICAgICB0eXBlLT5kZXJlZk9iamVjdChrZXkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaAppbmRleCA2NTUwMDE3NDVhZWZmY2My
ZTNmYjU3YWEwMWE2ZmJkNDgzM2M3MzRlLi4xNmJjNzhhOTQ0YzcxMjI4MDU5NTNjMDhjMGVjYjk2
YjBkMGVlZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRX
cmFwcGFibGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFi
bGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBTY3JpcHRXcmFwcGFibGVfaAogCiAjaW5j
bHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIldyYXBwZXJU
eXBlSW5mby5oIgogI2luY2x1ZGUgPHY4Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQw
LDM3ICs0MSwzNSBAQCBjbGFzcyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgogICAgIFNjcmlw
dFdyYXBwYWJsZSgpIHsgfQogCi0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
cigpIGNvbnN0CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyKCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PihtYXNrT3JVbm1h
c2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4obWFza09yVW5tYXNrUG9pbnRlcigqbV9tYXNrZWRXcmFwcGVyKSk7CiAgICAg
fQogCi0gICAgdm9pZCBzZXRXcmFwcGVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIpCisgICAgdm9pZCBzZXRXcmFwcGVyKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQogICAgIHsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVyID0gbWFza09yVW5tYXNrUG9p
bnRlcigqd3JhcHBlcik7CisgICAgICAgIEFTU0VSVChtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgp
KTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gcGVyc2lzdGVudCA9IHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7CisgICAgICAgIGNvbmZpZ3VyYXRp
b24uY29uZmlndXJlV3JhcHBlcihwZXJzaXN0ZW50LCBpc29sYXRlKTsKKyAgICAgICAgcGVyc2lz
dGVudC5NYWtlV2Vhayhpc29sYXRlLCB0aGlzLCB3ZWFrQ2FsbGJhY2spOworICAgICAgICBtX21h
c2tlZFdyYXBwZXIgPSBtYXNrT3JVbm1hc2tQb2ludGVyKCpwZXJzaXN0ZW50KTsKICAgICB9CiAK
LSAgICB2b2lkIGNsZWFyV3JhcHBlcigpCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX21hc2tlZFdyYXBwZXIuSXNFbXB0eSgpKTsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVy
LkNsZWFyKCk7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKKyAgICAgICAgaW5mby5pZ25vcmVNZW1i
ZXIobV9tYXNrZWRXcmFwcGVyKTsKICAgICB9CiAKLSAgICB2b2lkIGRpc3Bvc2VXcmFwcGVyKCkK
K3ByaXZhdGU6CisgICAgaW5saW5lIHZvaWQgZGlzcG9zZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV9tYXNrZWRXcmFwcGVy
LklzRW1wdHkoKSk7Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlciA9IHdyYXBwZXIoKTsKLSAgICAg
ICAgbV9tYXNrZWRXcmFwcGVyLkRpc3Bvc2UoKTsKKyAgICAgICAgQVNTRVJUKCp2YWx1ZSA9PSBt
YXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKKyAgICAgICAgdmFsdWUuRGlz
cG9zZSgpOwogICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xlYXIoKTsKICAgICB9CiAKLSAgICB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0Ci0gICAgewotICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7Ci0gICAgICAgIGluZm8uaWdub3Jl
TWVtYmVyKG1fbWFza2VkV3JhcHBlcik7Ci0gICAgfQotCi1wcml2YXRlOgogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IG1fbWFza2VkV3JhcHBlcjsKIAogICAgIHN0YXRpYyBpbmxpbmUg
djg6Ok9iamVjdCogbWFza09yVW5tYXNrUG9pbnRlcihjb25zdCB2ODo6T2JqZWN0KiBvYmplY3Qp
CkBAIC03OSw2ICs3OCwyNSBAQCBwcml2YXRlOgogICAgICAgICBjb25zdCB1aW50cHRyX3QgcmFu
ZG9tTWFzayA9IH4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KCZXZWJDb3JlTWVtb3J5VHlw
ZXM6OkRPTSkgPj4gMTMpOyAvLyBFbnRyb3B5IHZpYSBBU0xSLgogICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDx2ODo6T2JqZWN0Kj4oKG9iamVjdFBvaW50ZXIgXiByYW5kb21NYXNrKSAm
ICghb2JqZWN0UG9pbnRlciAtIDEpKTsgLy8gUHJlc2VydmUgbnVsbCB3aXRob3V0IGJyYW5jaGlu
Zy4KICAgICB9CisKKyAgICBzdGF0aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqIGlz
b2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGNvbnRleHQpCisg
ICAgeworICAgICAgICBTY3JpcHRXcmFwcGFibGUqIGtleSA9IHN0YXRpY19jYXN0PFNjcmlwdFdy
YXBwYWJsZSo+KGNvbnRleHQpOworICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwor
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOworICAgICAgICBBU1NFUlQoa2V5LT53cmFwcGVy
KCkgPT0gd3JhcHBlcik7CisgICAgICAgIGtleS0+ZGlzcG9zZVdyYXBwZXIodmFsdWUpOworCisg
ICAgICAgIC8vIE5vdGU6IHxvYmplY3R8IG1pZ2h0IG5vdCBiZSBlcXVhbCB0byB8a2V5fCwgZS5n
LiwgaWYgU2NyaXB0V3JhcHBhYmxlIGlzbid0IGEgbGVmdC1tb3N0IGJhc2UgY2xhc3MuCisgICAg
ICAgIHZvaWQqIG9iamVjdCA9IHRvTmF0aXZlKHdyYXBwZXIpOworICAgICAgICBXcmFwcGVyVHlw
ZUluZm8qIGluZm8gPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKKyAgICAgICAgQVNTRVJU
KGluZm8tPmRlcmVmT2JqZWN0RnVuY3Rpb24pOworCisgICAgICAgIC8vIEZJWE1FOiBJIG5vdGlj
ZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xlIHRpbWVzIGNhbiBiZSBjb25zdW1lZAorICAg
ICAgICAvLyBpbnNpZGUga2V5LT5kZXJlZigpLCB3aGljaCBjYXVzZXMgTm9kZSBkZXN0cnVjdGlv
bnMuIFdlIHNob3VsZAorICAgICAgICAvLyBtYWtlIE5vZGUgZGVzdHJ1Y3Rpb25zIGluY3JlbWVu
dGFsLgorICAgICAgICBpbmZvLT5kZXJlZk9iamVjdChvYmplY3QpOworICAgIH0KIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XaW5kb3dTaGVsbC5jcHAKaW5kZXggMzVjNmQ2YTQ2OGZlMTA2MTNjMGY1OGFlNDE0NWUyYjE0
MzFjZjJjMS4uNjNjZjYwZDk4MjcxYThlNzgzZWYyMDIwOTdlMGNjNzAzOTIxNGVkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKQEAgLTMz
NSw3ICszMzUsNyBAQCBib29sIFY4RE9NV2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3coKQog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5uZXJHbG9iYWxPYmplY3QgPSB0b0lubmVyR2xv
YmFsT2JqZWN0KG1fY29udGV4dC5nZXQoKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJ
bmZvKGlubmVyR2xvYmFsT2JqZWN0LCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvdyk7CiAgICAg
aW5uZXJHbG9iYWxPYmplY3QtPlNldFByb3RvdHlwZSh3aW5kb3dXcmFwcGVyKTsKLSAgICBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9NV2luZG93
Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIsIG1faXNvbGF0ZSk7
CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRy
PERPTVdpbmRvdz4od2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBt
X2lzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVybiB0
cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4
IGQ4ZmYyODYxZmQ3MDVmMmM2NmNkNGZmMDBjZWNkNzdhMWM3NzA4YjIuLmE5MWNiYjRjMzAyNDEx
ZmE2MmMxZTJkMWM4YTAwNDMxYjdmOGY1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NV3JhcHBlci5oCkBAIC01NiwxMSArNTYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcih2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgV3JhcHBlclR5cGVJbmZvKiwgdm9pZCos
IHY4OjpJc29sYXRlKik7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAg
c3RhdGljIGlubGluZSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBhc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+LCBXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAgICAgICBzdGF0aWMgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gYXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiwg
V3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBX
cmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUpOwogICAgICAgICBzdGF0aWMgaW5saW5lIHZv
aWQgc2V0TmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8q
LCB2b2lkKik7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhck5hdGl2ZUluZm8odjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3JhcHBlclR5cGVJbmZvKik7Ci0gICAgICAgIHN0YXRpYyBp
bmxpbmUgdm9pZCBzZXRXcmFwcGVyQ2xhc3Modm9pZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+KTsKLSAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIHNldFdyYXBwZXJDbGFzcyhOb2RlKiwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4pOwogCiAgICAgICAgIHN0YXRpYyBib29sIGlzRE9N
V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogICAgICAgICBzdGF0aWMgYm9vbCBpc1dy
YXBwZXJPZlR5cGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCBXcmFwcGVyVHlwZUluZm8qKTsKQEAg
LTY5LDE2ICs2Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIHZvaWQg
c2V0TmFtZWRIaWRkZW5SZWZlcmVuY2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwYXJlbnQsIGNv
bnN0IGNoYXIqIG5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjaGlsZCk7CiAgICAgfTsKIAot
ICAgIGlubGluZSB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0V3JhcHBlckNsYXNzKHZvaWQqLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgd3JhcHBlci5T
ZXRXcmFwcGVyQ2xhc3NJZCh2OERPTU9iamVjdENsYXNzSWQpOwotICAgIH0KLQotICAgIGlubGlu
ZSB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKQotICAgIHsKLSAgICAgICAgd3JhcHBlci5TZXRXcmFwcGVy
Q2xhc3NJZCh2OERPTU5vZGVDbGFzc0lkKTsKLSAgICB9Ci0KICAgICBpbmxpbmUgdm9pZCBWOERP
TVdyYXBwZXI6OnNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHZvaWQqIG9iamVjdCkKICAgICB7CiAgICAgICAgIEFTU0VS
VCh3cmFwcGVyLT5JbnRlcm5hbEZpZWxkQ291bnQoKSA+PSAyKTsKQEAgLTk3LDE0ICs4NSwxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LSAgICBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+IG9iamVjdCwgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiBvYmplY3QsIFdyYXBwZXJU
eXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkxpZmV0aW1lIGxpZmV0aW1lKQogICAg
IHsKICAgICAgICAgc2V0TmF0aXZlSW5mbyh3cmFwcGVyLCB0eXBlLCBvYmplY3QuZ2V0KCkpOwot
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKLSAgICAgICAgQVNTRVJUKG1heWJl
RE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7Ci0gICAgICAgIHNldFdyYXBwZXJDbGFzcyhvYmpl
Y3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOwotICAgICAgICBET01EYXRhU3RvcmU6OnNldFdyYXBw
ZXIob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSwgaXNvbGF0ZSk7Ci0gICAgICAgIHJl
dHVybiB3cmFwcGVySGFuZGxlOworICAgICAgICBBU1NFUlQobWF5YmVET01XcmFwcGVyKHdyYXBw
ZXIpKTsKKyAgICAgICAgV3JhcHBlckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGJ1aWxk
V3JhcHBlckNvbmZpZ3VyYXRpb24ob2JqZWN0LmdldCgpLCBsaWZldGltZSk7CisgICAgICAgIERP
TURhdGFTdG9yZTo6c2V0V3JhcHBlcihvYmplY3QubGVha1JlZigpLCB3cmFwcGVyLCBpc29sYXRl
LCBjb25maWd1cmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IDQ1YmVhMmViNTFh
ODM5NGI5MTI1OGUwMjU0Njk0ZjdiZWFmYzA5NjQuLjhjZGE5OGQ0YWQxMzI4MGMxOGY2YWRmMjgz
NGQyMGM4ZjE0ZTIyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3Qu
Y3BwCkBAIC00MDIsOSArNDAyLDcgQEAgc3RhdGljIHZvaWQgd2Vha05QT2JqZWN0Q2FsbGJhY2so
djg6Oklzb2xhdGUqIGlzb2xhdGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4KIAogICAgIC8v
IE11c3QgcmVtb3ZlIGZyb20gb3VyIG1hcCBiZWZvcmUgY2FsbGluZyBfTlBOX1JlbGVhc2VPYmpl
Y3QoKS4gX05QTl9SZWxlYXNlT2JqZWN0IGNhbgogICAgIC8vIGNhbGwgZm9yZ2V0VjhPYmplY3RG
b3JOUE9iamVjdCwgd2hpY2ggdXNlcyB0aGUgdGFibGUgYXMgd2VsbC4KLSAgICBzdGF0aWNOUE9i
amVjdE1hcCgpLnJlbW92ZShucE9iamVjdCwgd3JhcHBlcik7Ci0gICAgd3JhcHBlci5EaXNwb3Nl
KCk7Ci0gICAgd3JhcHBlci5DbGVhcigpOworICAgIHN0YXRpY05QT2JqZWN0TWFwKCkucmVtb3Zl
QW5kRGlzcG9zZShucE9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSk7CiAKICAgICBpZiAoX05QTl9J
c0FsaXZlKG5wT2JqZWN0KSkKICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG5wT2JqZWN0KTsK
QEAgLTQ0OCwyNyArNDQ2LDI0IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVWOE9iamVj
dEZvck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QsIE5QT2JqZWN0KiByb290CiAgICAgICAgIHJl
dHVybiB2YWx1ZTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmF0aXZlSW5mbyh2YWx1ZSwgbnBP
YmplY3RUeXBlSW5mbygpLCBvYmplY3QpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHZhbHVlKTsK
LSAgICBWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyhvYmplY3QsIHdyYXBwZXJIYW5kbGUp
OwogCiAgICAgLy8gS0pTIHJldGFpbnMgdGhlIG9iamVjdCBhcyBwYXJ0IG9mIGl0cyB3cmFwcGVy
IChzZWUgQmluZGluZ3M6OkNJbnN0YW5jZSkuCiAgICAgX05QTl9SZXRhaW5PYmplY3Qob2JqZWN0
KTsKICAgICBfTlBOX1JlZ2lzdGVyT2JqZWN0KG9iamVjdCwgcm9vdCk7CiAKLSAgICBzdGF0aWNO
UE9iamVjdE1hcCgpLnNldChvYmplY3QsIHdyYXBwZXJIYW5kbGUpOwotICAgIEFTU0VSVChWOERP
TVdyYXBwZXI6Om1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7CisgICAgV3JhcHBlckNv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24ob2Jq
ZWN0LCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsKKyAgICBzdGF0aWNOUE9iamVj
dE1hcCgpLnNldChvYmplY3QsIHZhbHVlLCBjb25maWd1cmF0aW9uKTsKKyAgICBBU1NFUlQoVjhE
T01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsKICAgICByZXR1cm4gdmFsdWU7CiB9
CiAKIHZvaWQgZm9yZ2V0VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVjdCogb2JqZWN0KQogewot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBzdGF0aWNOUE9iamVjdE1h
cCgpLmdldChvYmplY3QpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IHN0
YXRpY05QT2JqZWN0TWFwKCkuZ2V0KG9iamVjdCk7CiAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHko
KSkgewogICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CiAgICAgICAgIFY4RE9NV3JhcHBl
cjo6Y2xlYXJOYXRpdmVJbmZvKHdyYXBwZXIsIG5wT2JqZWN0VHlwZUluZm8oKSk7Ci0gICAgICAg
IHN0YXRpY05QT2JqZWN0TWFwKCkucmVtb3ZlKG9iamVjdCwgd3JhcHBlcik7Ci0gICAgICAgIHdy
YXBwZXIuRGlzcG9zZSgpOwotICAgICAgICB3cmFwcGVyLkNsZWFyKCk7CisgICAgICAgIHN0YXRp
Y05QT2JqZWN0TWFwKCkucmVtb3ZlQW5kRGlzcG9zZShvYmplY3QsIHdyYXBwZXIsIHY4OjpJc29s
YXRlOjpHZXRDdXJyZW50KCkpOwogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3Qob2JqZWN0KTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDJjOWVkZTg2NmVmZTUyNjc3MzE4ZDEyZTU5OTUzNGEx
YzcyM2EzYmUuLmI1NTJmMDBlNTA4ODA0NDIwZjAzMzk3MjlkODU0YTA5NzUxMjI5MGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xs
ZXIuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgYm9vbCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpp
bml0aWFsaXplQ29udGV4dElmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0
cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQpLCBjb250ZXh0VHlwZSwganNXb3JrZXJD
b250ZXh0LCBtX2lzb2xhdGUpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0PihtX3dvcmtlckNvbnRleHQpLCBjb250
ZXh0VHlwZSwganNXb3JrZXJDb250ZXh0LCBtX2lzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpERVBFTkRFTlQpOwogCiAgICAgLy8gSW5zZXJ0IHRoZSBvYmplY3QgaW5zdGFuY2UgYXMgdGhl
IHByb3RvdHlwZSBvZiB0aGUgc2hhZG93IG9iamVjdC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGdsb2JhbE9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QobV9jb250ZXh0
LT5HbG9iYWwoKS0+R2V0UHJvdG90eXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9XcmFwcGVyVHlwZUluZm8uaAppbmRleCA4YmQ2ZTI5MGFlYjFjZmVlZDU1MmM0MmQzODYxYjNl
YjQ5NDdiMTViLi45MGRkNTg5NmQwNzFkMDg1Yzc2MGRjMWZiNzhiNDU5ZTQwZGVlNmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaApAQCAtMzgsNiAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQWN0aXZlRE9NT2JqZWN0Owog
ICAgIGNsYXNzIERPTURhdGFTdG9yZTsKICAgICBjbGFzcyBFdmVudFRhcmdldDsKKyAgICBjbGFz
cyBOb2RlOwogCiAgICAgc3RhdGljIGNvbnN0IGludCB2OERPTVdyYXBwZXJUeXBlSW5kZXggPSAw
OwogICAgIHN0YXRpYyBjb25zdCBpbnQgdjhET01XcmFwcGVyT2JqZWN0SW5kZXggPSAxOwpAQCAt
MTQxLDYgKzE0MiwzNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXcmFwcGVyVHlwZUluZm8qPihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUlu
dGVybmFsRmllbGQodjhET01XcmFwcGVyVHlwZUluZGV4KSk7CiAgICAgfQogCisgICAgc3RydWN0
IFdyYXBwZXJDb25maWd1cmF0aW9uIHsKKworICAgICAgICBlbnVtIExpZmV0aW1lIHsKKyAgICAg
ICAgICAgIERFUEVOREVOVCwgSU5ERVBFTkRFTlQKKyAgICAgICAgfTsKKworICAgICAgICB2b2lk
IGNvbmZpZ3VyZVdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHdyYXBwZXIu
U2V0V3JhcHBlckNsYXNzSWQoY2xhc3NJZCk7CisgICAgICAgICAgICBpZiAobGlmZXRpbWUgPT0g
SU5ERVBFTkRFTlQpCisgICAgICAgICAgICAgICAgd3JhcHBlci5NYXJrSW5kZXBlbmRlbnQoaXNv
bGF0ZSk7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCB1aW50MTZfdCBjbGFzc0lkOworICAg
ICAgICBjb25zdCBMaWZldGltZSBsaWZldGltZTsKKyAgICB9OworCisgICAgaW5saW5lIFdyYXBw
ZXJDb25maWd1cmF0aW9uIGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24odm9pZCosIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGltZSkKKyAgICB7CisgICAgICAgIFdyYXBwZXJD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01PYmplY3RDbGFzc0lkLCBsaWZldGlt
ZX07CisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIH0KKworICAgIGlubGluZSBX
cmFwcGVyQ29uZmlndXJhdGlvbiBidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKE5vZGUqLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRpbWUpCisgICAgeworICAgICAgICBXcmFw
cGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0ge3Y4RE9NTm9kZUNsYXNzSWQsIGxpZmV0
aW1lfTsKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfQogfQogCiAjZW5kaWYg
Ly8gV3JhcHBlclR5cGVJbmZvX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcAppbmRleCBkOTcyYzMxZTdmOGQ5
ZmJlOTY1YTdiMWU4NmJlNmZiNTkyZjJjMmZmLi4zMGE5YzU0MzQxODg4MmM0ODQyODgwNTVhMGUy
NGVmNjM0OTFmMTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCkBAIC03Niw3ICs3Niw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOEFycmF5QnVmZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgdjg6OlY4OjpBZGp1c3RBbW91bnRPZkV4dGVybmFsQWxs
b2NhdGVkTWVtb3J5KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKTsKICAgICAvLyBUcmFuc2Zvcm0gdGhl
IGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhcnJheS4KICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKSwgJmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGJ1ZmZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdl
dElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKaW5kZXggODMyMWNkYTQ1YTM4NmIx
YzZjMGI0OTkzNjJjMDg4ZjQ3NTI4NTVlZi4uY2QxNjA1OWIwMTUwMjQ1MzdjM2JmNjYwMGQ2ZmY2
MmMzYmFlMzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmgKQEAgLTU1LDggKzU1LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBBcnJheUJ1ZmZlclZpZXcoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncywgV3JhcHBlclR5cGUKICAgICBpZiAoaGFzSW5kZXhlcikKICAgICAgICAgYXJncy5I
b2xkZXIoKS0+U2V0SW5kZXhlZFByb3BlcnRpZXNUb0V4dGVybmFsQXJyYXlEYXRhKGFycmF5Lmdl
dCgpLT5iYXNlQWRkcmVzcygpLCBhcnJheVR5cGUsIGFycmF5LmdldCgpLT5sZW5ndGgoKSk7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKLSAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVs
ZWFzZSgpLCB0eXBlLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjI1LDgg
KzIyNCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RXZWJHTEFycmF5KGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgfQogCiAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKLSAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBl
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OklOREVQ
RU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKaW5k
ZXggOThkMjI1ZWIwZWMzMGNiOTUyYjMzZDljZmQzNTI2MWVlMDc0N2UyMC4uY2ZlNTBjMTk2MDk5
MzVkOTUyYTUyNDFmZDFkYTE3YjgwMTQ2MWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCkBAIC03
Myw3ICs3Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEF1ZGlvQ29udGV4dDo6Y29uc3Ry
dWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lCiAgICAgCiAgICAgLy8gVHJhbnNm
b3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXVkaW8gY29udGV4
dC4KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwot
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0
LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGF1ZGlvQ29udGV4dC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRp
b246OkRFUEVOREVOVCk7CiAgICAgCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3Rv
bS5jcHAKaW5kZXggMDU0NTM4NDc2Y2I3NmI3NTYxODU0ZWFhOTExNjI5NjUxM2I1MmM4My4uMDIx
MjgzYjU3ODMzNjM1MGE5MGIwNmVlYTZhNTdjZDVjYTc4NDJjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNw
cApAQCAtNDcsNyArNDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6
Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbgogICAgIFJlZlB0cjxE
T01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGZvcm0pOwogCiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRvbUZvcm1EYXRhLnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRvbUZvcm1EYXRhLnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQ
RU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IDdiZDdh
OTFmNjgzZWZlNmIxZDI4MTc0M2U0Mjk1OTA4ZGUwNjgzZTMuLmJkN2E0ZTUwZmFhODk4ZTA2YThm
NjgyZDAxYzE5N2FiZDkzNWVlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAgICAgLy8gJ25ldyBEYXRhVmlldygpJyBhbmQgdGhl
IGNhbGwgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIGNhY2hlZCBEYXRhVmlldyBvYmplY3QuCiAgICAg
ICAgIFJlZlB0cjxEYXRhVmlldz4gZGF0YVZpZXcgPSBEYXRhVmlldzo6Y3JlYXRlKDApOwogICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
ICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkYXRhVmlldy5yZWxlYXNlKCks
ICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246
OkRFUEVOREVOVCk7CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KICAgICBpZiAoYXJn
c1swXS0+SXNOdWxsKCkgfHwgIVY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDNiNTNiYjkwZGNlNWY4MWExZjBlMzc4OTg2MWRiZWIxNWFhOTUyMGYuLmY1NzhhZGYxYzJh
ZmQ1N2ZmMmZkNDM5YTk3YTRiNWNhZTIyMWJlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENv
bnN0cnVjdG9yLmNwcApAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZwog
CiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6
Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9uYWxI
ZWlnaHQpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVy
KCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbWFnZS5y
ZWxlYXNlKCksICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1hZ2UucmVsZWFzZSgpLCAmVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6
OmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKaW5kZXggYWI2NDY3
ZWNkMTk4ODFhNmQ4NWQ5MjJkYjc5Yjc4ZmI1NDhlYjNhNC4uMzhjYjliNTYzY2IxOTI0Yzc0NTAx
OTNlMjQxN2QwMjUzZDE5NjY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEludGVudDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhCiAgICAgICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7CiAKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBl
cihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAg
ICAgfQogCkBAIC04MCw3ICs4MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEludGVudDo6
Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAgICAg
IHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKaW5kZXggMzNhMGEyMzRkOWEx
NjMzMzQ2ZjA5YWM2Mjk1MWNkOWU1NjkxZmZmNS4uYTNhZjkyNmIzOGRlZjVjMjkyYzY2ZWM0ZTY4
YWY1Y2I5MjFjNmRjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlQ2hhbm5lbDo6Y29uc3RydWN0b3JDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndQogICAgIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRk
ZW5SZWZlcmVuY2Uod3JhcHBlciwgInBvcnQxIiwgdG9WOChvYmotPnBvcnQxKCksIGFyZ3MuSG9s
ZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhp
ZGRlblJlZmVyZW5jZSh3cmFwcGVyLCAicG9ydDIiLCB0b1Y4KG9iai0+cG9ydDIoKSwgYXJncy5I
b2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIob2JqLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3Jh
cHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggOTc3YmNiMzhmNmQwM2MyNTZjNDAyNDA2
Y2JjOGExZGEwNGZmZTU4YS4uY2Y5NjNmOTMwMjIwNDYzYzk4NTE4MDg0OTExZDE0MzE2NGY4NTY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRp
b25PYnNlcnZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXIKICAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sg
PSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBwZXIsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICBSZWZQdHI8TXV0YXRpb25PYnNlcnZlcj4gb2JzZXJ2ZXIgPSBN
dXRhdGlvbk9ic2VydmVyOjpjcmVhdGUoY2FsbGJhY2sucmVsZWFzZSgpKTsKIAotICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIob2JzZXJ2ZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKaW5kZXggM2YxMGRlNDVl
ZTkzYjhlMjk0Njk4MTRlNjdhZWRmM2U0NGI5MzNiZi4uMWYxYjZlYjFjOWMyOTMzNjZmZjY1NjZi
YWJhNGRlNjNlMjNlMmZhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJLaXRQb2ludDo6Y29uc3RydWN0b3JDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbgogICAgIH0KICAgICBSZWZQdHI8V2ViS2l0UG9pbnQ+IHBv
aW50ID0gV2ViS2l0UG9pbnQ6OmNyZWF0ZSh4LCB5KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIocG9pbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIocG9pbnQucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdy
YXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRw
UmVxdWVzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhY
TUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKaW5kZXggOTVkYzM2M2EyYTE0M2NhNTQ0NzNiNjkzNDA5
YTZhNGQxOTQ0ZTZhNC4uMDYxYWE4MmRiY2YzOTU0M2JmM2EwODY4ZmI3ZDAzMzI1NGVlNjZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndQogICAgIFJlZlB0cjxYTUxIdHRwUmVxdWVzdD4geG1sSHR0cFJlcXVlc3QgPSBY
TUxIdHRwUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIHNlY3VyaXR5T3JpZ2luKTsKIAogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcih4bWxIdHRwUmVxdWVzdC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcih4bWxIdHRwUmVxdWVzdC5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRF
UEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187016</attachid>
            <date>2013-02-07 01:09:50 -0800</date>
            <delta_ts>2013-02-07 04:40:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109065-20130207100625.patch</filename>
            <type>text/plain</type>
            <size>56006</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uODJiZTNiYjE3ZTdlYWE0MjRiMTRiZWM1YWNkYTYz
NGQ0YTU3MTdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMy0wMi0wNyAgRGFu
IENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbdjhdIG1vdmUgcGVyc2lz
dGVudDo6bmV3IGFuZCA6OmRpc3Bvc2UgaW50byBzYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAg
ICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0
ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0
ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OmNyZWF0ZVdyYXBwZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVXcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29u
c3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV4Y2VwdGlvbjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRl
cmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50
ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9i
ajo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29u
c3RydWN0b3IzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVyKToK
KyAgICAgICAgKERPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6
OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBwZXJJbk9iamVj
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlck1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJN
YXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyTWFwOjpyZW1vdmVBbmREaXNw
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OmRlZmF1bHRXZWFrQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFw
cGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFNjcmlwdFdyYXBwYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OmRpc3Bvc2VXcmFwcGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d2Vha0NhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vha05QT2JqZWN0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVDb250ZXh0SWZOZWVkZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXcmFwcGVyQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
cmFwcGVyQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVm
ZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OndyYXBB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0V2ViR0xBcnJheSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlv
bk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25PYnNlcnZl
cjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJLaXRQ
b2ludDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhY
TUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisKIDIwMTMtMDItMDYg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIEds
eXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHNh
bWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KaW5kZXggMzM0Mjg1YTY2YWUxMDJiNzg2YzgxYmEwMjUyMzdiMzJhNDk5YjZk
Yi4uMjNmNjA0MWU5NTNiZjA0ZDQwM2I1OGI1NTYxMDg0ZDg5Zjg1ZmY3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE5
NjQsNyArMTk2NCw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAot
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBAIC0yMDM5LDcgKzIwMzksNyBAQCBFTkQKICAg
ICBSZWZQdHI8JHtpbnRlcmZhY2VOYW1lfT4gZXZlbnQgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVh
dGUodHlwZSwgZXZlbnRJbml0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5y
ZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIxODAs
NyArMjE4MCw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCks
ICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQp
OwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTM1NDIsOSArMzU0Miw3IEBAIEVORAog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1
cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SU5ERVBFTkRFTlQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCBmMGYz
ZjM2NTQzNjRmYzFkZTE1OTMxOGUxNjZhOWY0ZjNkNjk1YmIyLi5hYmRhYmRmYjg2ODdkNTQ3YzNi
ZjkwMmY4OTMxNjZkOWYyYjg2NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTE4NCw5ICsx
ODQsNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RmxvYXQ2NEFycmF5OjpjcmVhdGVXcmFw
cGVyKFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBpbQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
IAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBp
c29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3Jh
cHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAg
d3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6SU5ERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
dm9pZCBWOEZsb2F0NjRBcnJheTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBhMDVkY2VmYWRkOGIxYmJjMDFjMzdjY2ZkNjBl
ZmFiZGE4ZDcyNjE0Li5lMmM2MTBlNjMyZTAyODk1ZTAzYmFkODU0MjkzNjhhYmY2ZjkwZGNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjExLDkgKzIxMSw3IEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdEFjdGl2CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFu
ZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExp
ZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJDb25maWd1
cmF0aW9uOjpJTkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggNDZkNGE3ZDk2MDhkZDhhZTRhZTdjMTMyZmQw
NzVjNDgzMGIzZTFlMi4uZmRkZjJkMTg0ZWU1Mjk1YzJhYTkxNGFmMTQzOWE3OWJmYzc5NDhjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNDksOSArMTQ5LDcg
QEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXMKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAg
ICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0
ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIs
IGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBw
ZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5k
ZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UIDogV3JhcHBlckNv
bmZpZ3VyYXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQg
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBkNzM4ZTk1ZGFlMGNmYWVkMDQyZDBm
NmQ0NWY5Y2MyNDk4MmI1MGM1Li4zNzY5ODVhZTcxNWFlNjBiYTEzOWE0YTU5NTQ4Y2FlMmI4MmJj
MGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8VGVzdEV2ZW50Q29uc3Ry
dWN0b3I+IGV2ZW50ID0gVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSh0eXBlLCBldmVudElu
aXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5E
RU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTgxLDkgKzE4MSw3IEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcihQ
YXNzUmVmUHRyPFRlc3RFdmVuCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRl
KTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0
aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJDb25maWd1cmF0
aW9uOjpJTkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdEV2
ZW50Q29uc3RydWN0b3I6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDAyODViN2MyNzczMzcxMmVhYTYxZTQ3Yzc1MTY3ZDUyNDEyM2IwNDQu
LmM3Njc1YzRmZDk1YjNkNDZlMzE4NmIzMTY3MTY2MGExMTUwYTViYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMjE1LDkgKzIxNSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0RXZlbnRUYXJnZXQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZlbnRUYXJn
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0Rl
cGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJTkRFUEVOREVOVCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdEV2ZW50VGFyZ2V0OjpkZXJlZk9i
amVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IGZiNTQ2ZThhYzJl
MTQwMTA2MjgwYzRlMzBmMWI2YzRiNzQxMGIzZTQuLjA2Y2I4NzY1YWVlYTZhNTNjZTRiOGJiNjdi
MDFhMzE1MWVlOTcyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC0xNDAsOSArMTQwLDcg
QEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFeGNlcHRpb246OmNyZWF0ZVdyYXBwZXIo
UGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPgogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRl
KTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwg
aXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBl
ckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRl
bnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6SU5ERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBW
OFRlc3RFeGNlcHRpb246OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAKaW5kZXggNjRhMTdhZmM1NjNhYTkwODNiZTcyZWRiYWUyOWExOTFhOGU1ZjI0Ni4uNzU5
NmM2ZGIzNmI3ZjM1OWRmNTdmNTJmMDRiZTllYmM2NmUyMDAxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50
ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgaWYg
KGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIGZhaWw6
CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAt
MzcwLDkgKzM3MCw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0SW50ZXJmYWNlOjpj
cmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4KICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhh
bmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0g
ICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0
ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5U
IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIHZvaWQgVjhUZXN0SW50ZXJmYWNlOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDBiYjBh
OTk5ZjA2MzJkMzY4ZDY4MDVhNGQ2MTNiMmRlMjdlYjBiMC4uZGQ0YWMyNTA4OGYwY2Q3ZDczM2Q0
ODU3MGQ0ZTAzMTY2YjA2OTg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcApAQCAtMTQ5LDkgKzE0OSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRl
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0Rl
cGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJTkRFUEVOREVOVCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcAppbmRleCBkMDNjZjQ1ZGZkOTQwNWE4MmJkNTc4MmQxMjNkMzVhNzdiMmUxZjQ3Li4w
OWZmNzhjNzAyOTAzMjZhNTNiMzEwZDEwMDMwMzc3ZDAyNzJiNDkyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6CiAgICAgaWYgKGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmVjhUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJl
bGVhc2UoKSwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogICBmYWlsOgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24o
ZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE5MCw5ICsxOTAsNyBAQCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxUZXN0TmFtZQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250
ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAg
aWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5k
ZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdy
YXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SU5E
RVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZDNjNmI0
MGEzMDU5Y2RiMWFjNWQyOTdlZDkxZGYzZWY5Yjk4ZmE1OS4uNzZmMDNkYmJlNGRjNWQ0NjA1MTNl
OWQ0ZGRiOTFiNDkyYTZjOGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0Tm9kZT4gaW1wbCA9IFRlc3ROb2Rl
OjpjcmVhdGUoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
RVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0xNTMsOSArMTUzLDcgQEAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQ
dHI8VGVzdE5vZGU+IGltcGwsIHY4OjoKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7
Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50
TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UIDogV3JhcHBlckNvbmZp
Z3VyYXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhU
ZXN0Tm9kZTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBjMTExMDg0
MGZhZDA4MWQyZjFkMDY2MWYwNWVlNTJkZDUwMzczMTFhLi4wZGM0MTNmMjZmMzFkZTBlYzA4MWMy
YjQyMzI5MTgwN2E5NzMwMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjA5MCw3ICsyMDkwLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0T2JqPiBpbXBsID0gVGVzdE9iajo6
Y3JlYXRlKHRlc3RDYWxsYmFjayk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmln
dXJhdGlvbjo6REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjI5NSw5
ICsyMjk1LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPYmo6OmNyZWF0ZVdyYXBw
ZXIoUGFzc1JlZlB0cjxUZXN0T2JqPiBpbXBsLCB2ODo6SGEKICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQo
KSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRs
ZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8s
IHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAg
ICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwg
aGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UIDog
V3JhcHBlckNvbmZpZ3VyYXRpb246OklOREVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIHZvaWQgVjhUZXN0T2JqOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTAzNjQzOGQyYWY4ZGUz
ZTlkZWIzNjBiZjk1MmY2NzliYTU2YmJiYi4uZTYxMDNjYjgyMTViYjRlZWIxODI1OGUwMTRmYzE3
YWU3MmM3OGIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAg
LTg4LDcgKzg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMkNhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBs
LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTAw
LDcgKzEwMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRyPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNy
ZWF0ZShibG9iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
RVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0xMTIsNyArMTEyLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0
cnVjdG9yNENhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKHN0cmluZyk7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAot
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjA0LDkgKzIwNCw3IEBAIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihQ
YXNzUmVmUHRyPFRlCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNv
bnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAg
ICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJ
bmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8g
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJ
TkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNTZi
ZWQ5ODA1NjAyZDU2ZWM5YzUxMzdjYmRiNTRiODg0MWMwYjNkYi4uMjBjNDEwZmZhNmRhZWUyODNk
YmIzMDNjZTk1ZDY0NjRmODEwYjM2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKAogICAgIFJlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPiBpbXBsID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3Jl
YXRlKGhlbGxvLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0KTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogCkBAIC0zMjIsOSArMzIyLDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZVdyYXBwZXIoUGFz
c1IKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3Bl
cnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAm
aW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6REVQRU5ERU5UIDogV3JhcHBlckNvbmZpZ3VyYXRpb246OklOREVQRU5ERU5U
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCBjY2I5YjhhMGM2ZmQwZDE1ODc4MmY5
NDU0MWJiNTEzZDJhYTIzZmQ4Li4xMmE1MmZlNDA2ZWFhM2Q5YTAzNjQyOGM3NGFkNmE3OGM0ZTBi
YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAg
LTgwLDI0ICs4MCw0IEBAIHZvaWQgRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8uYWRkTWVtYmVy
KG1fd3JhcHBlck1hcCwgIndyYXBwZXJNYXAiKTsKIH0KIAotdm9pZCBET01EYXRhU3RvcmU6Ondl
YWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVl
PiB2YWx1ZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBTY3JpcHRXcmFwcGFibGUqIGtleSA9IHN0
YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KGNvbnRleHQpOwotICAgIEFTU0VSVCh2YWx1ZS0+
SXNPYmplY3QoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLSAgICBBU1NFUlQoa2V5LT53
cmFwcGVyKCkgPT0gd3JhcHBlcik7Ci0gICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJl
IGVxdWFsIHRvIHxrZXl8LCBlLmcuLCBpZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1v
c3QgYmFzZSBjbGFzcy4KLSAgICB2b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKLSAg
ICBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKLSAg
ICBBU1NFUlQoaW5mby0+ZGVyZWZPYmplY3RGdW5jdGlvbik7Ci0KLSAgICBrZXktPmNsZWFyV3Jh
cHBlcigpOwotICAgIHZhbHVlLkRpc3Bvc2UoKTsKLSAgICB2YWx1ZS5DbGVhcigpOwotICAgIC8v
IEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xlIHRpbWVzIGNhbiBi
ZSBjb25zdW1lZAotICAgIC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdoaWNoIGNhdXNlcyBOb2Rl
IGRlc3RydWN0aW9ucy4gV2Ugc2hvdWxkCi0gICAgLy8gbWFrZSBOb2RlIGRlc3RydWN0aW9ucyBp
bmNyZW1lbnRhbC4KLSAgICBpbmZvLT5kZXJlZk9iamVjdChvYmplY3QpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5o
CmluZGV4IGQ3MmQ0YTUxMDUzNzYyZGQyNzIzMTU1NTFmMjkzMjBmMjUyOGFjNDMuLjAyNjZlZDky
OWRlODc1OWI3NWY1NTgwNTU4YTg0MTlmZmQyNTMxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC04OSwxNSArODksMTUgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlcihU
KiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFw
cGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChtYWlu
V29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0
KG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNv
bGF0ZWRXb3JsZHNFeGlzdCgpKSkgewotICAgICAgICAgICAgICAgIHNldFdyYXBwZXJJbk9iamVj
dChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgICAgICAgICAgICAgIHNldFdyYXBwZXJJ
bk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1
cm4gY3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAg
ICAgIHJldHVybiBjdXJyZW50KGlzb2xhdGUpLT5zZXQob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRl
LCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MTA4LDIxICsxMDgsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93cmFwcGVyTWFwLmdl
dChvYmplY3QpOwogICAgIH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCitwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgaW5saW5lIHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgaW5saW5lIHZvaWQgc2V0KFQqIG9i
amVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAg
ICAgICBBU1NFUlQoISFvYmplY3QpOwogICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgp
KTsKICAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkg
JiYgbV90eXBlID09IE1haW5Xb3JsZCkgewotICAgICAgICAgICAgc2V0V3JhcHBlckluT2JqZWN0
KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmpl
Y3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3dyYXBwZXJNYXAuc2V0KG9iamVjdCwgd3Jh
cHBlcik7CisgICAgICAgIG1fd3JhcHBlck1hcC5zZXQob2JqZWN0LCB3cmFwcGVyLCBjb25maWd1
cmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKLQotcHJpdmF0ZToKICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBtYWlu
V29ybGRTdG9yZSgpOwogCiAgICAgc3RhdGljIGJvb2wgbWFpbldvcmxkV3JhcHBlcklzU3RvcmVk
SW5PYmplY3Qodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNTQsMTkgKzE1NCwxNSBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Piwgdjg6Oklzb2xhdGUqKQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVj
dCh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBjb25zdCBXcmFw
cGVyQ29uZmlndXJhdGlvbiYpCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNjcmlwdFdyYXBwYWJs
ZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3QoU2NyaXB0V3Jh
cHBhYmxlKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAg
ICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKLSAgICAgICAgd3JhcHBlci5NYWtlV2Vh
ayhpc29sYXRlLCBvYmplY3QsIHdlYWtDYWxsYmFjayk7CisgICAgICAgIG9iamVjdC0+c2V0V3Jh
cHBlcih3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+LCB2b2lkKiBjb250ZXh0KTsKLQogICAgIFR5cGUgbV90eXBlOwogICAgIERPTVdyYXBwZXJN
YXA8dm9pZD4gbV93cmFwcGVyTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJNYXAuaAppbmRleCAwMGMwM2UwOTc0MzcwYzY4NTEyM2ViNGU1ZTU2OGYzYzg3ODRj
OTk0Li5hZjBmODk2NzI3NmRlM2RiZDBkNDJjMTQxYmU5MTAwZDAxOGMyZmI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCkBAIC01MCwxNyArNTAsMTkgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBn
ZXQoS2V5VHlwZSoga2V5KQorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KEtleVR5cGUq
IGtleSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldChLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIpCisgICAgdm9pZCBzZXQoS2V5VHlwZSoga2V5LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX21hcC5jb250YWlucyhrZXkpKTsKICAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PEtleVR5cGUqPih0b05hdGl2ZSh3cmFwcGVyKSkgPT0ga2V5KTsKLSAgICAgICAg
d3JhcHBlci5NYWtlV2VhayhtX2lzb2xhdGUsIHRoaXMsIG1fY2FsbGJhY2spOwotICAgICAgICBt
X21hcC5zZXQoa2V5LCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gcGVyc2lzdGVudCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobV9pc29sYXRl
LCB3cmFwcGVyKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5jb25maWd1cmVXcmFwcGVyKHBlcnNp
c3RlbnQsIG1faXNvbGF0ZSk7CisgICAgICAgIHBlcnNpc3RlbnQuTWFrZVdlYWsobV9pc29sYXRl
LCB0aGlzLCBtX2NhbGxiYWNrKTsKKyAgICAgICAgbV9tYXAuc2V0KGtleSwgcGVyc2lzdGVudCk7
CiAgICAgfQogCiAgICAgdm9pZCBjbGVhcigpCkBAIC04MSwxMiArODMsMTUgQEAgcHVibGljOgog
ICAgICAgICBpbmZvLmlnbm9yZU1lbWJlcihtX2NhbGxiYWNrKTsKICAgICB9CiAKLSAgICB2b2lk
IHJlbW92ZShLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIp
CisgICAgdm9pZCByZW1vdmVBbmREaXNwb3NlKEtleVR5cGUqIGtleSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgeworICAgICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKCp2YWx1ZSk7CiAgICAgICAgIHR5cGVuYW1l
IE1hcFR5cGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBBU1NFUlQo
aXQgIT0gbV9tYXAuZW5kKCkpOwogICAgICAgICBBU1NFUlQoaXQtPnZhbHVlID09IHdyYXBwZXIp
OwogICAgICAgICBtX21hcC5yZW1vdmUoaXQpOworICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoaXNv
bGF0ZSk7CisgICAgICAgIHZhbHVlLkNsZWFyKCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTgs
MTAgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZSA9IHRv
V3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpOwogICAgICAgICBBU1NFUlQodHlwZS0+ZGVyZWZPYmpl
Y3RGdW5jdGlvbik7CiAgICAgICAgIEtleVR5cGUqIGtleSA9IHN0YXRpY19jYXN0PEtleVR5cGUq
Pih0b05hdGl2ZSh3cmFwcGVyKSk7Ci0KLSAgICAgICAgbWFwLT5yZW1vdmUoa2V5LCB3cmFwcGVy
KTsKLSAgICAgICAgd3JhcHBlci5EaXNwb3NlKCk7Ci0gICAgICAgIHdyYXBwZXIuQ2xlYXIoKTsK
KyAgICAgICAgbWFwLT5yZW1vdmVBbmREaXNwb3NlKGtleSwgd3JhcHBlciwgaXNvbGF0ZSk7CiAg
ICAgICAgIHR5cGUtPmRlcmVmT2JqZWN0KGtleSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IDY1NTAwMTc0NWFlZmZjYzJlM2Zi
NTdhYTAxYTZmYmQ0ODMzYzczNGUuLjE2YmM3OGE5NDRjNzEyMjgwNTk1M2MwOGMwZWNiOTZiMGQw
ZWVmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBw
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5o
CkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oCiAKICNpbmNsdWRl
ICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV3JhcHBlclR5cGVJ
bmZvLmgiCiAjaW5jbHVkZSA8djguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMzcg
KzQxLDM1IEBAIGNsYXNzIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0V3Jh
cHBhYmxlKCkgeyB9CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKCkg
Y29uc3QKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KG1hc2tPclVubWFza1Bv
aW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PihtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldFdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikK
KyAgICB2b2lkIHNldFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgewotICAgICAgICBtX21hc2tlZFdyYXBwZXIgPSBtYXNrT3JVbm1hc2tQb2ludGVy
KCp3cmFwcGVyKTsKKyAgICAgICAgQVNTRVJUKG1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwor
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBwZXJzaXN0ZW50ID0gdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5j
b25maWd1cmVXcmFwcGVyKHBlcnNpc3RlbnQsIGlzb2xhdGUpOworICAgICAgICBwZXJzaXN0ZW50
Lk1ha2VXZWFrKGlzb2xhdGUsIHRoaXMsIHdlYWtDYWxsYmFjayk7CisgICAgICAgIG1fbWFza2Vk
V3JhcHBlciA9IG1hc2tPclVubWFza1BvaW50ZXIoKnBlcnNpc3RlbnQpOwogICAgIH0KIAotICAg
IHZvaWQgY2xlYXJXcmFwcGVyKCkKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
IW1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xl
YXIoKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOworICAgICAgICBpbmZvLmlnbm9yZU1lbWJlciht
X21hc2tlZFdyYXBwZXIpOwogICAgIH0KIAotICAgIHZvaWQgZGlzcG9zZVdyYXBwZXIoKQorcHJp
dmF0ZToKKyAgICBpbmxpbmUgdm9pZCBkaXNwb3NlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX21hc2tlZFdyYXBwZXIuSXNF
bXB0eSgpKTsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVyID0gd3JhcHBlcigpOwotICAgICAgICBt
X21hc2tlZFdyYXBwZXIuRGlzcG9zZSgpOworICAgICAgICBBU1NFUlQoKnZhbHVlID09IG1hc2tP
clVubWFza1BvaW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOworICAgICAgICB2YWx1ZS5EaXNwb3Nl
KCk7CiAgICAgICAgIG1fbWFza2VkV3JhcHBlci5DbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAgaW5mby5pZ25vcmVNZW1i
ZXIobV9tYXNrZWRXcmFwcGVyKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gbV9tYXNrZWRXcmFwcGVyOwogCiAgICAgc3RhdGljIGlubGluZSB2ODo6
T2JqZWN0KiBtYXNrT3JVbm1hc2tQb2ludGVyKGNvbnN0IHY4OjpPYmplY3QqIG9iamVjdCkKQEAg
LTc5LDYgKzc4LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IHVpbnRwdHJfdCByYW5kb21N
YXNrID0gfihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJldlYkNvcmVNZW1vcnlUeXBlczo6
RE9NKSA+PiAxMyk7IC8vIEVudHJvcHkgdmlhIEFTTFIuCiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHY4OjpPYmplY3QqPigob2JqZWN0UG9pbnRlciBeIHJhbmRvbU1hc2spICYgKCFv
YmplY3RQb2ludGVyIC0gMSkpOyAvLyBQcmVzZXJ2ZSBudWxsIHdpdGhvdXQgYnJhbmNoaW5nLgog
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKKyAgICB7
CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZSoga2V5ID0gc3RhdGljX2Nhc3Q8U2NyaXB0V3JhcHBh
YmxlKj4oY29udGV4dCk7CisgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CisgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIEFTU0VSVChrZXktPndyYXBwZXIoKSA9
PSB3cmFwcGVyKTsKKyAgICAgICAga2V5LT5kaXNwb3NlV3JhcHBlcih2YWx1ZSk7CisKKyAgICAg
ICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJlIGVxdWFsIHRvIHxrZXl8LCBlLmcuLCBp
ZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1vc3QgYmFzZSBjbGFzcy4KKyAgICAgICAg
dm9pZCogb2JqZWN0ID0gdG9OYXRpdmUod3JhcHBlcik7CisgICAgICAgIFdyYXBwZXJUeXBlSW5m
byogaW5mbyA9IHRvV3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpOworICAgICAgICBBU1NFUlQoaW5m
by0+ZGVyZWZPYmplY3RGdW5jdGlvbik7CisKKyAgICAgICAgLy8gRklYTUU6IEkgbm90aWNlZCB0
aGF0IDUwJX4gb2YgbWlub3IgR0MgY3ljbGUgdGltZXMgY2FuIGJlIGNvbnN1bWVkCisgICAgICAg
IC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdoaWNoIGNhdXNlcyBOb2RlIGRlc3RydWN0aW9ucy4g
V2Ugc2hvdWxkCisgICAgICAgIC8vIG1ha2UgTm9kZSBkZXN0cnVjdGlvbnMgaW5jcmVtZW50YWwu
CisgICAgICAgIGluZm8tPmRlcmVmT2JqZWN0KG9iamVjdCk7CisgICAgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmNwcAppbmRleCAzNWM2ZDZhNDY4ZmUxMDYxM2MwZjU4YWU0MTQ1ZTJiMTQzMWNm
MmMxLi42M2NmNjBkOTgyNzFhOGU3ODNlZjIwMjA5N2UwY2M3MDM5MjE0ZWQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMzM1LDcg
KzMzNSw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygpCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbE9iamVjdCA9IHRvSW5uZXJHbG9iYWxP
YmplY3QobV9jb250ZXh0LmdldCgpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8o
aW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKICAgICBpbm5l
ckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdpbmRvd1dyYXBwZXIpOwotICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdp
bmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93V3JhcHBlciwgbV9pc29sYXRlKTsKKyAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9N
V2luZG93Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIsIG1faXNv
bGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggZDhm
ZjI4NjFmZDcwNWYyYzY2Y2Q0ZmYwMGNlY2Q3N2ExYzc3MDhiMi4uYTkxY2JiNGMzMDI0MTFmYTYy
YzFlMmQxYzhhMDA0MzFiN2Y4ZjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmgKQEAgLTU2LDExICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKiwgdjg6
Oklzb2xhdGUqKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0
aWMgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKFBhc3NSZWZQdHI8VD4sIFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKik7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBhc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+LCBXcmFw
cGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSosIFdyYXBw
ZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSk7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBz
ZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyosIHZv
aWQqKTsKICAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyTmF0aXZlSW5mbyh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qKTsKLSAgICAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIHNldFdyYXBwZXJDbGFzcyh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4p
OwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNET01XcmFw
cGVyKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAgICAgICAgIHN0YXRpYyBib29sIGlzV3JhcHBl
ck9mVHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIFdyYXBwZXJUeXBlSW5mbyopOwpAQCAtNjks
MTYgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBzZXRO
YW1lZEhpZGRlblJlZmVyZW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHBhcmVudCwgY29uc3Qg
Y2hhciogbmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoaWxkKTsKICAgICB9OwogCi0gICAg
aW5saW5lIHZvaWQgVjhET01XcmFwcGVyOjpzZXRXcmFwcGVyQ2xhc3Modm9pZCosIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCi0gICAgewotICAgICAgICB3cmFwcGVyLlNldFdy
YXBwZXJDbGFzc0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZv
aWQgVjhET01XcmFwcGVyOjpzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXIpCi0gICAgewotICAgICAgICB3cmFwcGVyLlNldFdyYXBwZXJDbGFz
c0lkKHY4RE9NTm9kZUNsYXNzSWQpOwotICAgIH0KLQogICAgIGlubGluZSB2b2lkIFY4RE9NV3Jh
cHBlcjo6c2V0TmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBw
ZXJUeXBlSW5mbyogdHlwZSwgdm9pZCogb2JqZWN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKHdy
YXBwZXItPkludGVybmFsRmllbGRDb3VudCgpID49IDIpOwpAQCAtOTcsMTQgKzg1LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IGlubGluZSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8q
IHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+IG9iamVjdCwgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRpbWUpCiAgICAgewog
ICAgICAgICBzZXROYXRpdmVJbmZvKHdyYXBwZXIsIHR5cGUsIG9iamVjdC5nZXQoKSk7Ci0gICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwotICAgICAgICBBU1NFUlQobWF5YmVET01X
cmFwcGVyKHdyYXBwZXJIYW5kbGUpKTsKLSAgICAgICAgc2V0V3JhcHBlckNsYXNzKG9iamVjdC5n
ZXQoKSwgd3JhcHBlckhhbmRsZSk7Ci0gICAgICAgIERPTURhdGFTdG9yZTo6c2V0V3JhcHBlcihv
YmplY3QubGVha1JlZigpLCB3cmFwcGVySGFuZGxlLCBpc29sYXRlKTsKLSAgICAgICAgcmV0dXJu
IHdyYXBwZXJIYW5kbGU7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikp
OworICAgICAgICBXcmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFw
cGVyQ29uZmlndXJhdGlvbihvYmplY3QuZ2V0KCksIGxpZmV0aW1lKTsKKyAgICAgICAgRE9NRGF0
YVN0b3JlOjpzZXRXcmFwcGVyKG9iamVjdC5sZWFrUmVmKCksIHdyYXBwZXIsIGlzb2xhdGUsIGNv
bmZpZ3VyYXRpb24pOworICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggNDViZWEyZWI1MWE4Mzk0
YjkxMjU4ZTAyNTQ2OTRmN2JlYWZjMDk2NC4uOGNkYTk4ZDRhZDEzMjgwYzE4ZjZhZGYyODM0ZDIw
YzhmMTRlMjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAK
QEAgLTQwMiw5ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCB3ZWFrTlBPYmplY3RDYWxsYmFjayh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPgogCiAgICAgLy8gTXVz
dCByZW1vdmUgZnJvbSBvdXIgbWFwIGJlZm9yZSBjYWxsaW5nIF9OUE5fUmVsZWFzZU9iamVjdCgp
LiBfTlBOX1JlbGVhc2VPYmplY3QgY2FuCiAgICAgLy8gY2FsbCBmb3JnZXRWOE9iamVjdEZvck5Q
T2JqZWN0LCB3aGljaCB1c2VzIHRoZSB0YWJsZSBhcyB3ZWxsLgotICAgIHN0YXRpY05QT2JqZWN0
TWFwKCkucmVtb3ZlKG5wT2JqZWN0LCB3cmFwcGVyKTsKLSAgICB3cmFwcGVyLkRpc3Bvc2UoKTsK
LSAgICB3cmFwcGVyLkNsZWFyKCk7CisgICAgc3RhdGljTlBPYmplY3RNYXAoKS5yZW1vdmVBbmRE
aXNwb3NlKG5wT2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlKTsKIAogICAgIGlmIChfTlBOX0lzQWxp
dmUobnBPYmplY3QpKQogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QobnBPYmplY3QpOwpAQCAt
NDQ4LDI3ICs0NDYsMjQgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0Rm9y
TlBPYmplY3QoTlBPYmplY3QqIG9iamVjdCwgTlBPYmplY3QqIHJvb3QKICAgICAgICAgcmV0dXJu
IHZhbHVlOwogCiAgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKHZhbHVlLCBucE9iamVj
dFR5cGVJbmZvKCksIG9iamVjdCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcodmFsdWUpOwotICAg
IFY4RE9NV3JhcHBlcjo6c2V0V3JhcHBlckNsYXNzKG9iamVjdCwgd3JhcHBlckhhbmRsZSk7CiAK
ICAgICAvLyBLSlMgcmV0YWlucyB0aGUgb2JqZWN0IGFzIHBhcnQgb2YgaXRzIHdyYXBwZXIgKHNl
ZSBCaW5kaW5nczo6Q0luc3RhbmNlKS4KICAgICBfTlBOX1JldGFpbk9iamVjdChvYmplY3QpOwog
ICAgIF9OUE5fUmVnaXN0ZXJPYmplY3Qob2JqZWN0LCByb290KTsKIAotICAgIHN0YXRpY05QT2Jq
ZWN0TWFwKCkuc2V0KG9iamVjdCwgd3JhcHBlckhhbmRsZSk7Ci0gICAgQVNTRVJUKFY4RE9NV3Jh
cHBlcjo6bWF5YmVET01XcmFwcGVyKHdyYXBwZXJIYW5kbGUpKTsKKyAgICBXcmFwcGVyQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbihvYmplY3Qs
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRFTlQpOworICAgIHN0YXRpY05QT2JqZWN0TWFw
KCkuc2V0KG9iamVjdCwgdmFsdWUsIGNvbmZpZ3VyYXRpb24pOworICAgIEFTU0VSVChWOERPTVdy
YXBwZXI6Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAog
dm9pZCBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHN0YXRpY05QT2JqZWN0TWFwKCku
Z2V0KG9iamVjdCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gc3RhdGlj
TlBPYmplY3RNYXAoKS5nZXQob2JqZWN0KTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7
CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICAgICAgVjhET01XcmFwcGVyOjpj
bGVhck5hdGl2ZUluZm8od3JhcHBlciwgbnBPYmplY3RUeXBlSW5mbygpKTsKLSAgICAgICAgc3Rh
dGljTlBPYmplY3RNYXAoKS5yZW1vdmUob2JqZWN0LCB3cmFwcGVyKTsKLSAgICAgICAgd3JhcHBl
ci5EaXNwb3NlKCk7Ci0gICAgICAgIHdyYXBwZXIuQ2xlYXIoKTsKKyAgICAgICAgc3RhdGljTlBP
YmplY3RNYXAoKS5yZW1vdmVBbmREaXNwb3NlKG9iamVjdCwgd3JhcHBlciwgdjg6Oklzb2xhdGU6
OkdldEN1cnJlbnQoKSk7CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggMmM5ZWRlODY2ZWZlNTI2NzczMThkMTJlNTk5NTM0YTFjNzIz
YTNiZS4uYjU1MmYwMGU1MDg4MDQ0MjBmMDMzOTcyOWQ4NTRhMDk3NTEyMjkwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRp
YWxpemVDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFdv
cmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRl
eHQsIG1faXNvbGF0ZSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRU
eXBlLCBqc1dvcmtlckNvbnRleHQsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRF
UEVOREVOVCk7CiAKICAgICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJv
dG90eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Z2xvYmFsT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkds
b2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dy
YXBwZXJUeXBlSW5mby5oCmluZGV4IDhiZDZlMjkwYWViMWNmZWVkNTUyYzQyZDM4NjFiM2ViNDk0
N2IxNWIuLjkwZGQ1ODk2ZDA3MWQwODVjNzYwZGMxZmI3OGI0NTllNDBkZWU2ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBY3RpdmVET01PYmplY3Q7CiAgICAg
Y2xhc3MgRE9NRGF0YVN0b3JlOwogICAgIGNsYXNzIEV2ZW50VGFyZ2V0OworICAgIGNsYXNzIE5v
ZGU7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHY4RE9NV3JhcHBlclR5cGVJbmRleCA9IDA7CiAg
ICAgc3RhdGljIGNvbnN0IGludCB2OERPTVdyYXBwZXJPYmplY3RJbmRleCA9IDE7CkBAIC0xNDEs
NiArMTQyLDM0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdyYXBwZXJUeXBlSW5mbyo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJu
YWxGaWVsZCh2OERPTVdyYXBwZXJUeXBlSW5kZXgpKTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgV3Jh
cHBlckNvbmZpZ3VyYXRpb24geworCisgICAgICAgIGVudW0gTGlmZXRpbWUgeworICAgICAgICAg
ICAgREVQRU5ERU5ULCBJTkRFUEVOREVOVAorICAgICAgICB9OworCisgICAgICAgIHZvaWQgY29u
ZmlndXJlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgd3JhcHBlci5TZXRX
cmFwcGVyQ2xhc3NJZChjbGFzc0lkKTsKKyAgICAgICAgICAgIGlmIChsaWZldGltZSA9PSBJTkRF
UEVOREVOVCkKKyAgICAgICAgICAgICAgICB3cmFwcGVyLk1hcmtJbmRlcGVuZGVudChpc29sYXRl
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHVpbnQxNl90IGNsYXNzSWQ7CisgICAgICAg
IGNvbnN0IExpZmV0aW1lIGxpZmV0aW1lOworICAgIH07CisKKyAgICBpbmxpbmUgV3JhcHBlckNv
bmZpZ3VyYXRpb24gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbih2b2lkKiwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkxpZmV0aW1lIGxpZmV0aW1lKQorICAgIHsKKyAgICAgICAgV3JhcHBlckNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHt2OERPTU9iamVjdENsYXNzSWQsIGxpZmV0aW1lfTsK
KyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfQorCisgICAgaW5saW5lIFdyYXBw
ZXJDb25maWd1cmF0aW9uIGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24oTm9kZSosIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGltZSkKKyAgICB7CisgICAgICAgIFdyYXBwZXJD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRpbWV9
OworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICB9CiB9CiAKICNlbmRpZiAvLyBX
cmFwcGVyVHlwZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCmluZGV4IGQ5NzJjMzFlN2Y4ZDlmYmU5
NjVhN2IxZTg2YmU2ZmI1OTJmMmMyZmYuLjMwYTljNTQzNDE4ODgyYzQ4NDI4ODA1NWEwZTI0ZWY2
MzQ5MWYxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW4KICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0
ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9s
ZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCA4MzIxY2RhNDVhMzg2YjFjNmMw
YjQ5OTM2MmMwODhmNDc1Mjg1NWVmLi5jZDE2MDU5YjAxNTAyNDUzN2MzYmY2NjAwZDZmZjYyYzNi
YWUzMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtNTUsOCArNTUsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcEFycmF5QnVmZmVyVmlldyhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzLCBXcmFwcGVyVHlwZQogICAgIGlmIChoYXNJbmRleGVyKQogICAgICAgICBhcmdzLkhvbGRl
cigpLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoYXJyYXkuZ2V0KCkt
PmJhc2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCktPmxlbmd0aCgpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNl
KCksIHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6SU5ERVBFTkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0yMjUsOCArMjI0
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5cGUKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOwotICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SU5ERVBFTkRF
TlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCA5
OGQyMjVlYjBlYzMwY2I5NTJiMzNkOWNmZDM1MjYxZWUwNzQ3ZTIwLi5jZmU1MGMxOTYwOTkzNWQ5
NTJhNTI0MWZkMWRhMTdiODAxNDYxZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTczLDcg
KzczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWUKICAgICAKICAgICAvLyBUcmFuc2Zvcm0g
dGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhdWRpbyBjb250ZXh0Lgog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVhc2UoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
REVQRU5ERU5UKTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNw
cAppbmRleCAwNTQ1Mzg0NzZjYjc2Yjc1NjE4NTRlYWE5MTE2Mjk2NTEzYjUyYzgzLi4wMjEyODNi
NTc4MzM2MzUwYTkwYjA2ZWVhNmE1N2NkNWNhNzg0MmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgUmVmUHRyPERPTUZv
cm1EYXRhPiBkb21Gb3JtRGF0YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgp
LCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBFTkRF
TlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggN2JkN2E5MWY2
ODNlZmU2YjFkMjgxNzQzZTQyOTU5MDhkZTA2ODNlMy4uYmQ3YTRlNTBmYWE4OThlMDZhOGY2ODJk
MDFjMTk3YWJkOTM1ZWUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJgogICAgICAgICAvLyAnbmV3IERhdGFWaWV3KCknIGFuZCB0aGUgY2Fs
bCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY2FjaGVkIERhdGFWaWV3IG9iamVjdC4KICAgICAgICAg
UmVmUHRyPERhdGFWaWV3PiBkYXRhVmlldyA9IERhdGFWaWV3OjpjcmVhdGUoMCk7CiAgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZGF0YVZpZXcucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQ
RU5ERU5UKTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogICAgIGlmIChhcmdzWzBd
LT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
M2I1M2JiOTBkY2U1ZjgxYTFmMGUzNzg5ODYxZGJlYjE1YWE5NTIwZi4uZjU3OGFkZjFjMmFmZDU3
ZmYyZmQ0MzlhOTdhNGI1Y2FlMjIxYmVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAg
ICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25hbEhlaWdo
dCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltYWdlLnJlbGVh
c2UoKSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihpbWFnZS5yZWxlYXNlKCksICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpERVBF
TkRFTlQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcAppbmRleCBhYjY0NjdlY2Qx
OTg4MWE2ZDg1ZDkyMmRiNzliNzhmYjU0OGViM2E0Li4zOGNiOWI1NjNjYjE5MjRjNzQ1MDE5M2Uy
NDE3ZDAyNTNkMTk2Njg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGEKICAgICAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpERVBFTkRFTlQpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9
CiAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCAzM2EwYTIzNGQ5YTE2MzMz
NDZmMDlhYzYyOTUxY2Q5ZTU2OTFmZmY1Li5hM2FmOTI2YjM4ZGVmNWMyOTJjNjZlYzRlNjhhZjVj
YjkyMWM2ZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJl
ZmVyZW5jZSh3cmFwcGVyLCAicG9ydDEiLCB0b1Y4KG9iai0+cG9ydDEoKSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVu
UmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhvbGRl
cigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihvYmoucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
b2JqLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6REVQRU5ERU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCA5NzdiY2IzOGY2ZDAzYzI1NmM0MDI0MDZjYmM4
YTFkYTA0ZmZlNThhLi5jZjk2M2Y5MzAyMjA0NjNjOTg1MTgwODQ5MTFkMTQzMTY0Zjg1NjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcgogICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4
TXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKGFyZywgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0
aW9uT2JzZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZv
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAppbmRleCAzZjEwZGU0NWVlOTNi
OGUyOTQ2OTgxNGU2N2FlZGYzZTQ0YjkzM2JmLi4xZjFiNmViMWM5YzI5MzM2NmZmNjU2NmJhYmE0
ZGU2M2UyM2UyZmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRQb2ludD4gcG9pbnQg
PSBXZWJLaXRQb2ludDo6Y3JlYXRlKHgsIHkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihwb2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihw
b2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRFUEVOREVOVCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCA5NWRjMzYzYTJhMTQzY2E1NDQ3M2I2OTM0MDlhNmE0
ZDE5NDRlNmE0Li4wNjFhYTgyZGJjZjM5NTQzYmYzYTA4NjhmYjdkMDMzMjU0ZWU2NmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1CiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6REVQRU5E
RU5UKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187063</attachid>
            <date>2013-02-07 04:40:45 -0800</date>
            <delta_ts>2013-02-07 10:02:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109065-20130207133719.patch</filename>
            <type>text/plain</type>
            <size>56006</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uODJiZTNiYjE3ZTdlYWE0MjRiMTRiZWM1YWNkYTYz
NGQ0YTU3MTdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMy0wMi0wNyAgRGFu
IENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbdjhdIG1vdmUgcGVyc2lz
dGVudDo6bmV3IGFuZCA6OmRpc3Bvc2UgaW50byBzYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAg
ICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0
ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0
ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OmNyZWF0ZVdyYXBwZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVXcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29u
c3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV4Y2VwdGlvbjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRl
cmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50
ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9i
ajo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29u
c3RydWN0b3IzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVyKToK
KyAgICAgICAgKERPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6
OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBwZXJJbk9iamVj
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlck1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJN
YXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyTWFwOjpyZW1vdmVBbmREaXNw
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OmRlZmF1bHRXZWFrQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFw
cGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFNjcmlwdFdyYXBwYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OmRpc3Bvc2VXcmFwcGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d2Vha0NhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vha05QT2JqZWN0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVDb250ZXh0SWZOZWVkZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXcmFwcGVyQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
cmFwcGVyQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVm
ZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OndyYXBB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0V2ViR0xBcnJheSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlv
bk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25PYnNlcnZl
cjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJLaXRQ
b2ludDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhY
TUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisKIDIwMTMtMDItMDYg
IEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXplIEds
eXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHNh
bWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0KaW5kZXggMzM0Mjg1YTY2YWUxMDJiNzg2YzgxYmEwMjUyMzdiMzJhNDk5YjZk
Yi4uMzMyZjI2ODgwMzg4ZGEyNjA5MDY5ZDU4ODYzOTY2NGM1OTdhZjRiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTE5
NjQsNyArMTk2NCw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAot
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBAIC0yMDM5LDcgKzIwMzksNyBAQCBFTkQKICAg
ICBSZWZQdHI8JHtpbnRlcmZhY2VOYW1lfT4gZXZlbnQgPSAke2ludGVyZmFjZU5hbWV9OjpjcmVh
dGUodHlwZSwgZXZlbnRJbml0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5y
ZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTIxODAs
NyArMjE4MCw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAotICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCks
ICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQp
OwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTM1NDIsOSArMzU0Miw3IEBAIEVORAog
ICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGll
cyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBl
bmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsK
KyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1
cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogfQogRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCBmMGYz
ZjM2NTQzNjRmYzFkZTE1OTMxOGUxNjZhOWY0ZjNkNjk1YmIyLi4yMjUxNmI2YzBjNDgxMjk2ZWIy
NGMwZmQzMGE1MDQ1ZTRiZjY2NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTE4NCw5ICsx
ODQsNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RmxvYXQ2NEFycmF5OjpjcmVhdGVXcmFw
cGVyKFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBpbQogICAgICAgICByZXR1cm4gd3JhcHBlcjsK
IAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBp
c29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0g
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3Jh
cHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAg
d3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFw
cGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQog
dm9pZCBWOEZsb2F0NjRBcnJheTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURP
TU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBhMDVkY2VmYWRkOGIxYmJjMDFjMzdjY2ZkNjBl
ZmFiZGE4ZDcyNjE0Li4wNDMxNWI2MjUzOWQ3ZGJiYzkzNWFkYzM3ZjI0ZDRlZGYyMjQ4ZDVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjExLDkgKzIxMSw3IEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdEFjdGl2CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFu
ZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExp
ZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1
cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVz
dEFjdGl2ZURPTU9iamVjdDo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggNDZkNGE3ZDk2MDhkZDhhZTRhZTdjMTMyZmQw
NzVjNDgzMGIzZTFlMi4uNjRjYzNhNjRlYTVmNTEyNDhiMThhYzk0NjU4MGY2YzQ2ZGIyYzg3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0xNDksOSArMTQ5LDcg
QEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRl
V3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXMKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAg
ICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0
ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIs
IGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBw
ZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5k
ZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDogV3JhcHBlckNv
bmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQg
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBkNzM4ZTk1ZGFlMGNmYWVkMDQyZDBm
NmQ0NWY5Y2MyNDk4MmI1MGM1Li4wOGZlMjVlZDNmOGZiM2YzYTllNjNmZDI2NDc2OWM4YzQ1ZWNl
MGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC0xMDMsNyArMTAz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNvbnN0
cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8VGVzdEV2ZW50Q29uc3Ry
dWN0b3I+IGV2ZW50ID0gVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZSh0eXBlLCBldmVudElu
aXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTgxLDkgKzE4MSw3IEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcihQ
YXNzUmVmUHRyPFRlc3RFdmVuCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRl
KTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxl
Lk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0
aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1cmF0
aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdEV2
ZW50Q29uc3RydWN0b3I6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDAyODViN2MyNzczMzcxMmVhYTYxZTQ3Yzc1MTY3ZDUyNDEyM2IwNDQu
Ljc3ZjNiMzkzODY5NDdiMzYxM2RmNjI3Mjc2YmU3OWFjOGJjNTJiNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMjE1LDkgKzIxNSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0RXZlbnRUYXJnZXQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZlbnRUYXJn
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0Rl
cGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdEV2ZW50VGFyZ2V0OjpkZXJlZk9i
amVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IGZiNTQ2ZThhYzJl
MTQwMTA2MjgwYzRlMzBmMWI2YzRiNzQxMGIzZTQuLmYyMWJmZTQxZjA1ZjQ2YjNlYmJmNDRiY2Q3
MjJhMjVlNTE1ZjY0MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC0xNDAsOSArMTQwLDcg
QEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFeGNlcHRpb246OmNyZWF0ZVdyYXBwZXIo
UGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPgogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRl
KTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwg
aXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBl
ckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRl
bnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBW
OFRlc3RFeGNlcHRpb246OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAKaW5kZXggNjRhMTdhZmM1NjNhYTkwODNiZTcyZWRiYWUyOWExOTFhOGU1ZjI0Ni4uMzc0
YjkxNjQxZWI1NWE1NjAyMzk5OWZjODRmNjU0ZjdlZDA3NjFiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0SW50
ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgaWYg
KGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiAgIGZhaWw6
CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAt
MzcwLDkgKzM3MCw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0SW50ZXJmYWNlOjpj
cmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4KICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhh
bmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0g
ICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0
ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50
IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIHZvaWQgVjhUZXN0SW50ZXJmYWNlOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDBiYjBh
OTk5ZjA2MzJkMzY4ZDY4MDVhNGQ2MTNiMmRlMjdlYjBiMC4uNmFjZWZjZjkyZTYzMGIxYWY5ZDE1
MTVmMjcwOTliNmE1YWNiYTRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcApAQCAtMTQ5LDkgKzE0OSw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRl
CiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0Rl
cGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgp
OworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZp
Z3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmNwcAppbmRleCBkMDNjZjQ1ZGZkOTQwNWE4MmJkNTc4MmQxMjNkMzVhNzdiMmUxZjQ3Li42
MGUwZTg2MTAwNTBmMmYxMTZlMjExZDI1ZDZkNTBmYmI0ZGNhMmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29u
c3Qgdjg6CiAgICAgaWYgKGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmVjhUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJl
bGVhc2UoKSwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6aW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwog
ICAgIHJldHVybiB3cmFwcGVyOwogICBmYWlsOgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24o
ZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE5MCw5ICsxOTAsNyBAQCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxUZXN0TmFtZQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250
ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAg
aWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5k
ZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVy
KGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdy
YXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5k
ZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBWOFRlc3ROYW1lZENvbnN0
cnVjdG9yOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZDNjNmI0
MGEzMDU5Y2RiMWFjNWQyOTdlZDkxZGYzZWY5Yjk4ZmE1OS4uNmQ1Yjg1ZjZkZTRiODI0ODNjNWM0
MWFkNTY0ZWZmYWRhZmE3NDU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtNzUsNyArNzUsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0Tm9kZT4gaW1wbCA9IFRlc3ROb2Rl
OjpjcmVhdGUoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
ZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0xNTMsOSArMTUzLDcgQEAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQ
dHI8VGVzdE5vZGU+IGltcGwsIHY4OjoKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBp
bnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7
Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlz
b2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJI
YW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50
TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDogV3JhcHBlckNvbmZp
Z3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhU
ZXN0Tm9kZTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCBjMTExMDg0
MGZhZDA4MWQyZjFkMDY2MWYwNWVlNTJkZDUwMzczMTFhLi5iOTMyOGExYzY3YmRhMzZiODRlMDQ2
ZjcxOWRjZTAzZjJiYzhjNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjA5MCw3ICsyMDkwLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0T2JqPiBpbXBsID0gVGVzdE9iajo6
Y3JlYXRlKHRlc3RDYWxsYmFjayk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmln
dXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjI5NSw5
ICsyMjk1LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RPYmo6OmNyZWF0ZVdyYXBw
ZXIoUGFzc1JlZlB0cjxUZXN0T2JqPiBpbXBsLCB2ODo6SGEKICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQo
KSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRs
ZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8s
IHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAg
ICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwg
aGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDog
V3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIHZvaWQgVjhUZXN0T2JqOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXggNTAzNjQzOGQyYWY4ZGUz
ZTlkZWIzNjBiZjk1MmY2NzliYTU2YmJiYi4uYWI5ZDgyMGQ1ZjVjNTE4MTU5ZTc0NzAxMDgwNjRj
NzgxYzIxNDg5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2soY29uc3QgdgogICAgIFJlZlB0
cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAg
LTg4LDcgKzg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMkNhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xh
dGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBs
LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTAw
LDcgKzEwMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2CiAgICAgUmVmUHRyPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNy
ZWF0ZShibG9iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhv
bGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBW
OERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAm
aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
ZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0xMTIsNyArMTEyLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0
cnVjdG9yNENhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlKHN0cmluZyk7
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAot
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBw
ZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsK
ICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjA0LDkgKzIwNCw3IEBAIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcihQ
YXNzUmVmUHRyPFRlCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBlckNv
bnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsKLSAg
ICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJ
bmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1lID8g
V3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJ
bmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNTZi
ZWQ5ODA1NjAyZDU2ZWM5YzUxMzdjYmRiNTRiODg0MWMwYjNkYi4uODgwYjU1MWE5ZWQxNDBlODBl
MTFhNzA1ZWQ5ZDAyZmJjYWM0ODc4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKAogICAgIFJlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlPiBpbXBsID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Y3Jl
YXRlKGhlbGxvLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJMaXN0KTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5H
ZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogCkBAIC0zMjIsOSArMzIyLDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZVdyYXBwZXIoUGFz
c1IKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3Bl
cnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFz
RGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50
KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAm
aW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6RGVwZW5kZW50IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50
KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCBjY2I5YjhhMGM2ZmQwZDE1ODc4MmY5
NDU0MWJiNTEzZDJhYTIzZmQ4Li4xMmE1MmZlNDA2ZWFhM2Q5YTAzNjQyOGM3NGFkNmE3OGM0ZTBi
YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAg
LTgwLDI0ICs4MCw0IEBAIHZvaWQgRE9NRGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8uYWRkTWVtYmVy
KG1fd3JhcHBlck1hcCwgIndyYXBwZXJNYXAiKTsKIH0KIAotdm9pZCBET01EYXRhU3RvcmU6Ondl
YWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVl
PiB2YWx1ZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBTY3JpcHRXcmFwcGFibGUqIGtleSA9IHN0
YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KGNvbnRleHQpOwotICAgIEFTU0VSVCh2YWx1ZS0+
SXNPYmplY3QoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLSAgICBBU1NFUlQoa2V5LT53
cmFwcGVyKCkgPT0gd3JhcHBlcik7Ci0gICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJl
IGVxdWFsIHRvIHxrZXl8LCBlLmcuLCBpZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1v
c3QgYmFzZSBjbGFzcy4KLSAgICB2b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKLSAg
ICBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKLSAg
ICBBU1NFUlQoaW5mby0+ZGVyZWZPYmplY3RGdW5jdGlvbik7Ci0KLSAgICBrZXktPmNsZWFyV3Jh
cHBlcigpOwotICAgIHZhbHVlLkRpc3Bvc2UoKTsKLSAgICB2YWx1ZS5DbGVhcigpOwotICAgIC8v
IEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5Y2xlIHRpbWVzIGNhbiBi
ZSBjb25zdW1lZAotICAgIC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdoaWNoIGNhdXNlcyBOb2Rl
IGRlc3RydWN0aW9ucy4gV2Ugc2hvdWxkCi0gICAgLy8gbWFrZSBOb2RlIGRlc3RydWN0aW9ucyBp
bmNyZW1lbnRhbC4KLSAgICBpbmZvLT5kZXJlZk9iamVjdChvYmplY3QpOwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5o
CmluZGV4IGQ3MmQ0YTUxMDUzNzYyZGQyNzIzMTU1NTFmMjkzMjBmMjUyOGFjNDMuLjAyNjZlZDky
OWRlODc1OWI3NWY1NTgwNTU4YTg0MTlmZmQyNTMxOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC04OSwxNSArODksMTUgQEAgcHVibGljOgogICAgIH0K
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlcihU
KiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCogb2JqZWN0LCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFw
cGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmIChtYWlu
V29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlzTWFpbldvcmxkT2JqZWN0
KG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIURPTVdyYXBwZXJXb3JsZDo6aXNv
bGF0ZWRXb3JsZHNFeGlzdCgpKSkgewotICAgICAgICAgICAgICAgIHNldFdyYXBwZXJJbk9iamVj
dChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgICAgICAgICAgICAgIHNldFdyYXBwZXJJ
bk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3VyYXRpb24pOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1
cm4gY3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAg
ICAgIHJldHVybiBjdXJyZW50KGlzb2xhdGUpLT5zZXQob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRl
LCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpAQCAt
MTA4LDIxICsxMDgsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93cmFwcGVyTWFwLmdl
dChvYmplY3QpOwogICAgIH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCitwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgaW5saW5lIHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgaW5saW5lIHZvaWQgc2V0KFQqIG9i
amVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCiAgICAgewogICAg
ICAgICBBU1NFUlQoISFvYmplY3QpOwogICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNFbXB0eSgp
KTsKICAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZEluT2JqZWN0KG9iamVjdCkg
JiYgbV90eXBlID09IE1haW5Xb3JsZCkgewotICAgICAgICAgICAgc2V0V3JhcHBlckluT2JqZWN0
KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgICAgICAgICBzZXRXcmFwcGVySW5PYmpl
Y3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3dyYXBwZXJNYXAuc2V0KG9iamVjdCwgd3Jh
cHBlcik7CisgICAgICAgIG1fd3JhcHBlck1hcC5zZXQob2JqZWN0LCB3cmFwcGVyLCBjb25maWd1
cmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKLQotcHJpdmF0ZToKICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBtYWlu
V29ybGRTdG9yZSgpOwogCiAgICAgc3RhdGljIGJvb2wgbWFpbldvcmxkV3JhcHBlcklzU3RvcmVk
SW5PYmplY3Qodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNTQsMTkgKzE1NCwxNSBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0Piwgdjg6Oklzb2xhdGUqKQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJJbk9iamVj
dCh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqLCBjb25zdCBXcmFw
cGVyQ29uZmlndXJhdGlvbiYpCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KFNjcmlwdFdyYXBwYWJs
ZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5PYmplY3QoU2NyaXB0V3Jh
cHBhYmxlKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAg
ICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKLSAgICAgICAgd3JhcHBlci5NYWtlV2Vh
ayhpc29sYXRlLCBvYmplY3QsIHdlYWtDYWxsYmFjayk7CisgICAgICAgIG9iamVjdC0+c2V0V3Jh
cHBlcih3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCB3ZWFrQ2FsbGJhY2sodjg6Oklzb2xhdGUqLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+LCB2b2lkKiBjb250ZXh0KTsKLQogICAgIFR5cGUgbV90eXBlOwogICAgIERPTVdyYXBwZXJN
YXA8dm9pZD4gbV93cmFwcGVyTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TVdyYXBwZXJNYXAuaAppbmRleCAwMGMwM2UwOTc0MzcwYzY4NTEyM2ViNGU1ZTU2OGYzYzg3ODRj
OTk0Li5hZjBmODk2NzI3NmRlM2RiZDBkNDJjMTQxYmU5MTAwZDAxOGMyZmI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCkBAIC01MCwxNyArNTAsMTkgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBn
ZXQoS2V5VHlwZSoga2V5KQorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KEtleVR5cGUq
IGtleSkKICAgICB7CiAgICAgICAgIHJldHVybiBtX21hcC5nZXQoa2V5KTsKICAgICB9CiAKLSAg
ICB2b2lkIHNldChLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIpCisgICAgdm9pZCBzZXQoS2V5VHlwZSoga2V5LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCFtX21hcC5jb250YWlucyhrZXkpKTsKICAgICAgICAgQVNTRVJUKHN0
YXRpY19jYXN0PEtleVR5cGUqPih0b05hdGl2ZSh3cmFwcGVyKSkgPT0ga2V5KTsKLSAgICAgICAg
d3JhcHBlci5NYWtlV2VhayhtX2lzb2xhdGUsIHRoaXMsIG1fY2FsbGJhY2spOwotICAgICAgICBt
X21hcC5zZXQoa2V5LCB3cmFwcGVyKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gcGVyc2lzdGVudCA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcobV9pc29sYXRl
LCB3cmFwcGVyKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5jb25maWd1cmVXcmFwcGVyKHBlcnNp
c3RlbnQsIG1faXNvbGF0ZSk7CisgICAgICAgIHBlcnNpc3RlbnQuTWFrZVdlYWsobV9pc29sYXRl
LCB0aGlzLCBtX2NhbGxiYWNrKTsKKyAgICAgICAgbV9tYXAuc2V0KGtleSwgcGVyc2lzdGVudCk7
CiAgICAgfQogCiAgICAgdm9pZCBjbGVhcigpCkBAIC04MSwxMiArODMsMTUgQEAgcHVibGljOgog
ICAgICAgICBpbmZvLmlnbm9yZU1lbWJlcihtX2NhbGxiYWNrKTsKICAgICB9CiAKLSAgICB2b2lk
IHJlbW92ZShLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIp
CisgICAgdm9pZCByZW1vdmVBbmREaXNwb3NlKEtleVR5cGUqIGtleSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgeworICAgICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKCp2YWx1ZSk7CiAgICAgICAgIHR5cGVuYW1l
IE1hcFR5cGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBBU1NFUlQo
aXQgIT0gbV9tYXAuZW5kKCkpOwogICAgICAgICBBU1NFUlQoaXQtPnZhbHVlID09IHdyYXBwZXIp
OwogICAgICAgICBtX21hcC5yZW1vdmUoaXQpOworICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoaXNv
bGF0ZSk7CisgICAgICAgIHZhbHVlLkNsZWFyKCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTgs
MTAgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgIFdyYXBwZXJUeXBlSW5mbyogdHlwZSA9IHRv
V3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpOwogICAgICAgICBBU1NFUlQodHlwZS0+ZGVyZWZPYmpl
Y3RGdW5jdGlvbik7CiAgICAgICAgIEtleVR5cGUqIGtleSA9IHN0YXRpY19jYXN0PEtleVR5cGUq
Pih0b05hdGl2ZSh3cmFwcGVyKSk7Ci0KLSAgICAgICAgbWFwLT5yZW1vdmUoa2V5LCB3cmFwcGVy
KTsKLSAgICAgICAgd3JhcHBlci5EaXNwb3NlKCk7Ci0gICAgICAgIHdyYXBwZXIuQ2xlYXIoKTsK
KyAgICAgICAgbWFwLT5yZW1vdmVBbmREaXNwb3NlKGtleSwgd3JhcHBlciwgaXNvbGF0ZSk7CiAg
ICAgICAgIHR5cGUtPmRlcmVmT2JqZWN0KGtleSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRXcmFwcGFibGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oCmluZGV4IDY1NTAwMTc0NWFlZmZjYzJlM2Zi
NTdhYTAxYTZmYmQ0ODMzYzczNGUuLjE2YmM3OGE5NDRjNzEyMjgwNTk1M2MwOGMwZWNiOTZiMGQw
ZWVmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBw
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5o
CkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIFNjcmlwdFdyYXBwYWJsZV9oCiAKICNpbmNsdWRl
ICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiV3JhcHBlclR5cGVJ
bmZvLmgiCiAjaW5jbHVkZSA8djguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMzcg
KzQxLDM1IEBAIGNsYXNzIFNjcmlwdFdyYXBwYWJsZSB7CiBwdWJsaWM6CiAgICAgU2NyaXB0V3Jh
cHBhYmxlKCkgeyB9CiAKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKCkg
Y29uc3QKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIoKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KG1hc2tPclVubWFza1Bv
aW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PihtYXNrT3JVbm1hc2tQb2ludGVyKCptX21hc2tlZFdyYXBwZXIpKTsKICAgICB9CiAK
LSAgICB2b2lkIHNldFdyYXBwZXIodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikK
KyAgICB2b2lkIHNldFdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgewotICAgICAgICBtX21hc2tlZFdyYXBwZXIgPSBtYXNrT3JVbm1hc2tQb2ludGVy
KCp3cmFwcGVyKTsKKyAgICAgICAgQVNTRVJUKG1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwor
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBwZXJzaXN0ZW50ID0gdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKKyAgICAgICAgY29uZmlndXJhdGlvbi5j
b25maWd1cmVXcmFwcGVyKHBlcnNpc3RlbnQsIGlzb2xhdGUpOworICAgICAgICBwZXJzaXN0ZW50
Lk1ha2VXZWFrKGlzb2xhdGUsIHRoaXMsIHdlYWtDYWxsYmFjayk7CisgICAgICAgIG1fbWFza2Vk
V3JhcHBlciA9IG1hc2tPclVubWFza1BvaW50ZXIoKnBlcnNpc3RlbnQpOwogICAgIH0KIAotICAg
IHZvaWQgY2xlYXJXcmFwcGVyKCkKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQo
IW1fbWFza2VkV3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICBtX21hc2tlZFdyYXBwZXIuQ2xl
YXIoKTsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOworICAgICAgICBpbmZvLmlnbm9yZU1lbWJlciht
X21hc2tlZFdyYXBwZXIpOwogICAgIH0KIAotICAgIHZvaWQgZGlzcG9zZVdyYXBwZXIoKQorcHJp
dmF0ZToKKyAgICBpbmxpbmUgdm9pZCBkaXNwb3NlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6
VmFsdWU+IHZhbHVlKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX21hc2tlZFdyYXBwZXIuSXNF
bXB0eSgpKTsKLSAgICAgICAgbV9tYXNrZWRXcmFwcGVyID0gd3JhcHBlcigpOwotICAgICAgICBt
X21hc2tlZFdyYXBwZXIuRGlzcG9zZSgpOworICAgICAgICBBU1NFUlQoKnZhbHVlID09IG1hc2tP
clVubWFza1BvaW50ZXIoKm1fbWFza2VkV3JhcHBlcikpOworICAgICAgICB2YWx1ZS5EaXNwb3Nl
KCk7CiAgICAgICAgIG1fbWFza2VkV3JhcHBlci5DbGVhcigpOwogICAgIH0KIAotICAgIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKLSAgICB7Ci0gICAgICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKLSAgICAgICAgaW5mby5pZ25vcmVNZW1i
ZXIobV9tYXNrZWRXcmFwcGVyKTsKLSAgICB9Ci0KLXByaXZhdGU6CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gbV9tYXNrZWRXcmFwcGVyOwogCiAgICAgc3RhdGljIGlubGluZSB2ODo6
T2JqZWN0KiBtYXNrT3JVbm1hc2tQb2ludGVyKGNvbnN0IHY4OjpPYmplY3QqIG9iamVjdCkKQEAg
LTc5LDYgKzc4LDI1IEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnN0IHVpbnRwdHJfdCByYW5kb21N
YXNrID0gfihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oJldlYkNvcmVNZW1vcnlUeXBlczo6
RE9NKSA+PiAxMyk7IC8vIEVudHJvcHkgdmlhIEFTTFIuCiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHY4OjpPYmplY3QqPigob2JqZWN0UG9pbnRlciBeIHJhbmRvbU1hc2spICYgKCFv
YmplY3RQb2ludGVyIC0gMSkpOyAvLyBQcmVzZXJ2ZSBudWxsIHdpdGhvdXQgYnJhbmNoaW5nLgog
ICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKKyAgICB7
CisgICAgICAgIFNjcmlwdFdyYXBwYWJsZSoga2V5ID0gc3RhdGljX2Nhc3Q8U2NyaXB0V3JhcHBh
YmxlKj4oY29udGV4dCk7CisgICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CisgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgICAgIEFTU0VSVChrZXktPndyYXBwZXIoKSA9
PSB3cmFwcGVyKTsKKyAgICAgICAga2V5LT5kaXNwb3NlV3JhcHBlcih2YWx1ZSk7CisKKyAgICAg
ICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJlIGVxdWFsIHRvIHxrZXl8LCBlLmcuLCBp
ZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1vc3QgYmFzZSBjbGFzcy4KKyAgICAgICAg
dm9pZCogb2JqZWN0ID0gdG9OYXRpdmUod3JhcHBlcik7CisgICAgICAgIFdyYXBwZXJUeXBlSW5m
byogaW5mbyA9IHRvV3JhcHBlclR5cGVJbmZvKHdyYXBwZXIpOworICAgICAgICBBU1NFUlQoaW5m
by0+ZGVyZWZPYmplY3RGdW5jdGlvbik7CisKKyAgICAgICAgLy8gRklYTUU6IEkgbm90aWNlZCB0
aGF0IDUwJX4gb2YgbWlub3IgR0MgY3ljbGUgdGltZXMgY2FuIGJlIGNvbnN1bWVkCisgICAgICAg
IC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdoaWNoIGNhdXNlcyBOb2RlIGRlc3RydWN0aW9ucy4g
V2Ugc2hvdWxkCisgICAgICAgIC8vIG1ha2UgTm9kZSBkZXN0cnVjdGlvbnMgaW5jcmVtZW50YWwu
CisgICAgICAgIGluZm8tPmRlcmVmT2JqZWN0KG9iamVjdCk7CisgICAgfQogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdp
bmRvd1NoZWxsLmNwcAppbmRleCAzNWM2ZDZhNDY4ZmUxMDYxM2MwZjU4YWU0MTQ1ZTJiMTQzMWNm
MmMxLi45NTQ2OTA0MThkMGY1N2I1ZjdjN2Q4YTJiY2U4YTIyODZkM2UzYTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMzM1LDcg
KzMzNSw3IEBAIGJvb2wgVjhET01XaW5kb3dTaGVsbDo6aW5zdGFsbERPTVdpbmRvdygpCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbm5lckdsb2JhbE9iamVjdCA9IHRvSW5uZXJHbG9iYWxP
YmplY3QobV9jb250ZXh0LmdldCgpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8o
aW5uZXJHbG9iYWxPYmplY3QsICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93KTsKICAgICBpbm5l
ckdsb2JhbE9iamVjdC0+U2V0UHJvdG90eXBlKHdpbmRvd1dyYXBwZXIpOwotICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxET01XaW5kb3c+KHdp
bmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93V3JhcHBlciwgbV9pc29sYXRlKTsKKyAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8RE9N
V2luZG93Pih3aW5kb3cpLCAmVjhET01XaW5kb3c6OmluZm8sIHdpbmRvd1dyYXBwZXIsIG1faXNv
bGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggZDhm
ZjI4NjFmZDcwNWYyYzY2Y2Q0ZmYwMGNlY2Q3N2ExYzc3MDhiMi4uYTkxY2JiNGMzMDI0MTFmYTYy
YzFlMmQxYzhhMDA0MzFiN2Y4ZjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmgKQEAgLTU2LDExICs1Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCBXcmFwcGVyVHlwZUluZm8qLCB2b2lkKiwgdjg6
Oklzb2xhdGUqKTsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0
aWMgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKFBhc3NSZWZQdHI8VD4sIFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKik7CisgICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBhc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+LCBXcmFw
cGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSosIFdyYXBw
ZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSk7CiAgICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBz
ZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyosIHZv
aWQqKTsKICAgICAgICAgc3RhdGljIGlubGluZSB2b2lkIGNsZWFyTmF0aXZlSW5mbyh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBXcmFwcGVyVHlwZUluZm8qKTsKLSAgICAgICAgc3RhdGljIGlubGlu
ZSB2b2lkIHNldFdyYXBwZXJDbGFzcyh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4p
OwotICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgc2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Pik7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNET01XcmFw
cGVyKHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAgICAgICAgIHN0YXRpYyBib29sIGlzV3JhcHBl
ck9mVHlwZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIFdyYXBwZXJUeXBlSW5mbyopOwpAQCAtNjks
MTYgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCBzZXRO
YW1lZEhpZGRlblJlZmVyZW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHBhcmVudCwgY29uc3Qg
Y2hhciogbmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoaWxkKTsKICAgICB9OwogCi0gICAg
aW5saW5lIHZvaWQgVjhET01XcmFwcGVyOjpzZXRXcmFwcGVyQ2xhc3Modm9pZCosIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCi0gICAgewotICAgICAgICB3cmFwcGVyLlNldFdy
YXBwZXJDbGFzc0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7Ci0gICAgfQotCi0gICAgaW5saW5lIHZv
aWQgVjhET01XcmFwcGVyOjpzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXIpCi0gICAgewotICAgICAgICB3cmFwcGVyLlNldFdyYXBwZXJDbGFz
c0lkKHY4RE9NTm9kZUNsYXNzSWQpOwotICAgIH0KLQogICAgIGlubGluZSB2b2lkIFY4RE9NV3Jh
cHBlcjo6c2V0TmF0aXZlSW5mbyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIFdyYXBw
ZXJUeXBlSW5mbyogdHlwZSwgdm9pZCogb2JqZWN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKHdy
YXBwZXItPkludGVybmFsRmllbGRDb3VudCgpID49IDIpOwpAQCAtOTcsMTQgKzg1LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAg
IGlubGluZSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OmFzc29jaWF0
ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBXcmFwcGVyVHlwZUluZm8q
IHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFQ+IG9iamVjdCwgV3JhcHBlclR5cGVJ
bmZvKiB0eXBlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRpbWUpCiAgICAgewog
ICAgICAgICBzZXROYXRpdmVJbmZvKHdyYXBwZXIsIHR5cGUsIG9iamVjdC5nZXQoKSk7Ci0gICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwotICAgICAgICBBU1NFUlQobWF5YmVET01X
cmFwcGVyKHdyYXBwZXJIYW5kbGUpKTsKLSAgICAgICAgc2V0V3JhcHBlckNsYXNzKG9iamVjdC5n
ZXQoKSwgd3JhcHBlckhhbmRsZSk7Ci0gICAgICAgIERPTURhdGFTdG9yZTo6c2V0V3JhcHBlcihv
YmplY3QubGVha1JlZigpLCB3cmFwcGVySGFuZGxlLCBpc29sYXRlKTsKLSAgICAgICAgcmV0dXJu
IHdyYXBwZXJIYW5kbGU7CisgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBwZXIod3JhcHBlcikp
OworICAgICAgICBXcmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFw
cGVyQ29uZmlndXJhdGlvbihvYmplY3QuZ2V0KCksIGxpZmV0aW1lKTsKKyAgICAgICAgRE9NRGF0
YVN0b3JlOjpzZXRXcmFwcGVyKG9iamVjdC5sZWFrUmVmKCksIHdyYXBwZXIsIGlzb2xhdGUsIGNv
bmZpZ3VyYXRpb24pOworICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAKaW5kZXggNDViZWEyZWI1MWE4Mzk0
YjkxMjU4ZTAyNTQ2OTRmN2JlYWZjMDk2NC4uNGM5ZGI4NTA4Y2QwYTY2ZDZiZGY0NzBkY2I2MzFk
Njk0ZTRmNDhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHAK
QEAgLTQwMiw5ICs0MDIsNyBAQCBzdGF0aWMgdm9pZCB3ZWFrTlBPYmplY3RDYWxsYmFjayh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPgogCiAgICAgLy8gTXVz
dCByZW1vdmUgZnJvbSBvdXIgbWFwIGJlZm9yZSBjYWxsaW5nIF9OUE5fUmVsZWFzZU9iamVjdCgp
LiBfTlBOX1JlbGVhc2VPYmplY3QgY2FuCiAgICAgLy8gY2FsbCBmb3JnZXRWOE9iamVjdEZvck5Q
T2JqZWN0LCB3aGljaCB1c2VzIHRoZSB0YWJsZSBhcyB3ZWxsLgotICAgIHN0YXRpY05QT2JqZWN0
TWFwKCkucmVtb3ZlKG5wT2JqZWN0LCB3cmFwcGVyKTsKLSAgICB3cmFwcGVyLkRpc3Bvc2UoKTsK
LSAgICB3cmFwcGVyLkNsZWFyKCk7CisgICAgc3RhdGljTlBPYmplY3RNYXAoKS5yZW1vdmVBbmRE
aXNwb3NlKG5wT2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlKTsKIAogICAgIGlmIChfTlBOX0lzQWxp
dmUobnBPYmplY3QpKQogICAgICAgICBfTlBOX1JlbGVhc2VPYmplY3QobnBPYmplY3QpOwpAQCAt
NDQ4LDI3ICs0NDYsMjQgQEAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVY4T2JqZWN0Rm9y
TlBPYmplY3QoTlBPYmplY3QqIG9iamVjdCwgTlBPYmplY3QqIHJvb3QKICAgICAgICAgcmV0dXJu
IHZhbHVlOwogCiAgICAgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKHZhbHVlLCBucE9iamVj
dFR5cGVJbmZvKCksIG9iamVjdCk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3Jh
cHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcodmFsdWUpOwotICAg
IFY4RE9NV3JhcHBlcjo6c2V0V3JhcHBlckNsYXNzKG9iamVjdCwgd3JhcHBlckhhbmRsZSk7CiAK
ICAgICAvLyBLSlMgcmV0YWlucyB0aGUgb2JqZWN0IGFzIHBhcnQgb2YgaXRzIHdyYXBwZXIgKHNl
ZSBCaW5kaW5nczo6Q0luc3RhbmNlKS4KICAgICBfTlBOX1JldGFpbk9iamVjdChvYmplY3QpOwog
ICAgIF9OUE5fUmVnaXN0ZXJPYmplY3Qob2JqZWN0LCByb290KTsKIAotICAgIHN0YXRpY05QT2Jq
ZWN0TWFwKCkuc2V0KG9iamVjdCwgd3JhcHBlckhhbmRsZSk7Ci0gICAgQVNTRVJUKFY4RE9NV3Jh
cHBlcjo6bWF5YmVET01XcmFwcGVyKHdyYXBwZXJIYW5kbGUpKTsKKyAgICBXcmFwcGVyQ29uZmln
dXJhdGlvbiBjb25maWd1cmF0aW9uID0gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbihvYmplY3Qs
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOworICAgIHN0YXRpY05QT2JqZWN0TWFw
KCkuc2V0KG9iamVjdCwgdmFsdWUsIGNvbmZpZ3VyYXRpb24pOworICAgIEFTU0VSVChWOERPTVdy
YXBwZXI6Om1heWJlRE9NV3JhcHBlcih2YWx1ZSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIAog
dm9pZCBmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KE5QT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHN0YXRpY05QT2JqZWN0TWFwKCku
Z2V0KG9iamVjdCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gc3RhdGlj
TlBPYmplY3RNYXAoKS5nZXQob2JqZWN0KTsKICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKSB7
CiAgICAgICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICAgICAgVjhET01XcmFwcGVyOjpj
bGVhck5hdGl2ZUluZm8od3JhcHBlciwgbnBPYmplY3RUeXBlSW5mbygpKTsKLSAgICAgICAgc3Rh
dGljTlBPYmplY3RNYXAoKS5yZW1vdmUob2JqZWN0LCB3cmFwcGVyKTsKLSAgICAgICAgd3JhcHBl
ci5EaXNwb3NlKCk7Ci0gICAgICAgIHdyYXBwZXIuQ2xlYXIoKTsKKyAgICAgICAgc3RhdGljTlBP
YmplY3RNYXAoKS5yZW1vdmVBbmREaXNwb3NlKG9iamVjdCwgd3JhcHBlciwgdjg6Oklzb2xhdGU6
OkdldEN1cnJlbnQoKSk7CiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChvYmplY3QpOwogICAg
IH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0
Q29udHJvbGxlci5jcHAKaW5kZXggMmM5ZWRlODY2ZWZlNTI2NzczMThkMTJlNTk5NTM0YTFjNzIz
YTNiZS4uYmM0NjA5MzgyNzlmZTRkZjMzYTJhODE1MDBjNjhjMWE2MzA1Nzk5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBib29sIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRp
YWxpemVDb250ZXh0SWZOZWVkZWQoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPFdv
cmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRUeXBlLCBqc1dvcmtlckNvbnRl
eHQsIG1faXNvbGF0ZSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihQYXNzUmVmUHRyPFdvcmtlckNvbnRleHQ+KG1fd29ya2VyQ29udGV4dCksIGNvbnRleHRU
eXBlLCBqc1dvcmtlckNvbnRleHQsIG1faXNvbGF0ZSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRl
cGVuZGVudCk7CiAKICAgICAvLyBJbnNlcnQgdGhlIG9iamVjdCBpbnN0YW5jZSBhcyB0aGUgcHJv
dG90eXBlIG9mIHRoZSBzaGFkb3cgb2JqZWN0LgogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Z2xvYmFsT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChtX2NvbnRleHQtPkds
b2JhbCgpLT5HZXRQcm90b3R5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dy
YXBwZXJUeXBlSW5mby5oCmluZGV4IDhiZDZlMjkwYWViMWNmZWVkNTUyYzQyZDM4NjFiM2ViNDk0
N2IxNWIuLmJjY2E1NmFjMGRmOTI4OGMxOTE2ZDc4ZTBkZDNlZGZiOTE2YjkzYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBBY3RpdmVET01PYmplY3Q7CiAgICAg
Y2xhc3MgRE9NRGF0YVN0b3JlOwogICAgIGNsYXNzIEV2ZW50VGFyZ2V0OworICAgIGNsYXNzIE5v
ZGU7CiAKICAgICBzdGF0aWMgY29uc3QgaW50IHY4RE9NV3JhcHBlclR5cGVJbmRleCA9IDA7CiAg
ICAgc3RhdGljIGNvbnN0IGludCB2OERPTVdyYXBwZXJPYmplY3RJbmRleCA9IDE7CkBAIC0xNDEs
NiArMTQyLDM0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdyYXBwZXJUeXBlSW5mbyo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJu
YWxGaWVsZCh2OERPTVdyYXBwZXJUeXBlSW5kZXgpKTsKICAgICB9CiAKKyAgICBzdHJ1Y3QgV3Jh
cHBlckNvbmZpZ3VyYXRpb24geworCisgICAgICAgIGVudW0gTGlmZXRpbWUgeworICAgICAgICAg
ICAgRGVwZW5kZW50LCBJbmRlcGVuZGVudAorICAgICAgICB9OworCisgICAgICAgIHZvaWQgY29u
ZmlndXJlV3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgd3JhcHBlci5TZXRX
cmFwcGVyQ2xhc3NJZChjbGFzc0lkKTsKKyAgICAgICAgICAgIGlmIChsaWZldGltZSA9PSBJbmRl
cGVuZGVudCkKKyAgICAgICAgICAgICAgICB3cmFwcGVyLk1hcmtJbmRlcGVuZGVudChpc29sYXRl
KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IHVpbnQxNl90IGNsYXNzSWQ7CisgICAgICAg
IGNvbnN0IExpZmV0aW1lIGxpZmV0aW1lOworICAgIH07CisKKyAgICBpbmxpbmUgV3JhcHBlckNv
bmZpZ3VyYXRpb24gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbih2b2lkKiwgV3JhcHBlckNvbmZp
Z3VyYXRpb246OkxpZmV0aW1lIGxpZmV0aW1lKQorICAgIHsKKyAgICAgICAgV3JhcHBlckNvbmZp
Z3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHt2OERPTU9iamVjdENsYXNzSWQsIGxpZmV0aW1lfTsK
KyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfQorCisgICAgaW5saW5lIFdyYXBw
ZXJDb25maWd1cmF0aW9uIGJ1aWxkV3JhcHBlckNvbmZpZ3VyYXRpb24oTm9kZSosIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGltZSkKKyAgICB7CisgICAgICAgIFdyYXBwZXJD
b25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSB7djhET01Ob2RlQ2xhc3NJZCwgbGlmZXRpbWV9
OworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICB9CiB9CiAKICNlbmRpZiAvLyBX
cmFwcGVyVHlwZUluZm9faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCmluZGV4IGQ5NzJjMzFlN2Y4ZDlmYmU5
NjVhN2IxZTg2YmU2ZmI1OTJmMmMyZmYuLjIyNzE3MmYyZTI4MTY1Yjg1NzhhMDA5NTA2MWMxN2E2
Y2MyOGRmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4QXJyYXlCdWZmZXI6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW4KICAgICB2ODo6Vjg6OkFkanVzdEFtb3VudE9mRXh0ZXJuYWxBbGxvY2F0
ZWRNZW1vcnkoYnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIC8vIFRyYW5zZm9ybSB0aGUgaG9s
ZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGFycmF5LgogICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoYnVmZmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaAppbmRleCA4MzIxY2RhNDVhMzg2YjFjNmMw
YjQ5OTM2MmMwODhmNDc1Mjg1NWVmLi5lYWI2ODRjMjVmOTk3NzAwYjliMDc0ZjJhZWJkNDljYmU5
ZTJmNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
cnJheUJ1ZmZlclZpZXdDdXN0b20uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaApAQCAtNTUsOCArNTUsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd3JhcEFycmF5QnVmZmVyVmlldyhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzLCBXcmFwcGVyVHlwZQogICAgIGlmIChoYXNJbmRleGVyKQogICAgICAgICBhcmdzLkhvbGRl
cigpLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoYXJyYXkuZ2V0KCkt
PmJhc2VBZGRyZXNzKCksIGFycmF5VHlwZSwgYXJyYXkuZ2V0KCktPmxlbmd0aCgpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29j
aWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCkpOwotICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNl
KCksIHR5cGUsIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0yMjUsOCArMjI0
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdFdlYkdMQXJyYXkoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncywgV3JhcHBlclR5cGUKICAgICB9CiAKICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGFycmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOwotICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhcnJheS5yZWxlYXNlKCksIHR5cGUsIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRl
bnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcAppbmRleCA5
OGQyMjVlYjBlYzMwY2I5NTJiMzNkOWNmZDM1MjYxZWUwNzQ3ZTIwLi5iMTMwNDk2NTVkYjMxYzNm
NTFmNWZhYTRlYzY1Mzc5Y2VlMmJiMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKQEAgLTczLDcg
KzczLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWUKICAgICAKICAgICAvLyBUcmFuc2Zvcm0g
dGhlIGhvbGRlciBpbnRvIGEgd3JhcHBlciBvYmplY3QgZm9yIHRoZSBhdWRpbyBjb250ZXh0Lgog
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXVkaW9Db250ZXh0LnJlbGVhc2UoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
RGVwZW5kZW50KTsKICAgICAKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNw
cAppbmRleCAwNTQ1Mzg0NzZjYjc2Yjc1NjE4NTRlYWE5MTE2Mjk2NTEzYjUyYzgzLi4zOWEzZDEx
NWQ0YWQwYTIwNzE0ZDdiY2JjMzI4MTc3YmFmZjRjMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgUmVmUHRyPERPTUZv
cm1EYXRhPiBkb21Gb3JtRGF0YSA9IERPTUZvcm1EYXRhOjpjcmVhdGUoZm9ybSk7CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgp
LCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZG9tRm9ybURhdGEucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRl
bnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggN2JkN2E5MWY2
ODNlZmU2YjFkMjgxNzQzZTQyOTU5MDhkZTA2ODNlMy4uNjIzM2NlYzg2MTk2MzkzNWMyMDg0NDUw
MTRlYjgzYzgwYzNlYzBjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtMzksNyArMzksNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJgogICAgICAgICAvLyAnbmV3IERhdGFWaWV3KCknIGFuZCB0aGUgY2Fs
bCB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgY2FjaGVkIERhdGFWaWV3IG9iamVjdC4KICAgICAgICAg
UmVmUHRyPERhdGFWaWV3PiBkYXRhVmlldyA9IERhdGFWaWV3OjpjcmVhdGUoMCk7CiAgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZGF0YVZpZXcucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgICAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGRhdGFWaWV3LnJlbGVhc2UoKSwgJmlu
Zm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVw
ZW5kZW50KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogICAgIGlmIChhcmdzWzBd
LT5Jc051bGwoKSB8fCAhVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
M2I1M2JiOTBkY2U1ZjgxYTFmMGUzNzg5ODYxZGJlYjE1YWE5NTIwZi4uNTAyNmFkZjJhYTljMjgx
M2ZmZjg3ODg1MTAwN2U4ZmU3ODczODdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3IuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJnCiAKICAg
ICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVh
dGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25hbEhlaWdo
dCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltYWdlLnJlbGVh
c2UoKSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3Jh
cHBlcihpbWFnZS5yZWxlYXNlKCksICZWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5m
bywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBl
bmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcAppbmRleCBhYjY0NjdlY2Qx
OTg4MWE2ZDg1ZDkyMmRiNzliNzhmYjU0OGViM2E0Li5hODY3MDYyN2Q0YTk4MDA0ZWU4ZTE0OWQ1
NWU5ZGM1MzgxZWFkNzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGEKICAgICAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIAogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwotICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCkpOworICAgICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9
CiAKQEAgLTgwLDcgKzgwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW50ZW50Ojpjb25z
dHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICAgICAgcmV0
dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAppbmRleCAzM2EwYTIzNGQ5YTE2MzMz
NDZmMDlhYzYyOTUxY2Q5ZTU2OTFmZmY1Li45MTMzYWZhNWE3NjhlNDUxZmJmNTQ2NDY2MjgwMTE2
YzY3OGMzNjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1CiAgICAgVjhET01XcmFwcGVyOjpzZXROYW1lZEhpZGRlblJl
ZmVyZW5jZSh3cmFwcGVyLCAicG9ydDEiLCB0b1Y4KG9iai0+cG9ydDEoKSwgYXJncy5Ib2xkZXIo
KSwgYXJncy5HZXRJc29sYXRlKCkpKTsKICAgICBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVu
UmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MiIsIHRvVjgob2JqLT5wb3J0MigpLCBhcmdzLkhvbGRl
cigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVP
YmplY3RXaXRoV3JhcHBlcihvYmoucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
b2JqLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVy
Q29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRh
dGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCA5NzdiY2IzOGY2ZDAzYzI1NmM0MDI0MDZjYmM4
YTFkYTA0ZmZlNThhLi41ODhlOTExMjdlYmEyNjU0MmMyYTViZWU3NDgxYjZjMTFjOTU2NzNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNTYsNyArNTYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcgogICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4
TXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKGFyZywgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFJlZlB0cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0
aW9uT2JzZXJ2ZXI6OmNyZWF0ZShjYWxsYmFjay5yZWxlYXNlKCkpOwogCi0gICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZv
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lh
dGVPYmplY3RXaXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAg
cmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAppbmRleCAzZjEwZGU0NWVlOTNi
OGUyOTQ2OTgxNGU2N2FlZGYzZTQ0YjkzM2JmLi5kZWNmNzZjYjU2ZDM3YTg1MWZjNTg2NTI0YTQ2
NjE0Y2FjNTA3ZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYktpdFBvaW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVuCiAgICAgfQogICAgIFJlZlB0cjxXZWJLaXRQb2ludD4gcG9pbnQg
PSBXZWJLaXRQb2ludDo6Y3JlYXRlKHgsIHkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihwb2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihw
b2ludC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBl
ckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0
dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCA5NWRjMzYzYTJhMTQzY2E1NDQ3M2I2OTM0MDlhNmE0
ZDE5NDRlNmE0Li40MjM3ZjljNjRmNTc2YTQxYTg2NDVhNzE1ZWJkZGQwNTQ1OTBhZDdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVz
dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1M
SHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFhNTEh0dHBSZXF1ZXN0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1CiAgICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4bWxIdHRwUmVxdWVzdCA9IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgc2VjdXJpdHlPcmlnaW4pOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwg
JmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHhtbEh0dHBSZXF1ZXN0LnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187130</attachid>
            <date>2013-02-07 10:02:14 -0800</date>
            <delta_ts>2013-02-07 11:54:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109065-20130207185848.patch</filename>
            <type>text/plain</type>
            <size>56530</size>
            <attacher name="Dan Carney">dcarney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2FkYTZkYTBjZTg5MmM3
NDg4YmQ4NGYzYWE1MjY0ZDAyNzI1MTAwZC4uMTIzNzg2ZmUzODJlMGRhZjJhOTQ0NDcwYTg0MThm
MmU3YzliYjU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxMy0wMi0wNyAgRGFu
IENhcm5leSAgPGRjYXJuZXlAZ29vZ2xlLmNvbT4KKworICAgICAgICBbdjhdIG1vdmUgcGVyc2lz
dGVudDo6bmV3IGFuZCA6OmRpc3Bvc2UgaW50byBzYW1lIGNsYXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkwNjUKKworICAgICAgICBSZXZpZXdl
ZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gY2hhbmdlIGluIGZ1
bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JW
OC5wbToKKyAgICAgICAgKEdlbmVyYXRlU2luZ2xlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAg
ICAgIChHZW5lcmF0ZUV2ZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0
ZU5hbWVkQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0
ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OmNyZWF0ZVdyYXBwZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpjcmVhdGVXcmFw
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29u
c3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV2ZW50VGFyZ2V0OjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVz
dEV4Y2VwdGlvbjo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRl
cmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0SW50
ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3JDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T2JqOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9i
ajo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29u
c3RydWN0b3IzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yczo6Y29uc3RydWN0b3I0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y3JlYXRlV3JhcHBlcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpzZXRXcmFwcGVyKToK
KyAgICAgICAgKERPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6
OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBwZXJJbk9iamVj
dCk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlck1hcDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJN
YXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyTWFwOjpyZW1vdmVBbmREaXNw
b3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJNYXA6OmRlZmF1bHRXZWFrQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjp3cmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdFdyYXBwYWJsZTo6c2V0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFw
cGFibGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFNjcmlwdFdyYXBwYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OmRpc3Bvc2VXcmFwcGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d2Vha0NhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9N
V2luZG93U2hlbGw6Omluc3RhbGxET01XaW5kb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
RE9NV3JhcHBlci5oOgorICAgICAgICAoVjhET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2Vha05QT2JqZWN0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlVjhPYmplY3RGb3JOUE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpmb3JnZXRWOE9iamVjdEZvck5QT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVDb250ZXh0SWZOZWVkZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXcmFwcGVyQ29uZmlndXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpX
cmFwcGVyQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlV3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEFycmF5QnVm
ZmVyOjpjb25zdHJ1Y3RvckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaDoKKyAgICAgICAgKFdlYkNvcmU6OndyYXBB
cnJheUJ1ZmZlclZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0V2ViR0xBcnJheSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4QXVkaW9Db250ZXh0Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUZvcm1EYXRhOjpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNrQ3Vz
dG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW50ZW50Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE1lc3NhZ2VDaGFubmVsOjpjb25zdHJ1Y3Rv
ckNhbGxiYWNrQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlv
bk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25PYnNlcnZl
cjo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJLaXRQ
b2ludDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhY
TUxIdHRwUmVxdWVzdDo6Y29uc3RydWN0b3JDYWxsYmFja0N1c3RvbSk6CisKIDIwMTMtMDItMDcg
IEdhdmluIFBldGVycyAgPGdhdmlucEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgcm9sbGluZyBvdXQgcjE0MjExMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNWNkNWUwMzc3YTMwZDRmMDMzNTExNDJk
Y2QyYTQ5OTc3OWI0NWJlNy4uZTFiNGY1YmYwYTE3MDU3MTZmNjVhZWNhNmZmYWY5OTg5OGE2NTNi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9yVjgucG0KQEAgLTE5NjQsNyArMTk2NCw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRl
bnQsIDw8RU5EKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIEVORAogCkBAIC0yMDM5LDcgKzIw
MzksNyBAQCBFTkQKICAgICBSZWZQdHI8JHtpbnRlcmZhY2VOYW1lfT4gZXZlbnQgPSAke2ludGVy
ZmFjZU5hbWV9OjpjcmVhdGUodHlwZSwgZXZlbnRJbml0KTsKIAogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihldmVudC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7
CiB9CiAKQEAgLTIxODAsNyArMjE4MCw3IEBAIEVORAogCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1wbC5yZWxlYXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICYke3Y4SW50ZXJmYWNlTmFtZX1Db25zdHJ1
Y3Rvcjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0
aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTM1MzYsOSAr
MzUzNiw3IEBAIEVORAogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0g
ICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJr
SW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFw
cGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6
SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5
LmNwcAppbmRleCAwMjFjMTViMWJiZDQ5YWQ3ZTRiYzZkMWZiYzk0OTM3Mzc3NWZkZmI4Li5mYWU4
Mzk3OGM4NzhhOGRjZjZmMzdkZGNkYzBjMWI0OTExMDU1ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5j
cHAKQEAgLTE4MCw5ICsxODAsNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RmxvYXQ2NEFy
cmF5OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5PiBpbQogICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVy
LCBpbXBsLmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihp
bXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZl
dGltZSkKLSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVy
LCBpc29sYXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpE
ZXBlbmRlbnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVy
biB3cmFwcGVyOwogfQogdm9pZCBWOEZsb2F0NjRBcnJheTo6ZGVyZWZPYmplY3Qodm9pZCogb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCAzYWFlNzk2ZjU1Zjlm
MDg5ZjkxMGZjY2FlYjhhZjViYTU1ODZkNWEwLi4xYzlmZTk4YjVkMTRkMzMzMWExZjllNTM1NWRj
ZjNiNmVkZjdmYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMjA3
LDkgKzIwNyw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0QWN0aXZlRE9NT2JqZWN0
OjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEFjdGl2CiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0
KCksIGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5k
bGUgPSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZv
LCB3cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAg
ICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUs
IGhhc0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6
IFdyYXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7
CiB9CiB2b2lkIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggM2NjMzI0MzYwNmIw
YTNlODdkYzc2NTgyZGQwNzEwNmRiNGVlYmVjNS4uNzMwY2MyOTFjYzdhYWUxYjVkYzI2NWY4ZmMz
ZjAwNTU2YTM3OWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBA
IC0xNDUsOSArMTQ1LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXMKICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1w
bC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
ckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwg
JmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUp
Ci0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFw
cGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNv
bGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3Jh
cHBlcjsKIH0KIHZvaWQgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmRlcmVmT2JqZWN0KHZvaWQq
IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAwOTY2ZjRi
MjcxNWMxMmZlZWRmZGViNWY0MTJlYTQwODMxMTQ1YjM0Li5hOGFhY2Y3OGFmNDY1MDk0MGVmNWRl
ZTUwYTJmYWFkZmI4ZDViMGIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdEV2ZW50Q29u
c3RydWN0b3I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8
VGVzdEV2ZW50Q29uc3RydWN0b3I+IGV2ZW50ID0gVGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0
ZSh0eXBlLCBldmVudEluaXQpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhX
cmFwcGVyKGV2ZW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGV2ZW50LnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmln
dXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTc3LDkg
KzE3Nyw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVuCiAgICAgICAgIHJldHVybiB3cmFwcGVy
OwogCiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCks
IGlzb2xhdGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUg
PSBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3
cmFwcGVyLCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAg
ICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhh
c0RlcGVuZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdy
YXBwZXJDb25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9
CiB2b2lkIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDlhYmJiOTJlZTMwMDk5ZWUxOWZiZDNkZWFi
MmIyY2JlYTdkNWI1ZDEuLjBhMzdlYWRiZTJkYzY2Njg0ODcyYjc2ZmIzNDliZjU0YmY1MTAyYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtMjExLDkgKzIxMSw3IEBAIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRUYXJnZXQ6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0
cjxUZXN0RXZlbnRUYXJnCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
LSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1l
ID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1cmF0aW9u
OjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdEV2ZW50
VGFyZ2V0OjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmlu
ZGV4IDFhMjI4YzMzMTVhNGE5ODUyMjI0NDgxYTllZDg3MGZlOTc3ZTJkMmMuLjZiMDg2NTdiZDll
OTExOWQxMTc1YTZkNTEzZDU0NTM5NzBmMjVkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBA
IC0xMzYsOSArMTM2LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFeGNlcHRpb246
OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPgogICAgICAgICByZXR1cm4g
d3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBs
LmdldCgpLCBpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVy
SGFuZGxlID0gVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAm
aW5mbywgd3JhcHBlciwgaXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkK
LSAgICAgICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29s
YXRlLCBoYXNEZXBlbmRlbnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRl
bnQgOiBXcmFwcGVyQ29uZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFw
cGVyOwogfQogdm9pZCBWOFRlc3RFeGNlcHRpb246OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggNmYyNDYxOWFiODJhZjc4NWYzMTUzNzNkYTI2YmI0
YzhlZTIzN2FlYS4uZWE5ZWMwODI2OWQyMzU0MjhhNzQwMWMzN2VlZmFmMzBlMjVkOTMxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhUZXN0SW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmCiAgICAgaWYgKGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiAgIGZhaWw6CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJ
c29sYXRlKCkpOwpAQCAtMzY2LDkgKzM2Niw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhU
ZXN0SW50ZXJmYWNlOjpjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8VGVzdEludGVyZmFjZT4KICAg
ICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMo
d3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5k
ZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywg
d3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhUZXN0SW50ZXJmYWNlOjpkZXJlZk9iamVjdCh2
b2lkKiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKaW5kZXggYmY1ZjRmNDA5ZDVhNmIwZjkyZTEzZDliMTI2YWQ5ZDdmMGZhZWU2Yi4uOWM0ZThh
NWNkNmE4ZmE0NmQzMWY2Yzk2YTMwZjM5Zjc3MTNhMTdmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTQ1LDkgKzE0NSw3IEBAIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlV3JhcHBl
cihQYXNzUmVmUHRyPFRlCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFsbFBl
ckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xhdGUpOwotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlKTsK
LSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFwcGVySGFuZGxlLk1h
cmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdy
YXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVuZGVudExpZmV0aW1l
ID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJDb25maWd1cmF0aW9u
OjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lkIFY4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCBiYzhhZmQ2YzBhMTBmNDcyYzQ2YjQxZDMwZWNi
YjBlN2NiYTc1MzAzLi5mOTIxNDI5MWZjOTJjNWRhOGU2MDQwMGMxODI4YWEyYjIzNWRiOTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6CiAgICAgaWYgKGVjKQogICAgICAgICBnb3RvIGZhaWw7CiAK
LSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFz
ZSgpLCAmVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJlY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6aW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogICBmYWlsOgogICAgIHJldHVybiBz
ZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE4NCw5ICsxODQsNyBA
QCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVdy
YXBwZXIoUGFzc1JlZlB0cjxUZXN0TmFtZQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpLCBpc29sYXRl
KTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01X
cmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwg
aXNvbGF0ZSk7Ci0gICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKLSAgICAgICAgd3JhcHBl
ckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVyLCBpc29sYXRlLCBoYXNEZXBlbmRl
bnRMaWZldGltZSA/IFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQgOiBXcmFwcGVyQ29u
ZmlndXJhdGlvbjo6SW5kZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogdm9pZCBW
OFRlc3ROYW1lZENvbnN0cnVjdG9yOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5j
cHAKaW5kZXggNDAyYmYxNmNiNjYxYTcyMTlhYmQzYjU2NjhlYTNlY2Y1OWIxMGU3Mi4uMGM5ZjFl
ZTA3Y2Q0MDMyZGM5Zjc1NzJjMDhiNzI3YTRhYzg2MmNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9kZTo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0Tm9kZT4g
aW1wbCA9IFRlc3ROb2RlOjpjcmVhdGUoKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0x
NDksOSArMTQ5LDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROb2RlOjpjcmVhdGVX
cmFwcGVyKFBhc3NSZWZQdHI8VGVzdE5vZGU+IGltcGwsIHY4OjoKICAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5n
ZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhh
bmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmlu
Zm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0g
ICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVy
Ojphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0
ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50
IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIHZvaWQgVjhUZXN0Tm9kZTo6ZGVyZWZPYmplY3Qodm9pZCogb2JqZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cAppbmRleCA4OGM5MWQ2NDZiNDExNzA4ZTdkM2VhMGI1MWU2YzliMmE0NTkzNjI0Li5iOTg0OWQy
YTU2MTA4NjYyMzZmNzgyMzRmZTU4YTRjMzVkMjYwNDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjA5MCw3
ICsyMDkwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE9iajo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIFJlZlB0cjxUZXN0T2JqPiBp
bXBsID0gVGVzdE9iajo6Y3JlYXRlKHRlc3RDYWxsYmFjayk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNz
b2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgp
LCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIApAQCAtMjI5MSw5ICsyMjkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RP
Ymo6OmNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0T2JqPiBpbXBsLCB2ODo6SGEKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXMod3Jh
cHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUpOwotICAgIGlmICghaGFzRGVwZW5kZW50
TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CisgICAg
VjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLCAmaW5mbywgd3Jh
cHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRpbWUgPyBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50IDogV3JhcHBlckNvbmZpZ3VyYXRpb246OkluZGVwZW5kZW50KTsKICAgICBy
ZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhUZXN0T2JqOjpkZXJlZk9iamVjdCh2b2lkKiBvYmpl
Y3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKaW5kZXgg
ZmJmZTFhYTMwMmYxNjIyNzY2ZjU2ZDczYjdjODFiNmM3YTZjOWEyZS4uZDU4NzQwMjQyNTc5NjA5
NmFmYThkNTliNzU5YmUzY2RjMmUwZjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtNzYsNyArNzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Y29uc3RydWN0b3IxQ2FsbGJhY2soY29u
c3QgdgogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9IFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXIpOwogICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2Jq
ZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKQEAgLTg4LDcgKzg4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNvbnN0cnVjdG9yMkNhbGxiYWNrKGNvbnN0IHYKICAg
ICBSZWZQdHI8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yczo6Y3JlYXRlKGFycmF5QnVmZmVyVmlldyk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0
ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIApAQCAtMTAwLDcgKzEwMCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpjb25zdHJ1Y3RvcjNDYWxsYmFjayhjb25zdCB2CiAgICAg
UmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBsID0gVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmNyZWF0ZShibG9iKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIgPSBhcmdzLkhvbGRlcigpOwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmpl
Y3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGlt
cGwucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0x
MTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OmNvbnN0cnVjdG9yNENhbGxiYWNrKGNvbnN0IHYKICAgICBSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKHN0cmluZyk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJn
cy5Ib2xkZXIoKTsKIAotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBw
ZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2Uo
KSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlv
bjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMjAwLDkgKzIwMCw3
IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAg
ICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCksIGlzb2xh
dGUpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwsICZpbmZvLCB3cmFwcGVy
LCBpc29sYXRlKTsKLSAgICBpZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQotICAgICAgICB3cmFw
cGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUsIGhhc0RlcGVu
ZGVudExpZmV0aW1lID8gV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCA6IFdyYXBwZXJD
b25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiB2b2lk
IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKaW5kZXggMjBiMmQ1MTJhMmNmOWMwNDYxNWFkZTZlMzEyYTVmNGE4YWZhZDRjYS4uZWVm
ODYyMDQ4MjY4ZGE1MzA5ZWMzYzZmNTljMjgyMTJlZTg0YzdhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI0Niw3
ICsyNDYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKAogICAgIFJlZlB0cjxUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBpbXBsID0gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZTo6Y3JlYXRlKGhlbGxvLCBkYXRhLCBtZXNzYWdlUG9ydEFycmF5VHJhbnNmZXJM
aXN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigp
OwogCi0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJl
bGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGltcGwucmVsZWFzZSgpLCAmaW5mbywg
d3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRl
bnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCkBAIC0zMTgsOSArMzE4LDcgQEAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNy
ZWF0ZVdyYXBwZXIoUGFzc1IKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAKICAgICBpbnN0YWxs
UGVyQ29udGV4dFByb3BlcnRpZXMod3JhcHBlciwgaW1wbC5nZXQoKSwgaXNvbGF0ZSk7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6
YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbCwgJmluZm8sIHdyYXBwZXIsIGlzb2xhdGUp
OwotICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCi0gICAgICAgIHdyYXBwZXJIYW5kbGUu
TWFya0luZGVwZW5kZW50KCk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRo
V3JhcHBlcihpbXBsLCAmaW5mbywgd3JhcHBlciwgaXNvbGF0ZSwgaGFzRGVwZW5kZW50TGlmZXRp
bWUgPyBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50IDogV3JhcHBlckNvbmZpZ3VyYXRp
b246OkluZGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIHZvaWQgVjhUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpkZXJlZk9iamVjdCh2b2lkKiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAppbmRleCBjY2I5Yjhh
MGM2ZmQwZDE1ODc4MmY5NDU0MWJiNTEzZDJhYTIzZmQ4Li4xMmE1MmZlNDA2ZWFhM2Q5YTAzNjQy
OGM3NGFkNmE3OGM0ZTBiYTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5jcHAKQEAgLTgwLDI0ICs4MCw0IEBAIHZvaWQgRE9NRGF0YVN0b3JlOjpyZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAg
IGluZm8uYWRkTWVtYmVyKG1fd3JhcHBlck1hcCwgIndyYXBwZXJNYXAiKTsKIH0KIAotdm9pZCBE
T01EYXRhU3RvcmU6OndlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNp
c3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKLXsKLSAgICBTY3JpcHRXcmFw
cGFibGUqIGtleSA9IHN0YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KGNvbnRleHQpOwotICAg
IEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKLSAg
ICBBU1NFUlQoa2V5LT53cmFwcGVyKCkgPT0gd3JhcHBlcik7Ci0gICAgLy8gTm90ZTogfG9iamVj
dHwgbWlnaHQgbm90IGJlIGVxdWFsIHRvIHxrZXl8LCBlLmcuLCBpZiBTY3JpcHRXcmFwcGFibGUg
aXNuJ3QgYSBsZWZ0LW1vc3QgYmFzZSBjbGFzcy4KLSAgICB2b2lkKiBvYmplY3QgPSB0b05hdGl2
ZSh3cmFwcGVyKTsKLSAgICBXcmFwcGVyVHlwZUluZm8qIGluZm8gPSB0b1dyYXBwZXJUeXBlSW5m
byh3cmFwcGVyKTsKLSAgICBBU1NFUlQoaW5mby0+ZGVyZWZPYmplY3RGdW5jdGlvbik7Ci0KLSAg
ICBrZXktPmNsZWFyV3JhcHBlcigpOwotICAgIHZhbHVlLkRpc3Bvc2UoKTsKLSAgICB2YWx1ZS5D
bGVhcigpOwotICAgIC8vIEZJWE1FOiBJIG5vdGljZWQgdGhhdCA1MCV+IG9mIG1pbm9yIEdDIGN5
Y2xlIHRpbWVzIGNhbiBiZSBjb25zdW1lZAotICAgIC8vIGluc2lkZSBrZXktPmRlcmVmKCksIHdo
aWNoIGNhdXNlcyBOb2RlIGRlc3RydWN0aW9ucy4gV2Ugc2hvdWxkCi0gICAgLy8gbWFrZSBOb2Rl
IGRlc3RydWN0aW9ucyBpbmNyZW1lbnRhbC4KLSAgICBpbmZvLT5kZXJlZk9iamVjdChvYmplY3Qp
OwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oCmluZGV4IGM5OGI1ZTQxY2ZlYTM0ZWVjMzc5NWFmYjQ5OTI3MGM1NjEz
MDFkYTQuLjA1OWUwMTljMGU4YzE0Zjc1MWU4M2Q4OGQwNzUzMDc4YjRkZjQyMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC04OSwxNSArODksMTUgQEAg
cHVibGljOgogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIHZv
aWQgc2V0V3JhcHBlcihUKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXIoVCog
b2JqZWN0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRlKiBpc29s
YXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKICAgICB7CiAg
ICAgICAgIGlmIChtYWluV29ybGRXcmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpICYmIGlz
TWFpbldvcmxkT2JqZWN0KG9iamVjdCkpIHsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIURPTVdy
YXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZHNFeGlzdCgpKSkgewotICAgICAgICAgICAgICAgIHNl
dFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgICAgICAgICAg
ICAgIHNldFdyYXBwZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUsIGNvbmZpZ3Vy
YXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICByZXR1cm4gY3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdCwgd3JhcHBlciwg
aXNvbGF0ZSk7CisgICAgICAgIHJldHVybiBjdXJyZW50KGlzb2xhdGUpLT5zZXQob2JqZWN0LCB3
cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgpAQCAtMTA4LDIxICsxMDgsMjEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV93cmFwcGVyTWFwLmdldChvYmplY3QpOwogICAgIH0KIAorICAgIHZvaWQgcmVwb3J0TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCitwcml2YXRlOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAgaW5saW5l
IHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgewogICAgICAgICBBU1NFUlQoISFvYmplY3QpOwogICAgICAgICBBU1NFUlQoIXdy
YXBwZXIuSXNFbXB0eSgpKTsKICAgICAgICAgaWYgKG1haW5Xb3JsZFdyYXBwZXJJc1N0b3JlZElu
T2JqZWN0KG9iamVjdCkgJiYgbV90eXBlID09IE1haW5Xb3JsZCkgewotICAgICAgICAgICAgc2V0
V3JhcHBlckluT2JqZWN0KG9iamVjdCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgICAgICAgICBz
ZXRXcmFwcGVySW5PYmplY3Qob2JqZWN0LCB3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9u
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3dyYXBwZXJNYXAu
c2V0KG9iamVjdCwgd3JhcHBlcik7CisgICAgICAgIG1fd3JhcHBlck1hcC5zZXQob2JqZWN0LCB3
cmFwcGVyLCBjb25maWd1cmF0aW9uKTsKICAgICB9CiAKLSAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKLQotcHJpdmF0ZToKICAgICBzdGF0aWMgRE9N
RGF0YVN0b3JlKiBtYWluV29ybGRTdG9yZSgpOwogCiAgICAgc3RhdGljIGJvb2wgbWFpbldvcmxk
V3JhcHBlcklzU3RvcmVkSW5PYmplY3Qodm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNTQs
MjYgKzE1NCwyMCBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7
CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KHZvaWQqLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKQorICAgIHN0YXRpYyB2b2lkIHNl
dFdyYXBwZXJJbk9iamVjdCh2b2lkKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xh
dGUqLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYpCiAgICAgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0
KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVySW5P
YmplY3QoU2NyaXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdyYXBwZXJDb25maWd1cmF0aW9uJiBj
b25maWd1cmF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpLklz
RW1wdHkoKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyKTsKLSAgICAgICAg
d3JhcHBlci5NYWtlV2Vhayhpc29sYXRlLCBvYmplY3QsIHdlYWtDYWxsYmFjayk7CisgICAgICAg
IG9iamVjdC0+c2V0V3JhcHBlcih3cmFwcGVyLCBpc29sYXRlLCBjb25maWd1cmF0aW9uKTsKICAg
ICB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KE5vZGUqIG9iamVjdCwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisg
ICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckluT2JqZWN0KE5vZGUqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGNvbnN0IFdy
YXBwZXJDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KG9iamVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0V3JhcHBl
cih3cmFwcGVyKTsKKyAgICAgICAgb2JqZWN0LT5zZXRXcmFwcGVyKHdyYXBwZXIsIGlzb2xhdGUs
IGNvbmZpZ3VyYXRpb24pOwogICAgICAgICBWOEdDQ29udHJvbGxlcjo6ZGlkQ3JlYXRlV3JhcHBl
ckZvck5vZGUob2JqZWN0KTsKLSAgICAgICAgd3JhcHBlci5NYWtlV2Vhayhpc29sYXRlLCBzdGF0
aWNfY2FzdDxTY3JpcHRXcmFwcGFibGUqPihvYmplY3QpLCB3ZWFrQ2FsbGJhY2spOwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6SXNvbGF0ZSosIHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZT4sIHZvaWQqIGNvbnRleHQpOwotCiAgICAgVHlwZSBtX3R5cGU7CiAgICAg
RE9NV3JhcHBlck1hcDx2b2lkPiBtX3dyYXBwZXJNYXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCmluZGV4IDAwYzAzZTA5NzQzNzBjNjg1MTIzZWI0ZTVl
NTY4ZjNjODc4NGM5OTQuLmFmMGY4OTY3Mjc2ZGUzZGJkMGQ0MmMxNDFiZTkxMDBkMDE4YzJmYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKQEAgLTUwLDE3
ICs1MCwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IGdldChLZXlUeXBlKiBrZXkpCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBn
ZXQoS2V5VHlwZSoga2V5KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLmdldChrZXkpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlcikKKyAgICB2b2lkIHNldChLZXlUeXBlKiBrZXksIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciwgY29uc3QgV3JhcHBlckNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGtleSkpOwogICAgICAg
ICBBU1NFUlQoc3RhdGljX2Nhc3Q8S2V5VHlwZSo+KHRvTmF0aXZlKHdyYXBwZXIpKSA9PSBrZXkp
OwotICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKG1faXNvbGF0ZSwgdGhpcywgbV9jYWxsYmFjayk7
Ci0gICAgICAgIG1fbWFwLnNldChrZXksIHdyYXBwZXIpOworICAgICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiBwZXJzaXN0ZW50ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5l
dyhtX2lzb2xhdGUsIHdyYXBwZXIpOworICAgICAgICBjb25maWd1cmF0aW9uLmNvbmZpZ3VyZVdy
YXBwZXIocGVyc2lzdGVudCwgbV9pc29sYXRlKTsKKyAgICAgICAgcGVyc2lzdGVudC5NYWtlV2Vh
ayhtX2lzb2xhdGUsIHRoaXMsIG1fY2FsbGJhY2spOworICAgICAgICBtX21hcC5zZXQoa2V5LCBw
ZXJzaXN0ZW50KTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyKCkKQEAgLTgxLDEyICs4MywxNSBA
QCBwdWJsaWM6CiAgICAgICAgIGluZm8uaWdub3JlTWVtYmVyKG1fY2FsbGJhY2spOwogICAgIH0K
IAotICAgIHZvaWQgcmVtb3ZlKEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gd3JhcHBlcikKKyAgICB2b2lkIHJlbW92ZUFuZERpc3Bvc2UoS2V5VHlwZSoga2V5LCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7Cisg
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIoKnZhbHVlKTsKICAgICAg
ICAgdHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7CiAgICAg
ICAgIEFTU0VSVChpdCAhPSBtX21hcC5lbmQoKSk7CiAgICAgICAgIEFTU0VSVChpdC0+dmFsdWUg
PT0gd3JhcHBlcik7CiAgICAgICAgIG1fbWFwLnJlbW92ZShpdCk7CisgICAgICAgIHdyYXBwZXIu
RGlzcG9zZShpc29sYXRlKTsKKyAgICAgICAgdmFsdWUuQ2xlYXIoKTsKICAgICB9CiAKIHByaXZh
dGU6CkBAIC05OCwxMCArMTAzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgV3JhcHBlclR5cGVJbmZv
KiB0eXBlID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CiAgICAgICAgIEFTU0VSVCh0eXBl
LT5kZXJlZk9iamVjdEZ1bmN0aW9uKTsKICAgICAgICAgS2V5VHlwZSoga2V5ID0gc3RhdGljX2Nh
c3Q8S2V5VHlwZSo+KHRvTmF0aXZlKHdyYXBwZXIpKTsKLQotICAgICAgICBtYXAtPnJlbW92ZShr
ZXksIHdyYXBwZXIpOwotICAgICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKLSAgICAgICAgd3JhcHBl
ci5DbGVhcigpOworICAgICAgICBtYXAtPnJlbW92ZUFuZERpc3Bvc2Uoa2V5LCB3cmFwcGVyLCBp
c29sYXRlKTsKICAgICAgICAgdHlwZS0+ZGVyZWZPYmplY3Qoa2V5KTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFdyYXBwYWJsZS5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0V3JhcHBhYmxlLmgKaW5kZXggNjU1MDAxNzQ1
YWVmZmNjMmUzZmI1N2FhMDFhNmZiZDQ4MzNjNzM0ZS4uMTZiYzc4YTk0NGM3MTIyODA1OTUzYzA4
YzBlY2I5NmIwZDBlZWYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0V3JhcHBhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
V3JhcHBhYmxlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZpbmUgU2NyaXB0V3JhcHBhYmxlX2gK
IAogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJX
cmFwcGVyVHlwZUluZm8uaCIKICNpbmNsdWRlIDx2OC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00MCwzNyArNDEsMzUgQEAgY2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKICAg
ICBTY3JpcHRXcmFwcGFibGUoKSB7IH0KIAotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHdyYXBwZXIoKSBjb25zdAorICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcigpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4obWFz
a09yVW5tYXNrUG9pbnRlcigqbV9tYXNrZWRXcmFwcGVyKSk7CisgICAgICAgIHJldHVybiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KG1hc2tPclVubWFza1BvaW50ZXIoKm1fbWFza2VkV3JhcHBlcikp
OwogICAgIH0KIAotICAgIHZvaWQgc2V0V3JhcHBlcih2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiB3cmFwcGVyKQorICAgIHZvaWQgc2V0V3JhcHBlcih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdy
YXBwZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBjb25zdCBXcmFwcGVyQ29uZmlndXJhdGlvbiYg
Y29uZmlndXJhdGlvbikKICAgICB7Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlciA9IG1hc2tPclVu
bWFza1BvaW50ZXIoKndyYXBwZXIpOworICAgICAgICBBU1NFUlQobV9tYXNrZWRXcmFwcGVyLklz
RW1wdHkoKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHBlcnNpc3RlbnQg
PSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOworICAgICAgICBjb25m
aWd1cmF0aW9uLmNvbmZpZ3VyZVdyYXBwZXIocGVyc2lzdGVudCwgaXNvbGF0ZSk7CisgICAgICAg
IHBlcnNpc3RlbnQuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywgd2Vha0NhbGxiYWNrKTsKKyAgICAg
ICAgbV9tYXNrZWRXcmFwcGVyID0gbWFza09yVW5tYXNrUG9pbnRlcigqcGVyc2lzdGVudCk7CiAg
ICAgfQogCi0gICAgdm9pZCBjbGVhcldyYXBwZXIoKQorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7Ci0gICAg
ICAgIEFTU0VSVCghbV9tYXNrZWRXcmFwcGVyLklzRW1wdHkoKSk7Ci0gICAgICAgIG1fbWFza2Vk
V3JhcHBlci5DbGVhcigpOworICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CisgICAgICAgIGluZm8uaWdu
b3JlTWVtYmVyKG1fbWFza2VkV3JhcHBlcik7CiAgICAgfQogCi0gICAgdm9pZCBkaXNwb3NlV3Jh
cHBlcigpCitwcml2YXRlOgorICAgIGlubGluZSB2b2lkIGRpc3Bvc2VXcmFwcGVyKHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fbWFza2Vk
V3JhcHBlci5Jc0VtcHR5KCkpOwotICAgICAgICBtX21hc2tlZFdyYXBwZXIgPSB3cmFwcGVyKCk7
Ci0gICAgICAgIG1fbWFza2VkV3JhcHBlci5EaXNwb3NlKCk7CisgICAgICAgIEFTU0VSVCgqdmFs
dWUgPT0gbWFza09yVW5tYXNrUG9pbnRlcigqbV9tYXNrZWRXcmFwcGVyKSk7CisgICAgICAgIHZh
bHVlLkRpc3Bvc2UoKTsKICAgICAgICAgbV9tYXNrZWRXcmFwcGVyLkNsZWFyKCk7CiAgICAgfQog
Ci0gICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAotICAgIHsKLSAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwotICAgICAgICBpbmZv
Lmlnbm9yZU1lbWJlcihtX21hc2tlZFdyYXBwZXIpOwotICAgIH0KLQotcHJpdmF0ZToKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX21hc2tlZFdyYXBwZXI7CiAKICAgICBzdGF0aWMg
aW5saW5lIHY4OjpPYmplY3QqIG1hc2tPclVubWFza1BvaW50ZXIoY29uc3Qgdjg6Ok9iamVjdCog
b2JqZWN0KQpAQCAtNzksNiArNzgsMjUgQEAgcHJpdmF0ZToKICAgICAgICAgY29uc3QgdWludHB0
cl90IHJhbmRvbU1hc2sgPSB+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PigmV2ViQ29yZU1l
bW9yeVR5cGVzOjpET00pID4+IDEzKTsgLy8gRW50cm9weSB2aWEgQVNMUi4KICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8djg6Ok9iamVjdCo+KChvYmplY3RQb2ludGVyIF4gcmFuZG9t
TWFzaykgJiAoIW9iamVjdFBvaW50ZXIgLSAxKSk7IC8vIFByZXNlcnZlIG51bGwgd2l0aG91dCBi
cmFuY2hpbmcuCiAgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJc29s
YXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBjb250
ZXh0KQorICAgIHsKKyAgICAgICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBzdGF0aWNfY2FzdDxT
Y3JpcHRXcmFwcGFibGUqPihjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVj
dCgpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKKyAgICAgICAgQVNTRVJUKGtleS0+
d3JhcHBlcigpID09IHdyYXBwZXIpOworICAgICAgICBrZXktPmRpc3Bvc2VXcmFwcGVyKHZhbHVl
KTsKKworICAgICAgICAvLyBOb3RlOiB8b2JqZWN0fCBtaWdodCBub3QgYmUgZXF1YWwgdG8gfGtl
eXwsIGUuZy4sIGlmIFNjcmlwdFdyYXBwYWJsZSBpc24ndCBhIGxlZnQtbW9zdCBiYXNlIGNsYXNz
LgorICAgICAgICB2b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKKyAgICAgICAgV3Jh
cHBlclR5cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CisgICAgICAg
IEFTU0VSVChpbmZvLT5kZXJlZk9iamVjdEZ1bmN0aW9uKTsKKworICAgICAgICAvLyBGSVhNRTog
SSBub3RpY2VkIHRoYXQgNTAlfiBvZiBtaW5vciBHQyBjeWNsZSB0aW1lcyBjYW4gYmUgY29uc3Vt
ZWQKKyAgICAgICAgLy8gaW5zaWRlIGtleS0+ZGVyZWYoKSwgd2hpY2ggY2F1c2VzIE5vZGUgZGVz
dHJ1Y3Rpb25zLiBXZSBzaG91bGQKKyAgICAgICAgLy8gbWFrZSBOb2RlIGRlc3RydWN0aW9ucyBp
bmNyZW1lbnRhbC4KKyAgICAgICAgaW5mby0+ZGVyZWZPYmplY3Qob2JqZWN0KTsKKyAgICB9CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IGNhNjAwOTk5MzIxZjM4ZDFjYmY1NjUyNjc1
YzBlN2NlOTk5OWNiOWIuLmY5OThlMTZjODBhYWNkYTg2YzRkZWNhNGYyMDA5YjA1NDA0YTg0YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3Bw
CkBAIC0zMzUsNyArMzM1LDcgQEAgYm9vbCBWOERPTVdpbmRvd1NoZWxsOjppbnN0YWxsRE9NV2lu
ZG93KCkKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGlubmVyR2xvYmFsT2JqZWN0ID0gdG9J
bm5lckdsb2JhbE9iamVjdChtX2NvbnRleHQuZ2V0KCkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0
TmF0aXZlSW5mbyhpbm5lckdsb2JhbE9iamVjdCwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3cp
OwogICAgIGlubmVyR2xvYmFsT2JqZWN0LT5TZXRQcm90b3R5cGUod2luZG93V3JhcHBlcik7Ci0g
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihQYXNzUmVmUHRyPERP
TVdpbmRvdz4od2luZG93KSwgJlY4RE9NV2luZG93OjppbmZvLCB3aW5kb3dXcmFwcGVyLCBtX2lz
b2xhdGUpOworICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFz
c1JlZlB0cjxET01XaW5kb3c+KHdpbmRvdyksICZWOERPTVdpbmRvdzo6aW5mbywgd2luZG93V3Jh
cHBlciwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
aAppbmRleCBkOGZmMjg2MWZkNzA1ZjJjNjZjZDRmZjAwY2VjZDc3YTFjNzcwOGIyLi5hOTFjYmI0
YzMwMjQxMWZhNjJjMWUyZDFjOGEwMDQzMWI3ZjhmNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtNTYsMTEgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIFdyYXBwZXJUeXBlSW5mbyos
IHZvaWQqLCB2ODo6SXNvbGF0ZSopOwogCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0g
ICAgICAgIHN0YXRpYyBpbmxpbmUgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gYXNzb2NpYXRl
T2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiwgV3JhcHBlclR5cGVJbmZvKiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKKyAgICAgICAgc3RhdGljIGlubGluZSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQ
dHI8VD4sIFdyYXBwZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29s
YXRlKiwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkxpZmV0aW1lKTsKICAgICAgICAgc3RhdGljIGlu
bGluZSB2b2lkIHNldE5hdGl2ZUluZm8odjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgV3JhcHBlclR5
cGVJbmZvKiwgdm9pZCopOwogICAgICAgICBzdGF0aWMgaW5saW5lIHZvaWQgY2xlYXJOYXRpdmVJ
bmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFdyYXBwZXJUeXBlSW5mbyopOwotICAgICAgICBz
dGF0aWMgaW5saW5lIHZvaWQgc2V0V3JhcHBlckNsYXNzKHZvaWQqLCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pik7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRXcmFwcGVyQ2xhc3Mo
Tm9kZSosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KTsKIAogICAgICAgICBzdGF0aWMgYm9v
bCBpc0RPTVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKICAgICAgICAgc3RhdGljIGJv
b2wgaXNXcmFwcGVyT2ZUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgV3JhcHBlclR5cGVJbmZv
Kik7CkBAIC02OSwxNiArNjcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRp
YyB2b2lkIHNldE5hbWVkSGlkZGVuUmVmZXJlbmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcGFy
ZW50LCBjb25zdCBjaGFyKiBuYW1lLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2hpbGQpOwogICAg
IH07CiAKLSAgICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyh2b2lk
Kiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLSAgICB7Ci0gICAgICAgIHdy
YXBwZXIuU2V0V3JhcHBlckNsYXNzSWQodjhET01PYmplY3RDbGFzc0lkKTsKLSAgICB9Ci0KLSAg
ICBpbmxpbmUgdm9pZCBWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyhOb2RlKiwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKLSAgICB7Ci0gICAgICAgIHdyYXBwZXIuU2V0
V3JhcHBlckNsYXNzSWQodjhET01Ob2RlQ2xhc3NJZCk7Ci0gICAgfQotCiAgICAgaW5saW5lIHZv
aWQgVjhET01XcmFwcGVyOjpzZXROYXRpdmVJbmZvKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciwgV3JhcHBlclR5cGVJbmZvKiB0eXBlLCB2b2lkKiBvYmplY3QpCiAgICAgewogICAgICAg
ICBBU1NFUlQod3JhcHBlci0+SW50ZXJuYWxGaWVsZENvdW50KCkgPj0gMik7CkBAIC05NywxNCAr
ODUsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+Ci0gICAgaW5saW5lIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBl
cjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoUGFzc1JlZlB0cjxUPiBvYmplY3QsIFdyYXBw
ZXJUeXBlSW5mbyogdHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOERPTVdy
YXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8VD4gb2JqZWN0LCBX
cmFwcGVyVHlwZUluZm8qIHR5cGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciwgdjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJDb25maWd1cmF0aW9uOjpMaWZldGltZSBsaWZldGlt
ZSkKICAgICB7CiAgICAgICAgIHNldE5hdGl2ZUluZm8od3JhcHBlciwgdHlwZSwgb2JqZWN0Lmdl
dCgpKTsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7Ci0gICAgICAgIEFTU0VS
VChtYXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwotICAgICAgICBzZXRXcmFwcGVyQ2xh
c3Mob2JqZWN0LmdldCgpLCB3cmFwcGVySGFuZGxlKTsKLSAgICAgICAgRE9NRGF0YVN0b3JlOjpz
ZXRXcmFwcGVyKG9iamVjdC5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUsIGlzb2xhdGUpOwotICAg
ICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKKyAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBl
cih3cmFwcGVyKSk7CisgICAgICAgIFdyYXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24g
PSBidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKG9iamVjdC5nZXQoKSwgbGlmZXRpbWUpOworICAg
ICAgICBET01EYXRhU3RvcmU6OnNldFdyYXBwZXIob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlciwg
aXNvbGF0ZSwgY29uZmlndXJhdGlvbik7CisgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCA0NWJl
YTJlYjUxYTgzOTRiOTEyNThlMDI1NDY5NGY3YmVhZmMwOTY0Li40YzlkYjg1MDhjZDBhNjZkNmJk
ZjQ3MGRjYjYzMWQ2OTRlNGY0OGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcApAQCAtNDAyLDkgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIHdlYWtOUE9iamVjdENh
bGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+CiAK
ICAgICAvLyBNdXN0IHJlbW92ZSBmcm9tIG91ciBtYXAgYmVmb3JlIGNhbGxpbmcgX05QTl9SZWxl
YXNlT2JqZWN0KCkuIF9OUE5fUmVsZWFzZU9iamVjdCBjYW4KICAgICAvLyBjYWxsIGZvcmdldFY4
T2JqZWN0Rm9yTlBPYmplY3QsIHdoaWNoIHVzZXMgdGhlIHRhYmxlIGFzIHdlbGwuCi0gICAgc3Rh
dGljTlBPYmplY3RNYXAoKS5yZW1vdmUobnBPYmplY3QsIHdyYXBwZXIpOwotICAgIHdyYXBwZXIu
RGlzcG9zZSgpOwotICAgIHdyYXBwZXIuQ2xlYXIoKTsKKyAgICBzdGF0aWNOUE9iamVjdE1hcCgp
LnJlbW92ZUFuZERpc3Bvc2UobnBPYmplY3QsIHdyYXBwZXIsIGlzb2xhdGUpOwogCiAgICAgaWYg
KF9OUE5fSXNBbGl2ZShucE9iamVjdCkpCiAgICAgICAgIF9OUE5fUmVsZWFzZU9iamVjdChucE9i
amVjdCk7CkBAIC00NDgsMjcgKzQ0NiwyNCBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gY3JlYXRl
VjhPYmplY3RGb3JOUE9iamVjdChOUE9iamVjdCogb2JqZWN0LCBOUE9iamVjdCogcm9vdAogICAg
ICAgICByZXR1cm4gdmFsdWU7CiAKICAgICBWOERPTVdyYXBwZXI6OnNldE5hdGl2ZUluZm8odmFs
dWUsIG5wT2JqZWN0VHlwZUluZm8oKSwgb2JqZWN0KTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh2
YWx1ZSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRXcmFwcGVyQ2xhc3Mob2JqZWN0LCB3cmFwcGVy
SGFuZGxlKTsKIAogICAgIC8vIEtKUyByZXRhaW5zIHRoZSBvYmplY3QgYXMgcGFydCBvZiBpdHMg
d3JhcHBlciAoc2VlIEJpbmRpbmdzOjpDSW5zdGFuY2UpLgogICAgIF9OUE5fUmV0YWluT2JqZWN0
KG9iamVjdCk7CiAgICAgX05QTl9SZWdpc3Rlck9iamVjdChvYmplY3QsIHJvb3QpOwogCi0gICAg
c3RhdGljTlBPYmplY3RNYXAoKS5zZXQob2JqZWN0LCB3cmFwcGVySGFuZGxlKTsKLSAgICBBU1NF
UlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOworICAgIFdy
YXBwZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24gPSBidWlsZFdyYXBwZXJDb25maWd1cmF0
aW9uKG9iamVjdCwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CisgICAgc3RhdGlj
TlBPYmplY3RNYXAoKS5zZXQob2JqZWN0LCB2YWx1ZSwgY29uZmlndXJhdGlvbik7CisgICAgQVNT
RVJUKFY4RE9NV3JhcHBlcjo6bWF5YmVET01XcmFwcGVyKHZhbHVlKSk7CiAgICAgcmV0dXJuIHZh
bHVlOwogfQogCiB2b2lkIGZvcmdldFY4T2JqZWN0Rm9yTlBPYmplY3QoTlBPYmplY3QqIG9iamVj
dCkKIHsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyID0gc3RhdGljTlBP
YmplY3RNYXAoKS5nZXQob2JqZWN0KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBzdGF0aWNOUE9iamVjdE1hcCgpLmdldChvYmplY3QpOwogICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpIHsKICAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgICAgICBWOERP
TVdyYXBwZXI6OmNsZWFyTmF0aXZlSW5mbyh3cmFwcGVyLCBucE9iamVjdFR5cGVJbmZvKCkpOwot
ICAgICAgICBzdGF0aWNOUE9iamVjdE1hcCgpLnJlbW92ZShvYmplY3QsIHdyYXBwZXIpOwotICAg
ICAgICB3cmFwcGVyLkRpc3Bvc2UoKTsKLSAgICAgICAgd3JhcHBlci5DbGVhcigpOworICAgICAg
ICBzdGF0aWNOUE9iamVjdE1hcCgpLnJlbW92ZUFuZERpc3Bvc2Uob2JqZWN0LCB3cmFwcGVyLCB2
ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKTsKICAgICAgICAgX05QTl9SZWxlYXNlT2JqZWN0KG9i
amVjdCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCAyYzllZGU4NjZlZmU1MjY3NzMxOGQxMmU1
OTk1MzRhMWM3MjNhM2JlLi5iYzQ2MDkzODI3OWZlNGRmMzNhMmE4MTUwMGM2OGMxYTYzMDU3OTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRD
b250cm9sbGVyLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgV29ya2VyU2NyaXB0Q29udHJv
bGxlcjo6aW5pdGlhbGl6ZUNvbnRleHRJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKFBh
c3NSZWZQdHI8V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0KSwgY29udGV4dFR5cGUsIGpz
V29ya2VyQ29udGV4dCwgbV9pc29sYXRlKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKFBhc3NSZWZQdHI8V29ya2VyQ29udGV4dD4obV93b3JrZXJDb250ZXh0
KSwgY29udGV4dFR5cGUsIGpzV29ya2VyQ29udGV4dCwgbV9pc29sYXRlLCBXcmFwcGVyQ29uZmln
dXJhdGlvbjo6RGVwZW5kZW50KTsKIAogICAgIC8vIEluc2VydCB0aGUgb2JqZWN0IGluc3RhbmNl
IGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIHNoYWRvdyBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBnbG9iYWxPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG1f
Y29udGV4dC0+R2xvYmFsKCktPkdldFByb3RvdHlwZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggOWI2Mzg1ZDY1NjU5NDYzZGNkOWU5MDk4
NmI3MjdhNzA3N2U5YmI2Ni4uMTkzNGViMTAxNWMwNTRlMWQ1NWZhYzUyMmFmM2U2MTMyMjE2ZDdj
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZv
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEFjdGl2ZURPTU9i
amVjdDsKICAgICBjbGFzcyBET01EYXRhU3RvcmU7CiAgICAgY2xhc3MgRXZlbnRUYXJnZXQ7Cisg
ICAgY2xhc3MgTm9kZTsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQgdjhET01XcmFwcGVyVHlwZUlu
ZGV4ID0gMDsKICAgICBzdGF0aWMgY29uc3QgaW50IHY4RE9NV3JhcHBlck9iamVjdEluZGV4ID0g
MTsKQEAgLTE0MSw2ICsxNDIsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V3JhcHBlclR5cGVJbmZvKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRl
ckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlclR5cGVJbmRleCkpOwogICAgIH0KIAorICAg
IHN0cnVjdCBXcmFwcGVyQ29uZmlndXJhdGlvbiB7CisKKyAgICAgICAgZW51bSBMaWZldGltZSB7
CisgICAgICAgICAgICBEZXBlbmRlbnQsIEluZGVwZW5kZW50CisgICAgICAgIH07CisKKyAgICAg
ICAgdm9pZCBjb25maWd1cmVXcmFwcGVyKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBw
ZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICB3
cmFwcGVyLlNldFdyYXBwZXJDbGFzc0lkKGNsYXNzSWQpOworICAgICAgICAgICAgaWYgKGxpZmV0
aW1lID09IEluZGVwZW5kZW50KQorICAgICAgICAgICAgICAgIHdyYXBwZXIuTWFya0luZGVwZW5k
ZW50KGlzb2xhdGUpOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgdWludDE2X3QgY2xhc3NJ
ZDsKKyAgICAgICAgY29uc3QgTGlmZXRpbWUgbGlmZXRpbWU7CisgICAgfTsKKworICAgIGlubGlu
ZSBXcmFwcGVyQ29uZmlndXJhdGlvbiBidWlsZFdyYXBwZXJDb25maWd1cmF0aW9uKHZvaWQqLCBX
cmFwcGVyQ29uZmlndXJhdGlvbjo6TGlmZXRpbWUgbGlmZXRpbWUpCisgICAgeworICAgICAgICBX
cmFwcGVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0ge3Y4RE9NT2JqZWN0Q2xhc3NJZCwg
bGlmZXRpbWV9OworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKKyAgICB9CisKKyAgICBp
bmxpbmUgV3JhcHBlckNvbmZpZ3VyYXRpb24gYnVpbGRXcmFwcGVyQ29uZmlndXJhdGlvbihOb2Rl
KiwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkxpZmV0aW1lIGxpZmV0aW1lKQorICAgIHsKKyAgICAg
ICAgV3JhcHBlckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IHt2OERPTU5vZGVDbGFzc0lk
LCBsaWZldGltZX07CisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIH0KIH0KIAog
I2VuZGlmIC8vIFdyYXBwZXJUeXBlSW5mb19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlckN1c3RvbS5jcHAKaW5kZXggZDk3MmMz
MWU3ZjhkOWZiZTk2NWE3YjFlODZiZTZmYjU5MmYyYzJmZi4uMjI3MTcyZjJlMjgxNjViODU3OGEw
MDk1MDYxYzE3YTZjYzI4ZGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyQ3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBcnJheUJ1ZmZlcjo6Y29uc3RydWN0b3JDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbgogICAgIHY4OjpWODo6QWRqdXN0QW1vdW50T2ZFeHRl
cm5hbEFsbG9jYXRlZE1lbW9yeShidWZmZXItPmJ5dGVMZW5ndGgoKSk7CiAgICAgLy8gVHJhbnNm
b3JtIHRoZSBob2xkZXIgaW50byBhIHdyYXBwZXIgb2JqZWN0IGZvciB0aGUgYXJyYXkuCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERP
TVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGJ1ZmZlci5yZWxlYXNlKCksICZp
bmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3Nv
Y2lhdGVPYmplY3RXaXRoV3JhcHBlcihidWZmZXIucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwg
YXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAg
IHJldHVybiB3cmFwcGVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IDgzMjFjZGE0
NWEzODZiMWM2YzBiNDk5MzYyYzA4OGY0NzUyODU1ZWYuLmVhYjY4NGMyNWY5OTc3MDBiOWIwNzRm
MmFlYmQ0OWNiZTllMmY0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCkBAIC01NSw4ICs1NSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwQXJyYXlCdWZmZXJWaWV3KGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MsIFdyYXBwZXJUeXBlCiAgICAgaWYgKGhhc0luZGV4ZXIpCiAgICAgICAg
IGFyZ3MuSG9sZGVyKCktPlNldEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YShh
cnJheS5nZXQoKS0+YmFzZUFkZHJlc3MoKSwgYXJyYXlUeXBlLCBhcnJheS5nZXQoKS0+bGVuZ3Ro
KCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3
cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Ci0gICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBl
bmRlbnQoKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFy
cmF5LnJlbGVhc2UoKSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJD
b25maWd1cmF0aW9uOjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAg
LTIyNSw4ICsyMjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJh
eShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIH0KIAogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoYXJyYXkucmVsZWFzZSgpLCB0eXBlLCB3cmFwcGVyLCBhcmdz
LkdldElzb2xhdGUoKSk7Ci0gICAgd3JhcHBlckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGFycmF5LnJlbGVhc2Uo
KSwgdHlwZSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9u
OjpJbmRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0NvbnRleHRDdXN0b20u
Y3BwCmluZGV4IDk4ZDIyNWViMGVjMzBjYjk1MmIzM2Q5Y2ZkMzUyNjFlZTA3NDdlMjAuLmIxMzA0
OTY1NWRiMzFjM2Y1MWY1ZmFhNGVjNjUzNzljZWUyYmIzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQ29udGV4dEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9Db250ZXh0Q3VzdG9tLmNw
cApAQCAtNzMsNyArNzMsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhBdWRpb0NvbnRleHQ6
OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZQogICAgIAogICAgIC8v
IFRyYW5zZm9ybSB0aGUgaG9sZGVyIGludG8gYSB3cmFwcGVyIG9iamVjdCBmb3IgdGhlIGF1ZGlv
IGNvbnRleHQuCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xk
ZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKGF1ZGlv
Q29udGV4dC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7Cisg
ICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihhdWRpb0NvbnRleHQu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25m
aWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIAogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURh
dGFDdXN0b20uY3BwCmluZGV4IDA1NDUzODQ3NmNiNzZiNzU2MTg1NGVhYTkxMTYyOTY1MTNiNTJj
ODMuLjM5YTNkMTE1ZDRhZDBhMjA3MTRkN2JjYmMzMjgxNzdiYWZmNGMyNDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1EYXRhQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1
c3RvbS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NRm9y
bURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBS
ZWZQdHI8RE9NRm9ybURhdGE+IGRvbUZvcm1EYXRhID0gRE9NRm9ybURhdGE6OmNyZWF0ZShmb3Jt
KTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7
Ci0gICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkb21Gb3JtRGF0
YS5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhE
T01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkb21Gb3JtRGF0YS5yZWxlYXNl
KCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRp
b246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAppbmRl
eCA3YmQ3YTkxZjY4M2VmZTZiMWQyODE3NDNlNDI5NTkwOGRlMDY4M2UzLi42MjMzY2VjODYxOTYz
OTM1YzIwODQ0NTAxNGViODNjODBjM2VjMGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCkBAIC0zOSw3ICszOSw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpjb25zdHJ1Y3RvckNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIC8vICduZXcgRGF0YVZpZXcoKScg
YW5kIHRoZSBjYWxsIHVzZWQgdG8gY29uc3RydWN0IHRoZSBjYWNoZWQgRGF0YVZpZXcgb2JqZWN0
LgogICAgICAgICBSZWZQdHI8RGF0YVZpZXc+IGRhdGFWaWV3ID0gRGF0YVZpZXc6OmNyZWF0ZSgw
KTsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIo
KTsKLSAgICAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihkYXRh
Vmlldy5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAg
ICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoZGF0YVZpZXcucmVs
ZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1
cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAgICAg
aWYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8ICFWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdz
WzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9y
LmNwcAppbmRleCAzYjUzYmI5MGRjZTVmODFhMWYwZTM3ODk4NjFkYmViMTVhYTk1MjBmLi41MDI2
YWRmMmFhOWMyODEzZmZmODc4ODUxMDA3ZThmZTc4NzM4N2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmcKIAogICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZUZvckpTQ29uc3RydWN0b3IoZG9jdW1lbnQsIG9wdGlvbmFsV2lkdGgsIG9w
dGlvbmFsSGVpZ2h0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdz
LkhvbGRlcigpOwotICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIo
aW1hZ2UucmVsZWFzZSgpLCAmVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OmluZm8sIHdy
YXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9i
amVjdFdpdGhXcmFwcGVyKGltYWdlLnJlbGVhc2UoKSwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0
cnVjdG9yOjppbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSwgV3JhcHBlckNvbmZpZ3Vy
YXRpb246OkRlcGVuZGVudCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnRlbnRDdXN0b20uY3BwCmluZGV4
IGFiNjQ2N2VjZDE5ODgxYTZkODVkOTIyZGI3OWI3OGZiNTQ4ZWIzYTQuLmE4NjcwNjI3ZDRhOTgw
MDRlZThlMTQ5ZDU1ZTlkYzUzODFlYWQ3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEludGVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SW50ZW50Q3VzdG9tLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYQogICAgICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlv
bihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7Ci0gICAgICAgIFY4RE9NV3JhcHBlcjo6YXNzb2Np
YXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdz
LkdldElzb2xhdGUoKSk7CisgICAgICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0
aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUo
KSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CiAgICAgICAgIHJldHVybiB3cmFw
cGVyOwogICAgIH0KIApAQCAtODAsNyArODAsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJ
bnRlbnQ6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYQog
ICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoaW1wbC5yZWxlYXNlKCks
ICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjph
c3NvY2lhdGVPYmplY3RXaXRoV3JhcHBlcihpbXBsLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIs
IGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAg
ICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwCmluZGV4IDMzYTBh
MjM0ZDlhMTYzMzM0NmYwOWFjNjI5NTFjZDllNTY5MWZmZjUuLjkxMzNhZmE1YTc2OGU0NTFmYmY1
NDY0NjYyODAxMTZjNjc4YzM2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE1lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlQ2hhbm5lbEN1c3RvbS5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVzc2FnZUNoYW5uZWw6OmNvbnN0cnVj
dG9yQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3UKICAgICBWOERPTVdyYXBwZXI6OnNldE5h
bWVkSGlkZGVuUmVmZXJlbmNlKHdyYXBwZXIsICJwb3J0MSIsIHRvVjgob2JqLT5wb3J0MSgpLCBh
cmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSkpOwogICAgIFY4RE9NV3JhcHBlcjo6c2V0
TmFtZWRIaWRkZW5SZWZlcmVuY2Uod3JhcHBlciwgInBvcnQyIiwgdG9WOChvYmotPnBvcnQyKCks
IGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSk7CiAKLSAgICBWOERPTVdyYXBwZXI6
OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9iai5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihvYmoucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRl
KCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVy
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IDk3N2JjYjM4ZjZkMDNjMjU2
YzQwMjQwNmNiYzhhMWRhMDRmZmU1OGEuLjU4OGU5MTEyN2ViYTI2NTQyYzJhNWJlZTc0ODFiNmMx
MWM5NTY3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC01Niw3ICs1Niw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyCiAgICAgUmVmUHRyPE11dGF0aW9uQ2FsbGJhY2s+IGNh
bGxiYWNrID0gVjhNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUoYXJnLCBjb250ZXh0LCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+IG9ic2Vy
dmVyID0gTXV0YXRpb25PYnNlcnZlcjo6Y3JlYXRlKGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKLSAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9ic2VydmVyLnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBw
ZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9ic2VydmVyLnJlbGVhc2UoKSwgJmluZm8s
IHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5k
ZW50KTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDdXN0b20uY3BwCmluZGV4IDNm
MTBkZTQ1ZWU5M2I4ZTI5NDY5ODE0ZTY3YWVkZjNlNDRiOTMzYmYuLmRlY2Y3NmNiNTZkMzdhODUx
ZmM1ODY1MjRhNDY2MTRjYWM1MDdlOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYktpdFBvaW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViS2l0UG9pbnQ6OmNvbnN0cnVjdG9yQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW4KICAgICB9CiAgICAgUmVmUHRyPFdlYktpdFBv
aW50PiBwb2ludCA9IFdlYktpdFBvaW50OjpjcmVhdGUoeCwgeSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKLSAgICBWOERPTVdyYXBwZXI6OmFz
c29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKHBvaW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKHBvaW50LnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0
ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKICAgICByZXR1cm4gd3JhcHBl
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDk1ZGMzNjNhMmExNDNjYTU0NDcz
YjY5MzQwOWE2YTRkMTk0NGU2YTQuLjQyMzdmOWM2NGY1NzZhNDFhODY0NWE3MTVlYmRkZDA1NDU5
MGFkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhN
TEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3UKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0dHBSZXF1
ZXN0ID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBzZWN1cml0eU9yaWdpbik7CiAK
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwotICAg
IFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoeG1sSHR0cFJlcXVlc3Qu
cmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9N
V3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0V2l0aFdyYXBwZXIoeG1sSHR0cFJlcXVlc3QucmVsZWFz
ZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0
aW9uOjpEZXBlbmRlbnQpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>