<?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>92596</bug_id>
          
          <creation_ts>2012-07-29 13:37:58 -0700</creation_ts>
          <short_desc>[Chromium] Refactor CCTextureUpdater into CCTextureUpdater and CCTextureUpdateController.</short_desc>
          <delta_ts>2012-08-06 10:59:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</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>
          
          <blocked>84281</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>681585</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-29 13:37:58 -0700</bug_when>
    <thetext>CCTextureUpdater class so that more complicated texture upload logic that uses timers can be added without making LayerRendererChromium initialization too complicated or exposing inappropriate interfaces to the main thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681587</commentid>
    <comment_count>1</comment_count>
      <attachid>155181</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-29 13:49:54 -0700</bug_when>
    <thetext>Created attachment 155181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682157</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-30 10:34:34 -0700</bug_when>
    <thetext>170kb is unmanagable.  Can you stage this into smaller patches somehow, or perhaps don&apos;t rename CCTextureUpdater -&gt; CCTextureUpdaterQueue (the new name doesn&apos;t seem any better to me at first glance).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682204</commentid>
    <comment_count>3</comment_count>
      <attachid>155181</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-30 11:09:47 -0700</bug_when>
    <thetext>Comment on attachment 155181
Patch

This is really nice. Thanks David.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682212</commentid>
    <comment_count>4</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-07-30 11:21:30 -0700</bug_when>
    <thetext>Could we maybe reduce the patch size, would it be possible to introducing the new classes first but not integrated into the rest of the code? Then as a followup, do the refactoring to use the new classes?

Alternatively, if we try the poroposal by james, can we eventually rename it to a queue? It really is a queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682269</commentid>
    <comment_count>5</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-30 12:08:59 -0700</bug_when>
    <thetext>I agree, the patch is not very manageable at the current size. I think moving the s/CCTextureUpdater/CCTextureUpdateQueue/ change into a separate patch as jamesr suggested will make things much better. I&apos;ll work on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682298</commentid>
    <comment_count>6</comment_count>
      <attachid>155341</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-30 12:48:00 -0700</bug_when>
    <thetext>Created attachment 155341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682300</commentid>
    <comment_count>7</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-30 12:51:50 -0700</bug_when>
    <thetext>New patch doesn&apos;t include the CCTextureUpdater -&gt; CCTextureUpdateQueue change. The size of the patch is still pretty high but most of it is just from moving CCTextureUpdaterTest.cpp code into CCTextureUpdateControllerTest.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682477</commentid>
    <comment_count>8</comment_count>
      <attachid>155341</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-07-30 15:44:03 -0700</bug_when>
    <thetext>Comment on attachment 155341
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:41
&gt; +    struct Parameters {

&quot;parameters&quot; is a pretty crappy name and I&apos;m not sure it&apos;s necessary for a function that takes just 3 arguments. What&apos;s the motivation - do you plan to expand this to take more parameters or something like that?

&gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:49
&gt; +        unsigned m_sourceTexture;
&gt; +        unsigned m_destTexture;
&gt; +        IntSize m_size;

If you keep this struct, don&apos;t use the m_ prefix for public members - just &apos;sourceTexture&apos;, &apos;destTexture&apos;, &apos;size&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683098</commentid>
    <comment_count>9</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-31 08:24:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 155341 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155341&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:41
&gt; &gt; +    struct Parameters {
&gt; 
&gt; &quot;parameters&quot; is a pretty crappy name and I&apos;m not sure it&apos;s necessary for a function that takes just 3 arguments. What&apos;s the motivation - do you plan to expand this to take more parameters or something like that?

I think it makes the CCTextureUpdateQueue (CCTextureUpdater in current patch) interface a bit nicer to work with:

class CCTextureUpdateQueue {
  void appendUpload(TextureUploader::Parameters);
  TextureUploader::Parameters takeFirstUpload();

  void appendCopy(TextureCopier::Parameters);
  TextureCopier::Parameters takeFirstCopy();
};

and we can write code similar to this:

while (m_updateQueue.copySize())
    m_textureCopier.copyTexture(m_updateQueue.takeFirstCopy());

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:49
&gt; &gt; +        unsigned m_sourceTexture;
&gt; &gt; +        unsigned m_destTexture;
&gt; &gt; +        IntSize m_size;
&gt; 
&gt; If you keep this struct, don&apos;t use the m_ prefix for public members - just &apos;sourceTexture&apos;, &apos;destTexture&apos;, &apos;size&apos;.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683181</commentid>
    <comment_count>10</comment_count>
      <attachid>155564</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-07-31 09:19:11 -0700</bug_when>
    <thetext>Created attachment 155564
Patch

Remove m_ from struct members and cleanup CCTextureUpdater.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687061</commentid>
    <comment_count>11</comment_count>
      <attachid>155564</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-08-03 12:53:16 -0700</bug_when>
    <thetext>Comment on attachment 155564
Patch

I like this. Thanks David.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687199</commentid>
    <comment_count>12</comment_count>
      <attachid>155564</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-03 15:33:53 -0700</bug_when>
    <thetext>Comment on attachment 155564
Patch

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

Looks good in general.  If you could rebase this and address a few minor comments, I think this is good to go.

&gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:42
&gt; +        Parameters(unsigned _sourceTexture, unsigned _destTexture, IntSize _size)

You don&apos;t actually need the underscores here; constructor parameter names can match member names and C++ will do the right thing.  Also, since it&apos;s a POD struct, you could just initialize with {} syntax and drop this needless constructor entirely.  Same with the other Parameters struct.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:517
&gt; +    OwnPtr&lt;CCTextureUpdater&gt; updater = adoptPtr(new CCTextureUpdater);

Why does this need to be heap allocated in beginFrame? Can you make it a stack variable?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:548
&gt; +void CCThreadProxy::beginFrameCompleteOnImplThread(CCCompletionEvent* completion, PassOwnPtr&lt;CCTextureUpdater&gt; updater)

Please don&apos;t have a PassOwnPtr as a function arg unless there&apos;s an ownership transfer.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:147
&gt; +    void textureUpdateOnImplThread();

?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688193</commentid>
    <comment_count>13</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-08-06 09:28:23 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 155564 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=155564&amp;action=review
&gt; 
&gt; Looks good in general.  If you could rebase this and address a few minor comments, I think this is good to go.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/TextureCopier.h:42
&gt; &gt; +        Parameters(unsigned _sourceTexture, unsigned _destTexture, IntSize _size)
&gt; 
&gt; You don&apos;t actually need the underscores here; constructor parameter names can match member names and C++ will do the right thing.  Also, since it&apos;s a POD struct, you could just initialize with {} syntax and drop this needless constructor entirely.  Same with the other Parameters struct.

ok, added the constructors so I wouldn&apos;t need temporary variables but I don&apos;t mind initializing using {} syntax if you prefer that. I&apos;ll fix this.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:517
&gt; &gt; +    OwnPtr&lt;CCTextureUpdater&gt; updater = adoptPtr(new CCTextureUpdater);
&gt; 
&gt; Why does this need to be heap allocated in beginFrame? Can you make it a stack variable?

I think it&apos;s more appropriate to pass the ownership of the updater to the impl thread rather than doing a deep copy.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:548
&gt; &gt; +void CCThreadProxy::beginFrameCompleteOnImplThread(CCCompletionEvent* completion, PassOwnPtr&lt;CCTextureUpdater&gt; updater)
&gt; 
&gt; Please don&apos;t have a PassOwnPtr as a function arg unless there&apos;s an ownership transfer.

there&apos;s an ownership transfer taking place here.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.h:147
&gt; &gt; +    void textureUpdateOnImplThread();
&gt; 
&gt; ?

oops, that should not be there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688195</commentid>
    <comment_count>14</comment_count>
      <attachid>156706</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-08-06 09:28:37 -0700</bug_when>
    <thetext>Created attachment 156706
Patch

Make CCTextureUpdater noncopyable, remove struct constructors and remove CCThreadProxy::textureUpdateOnImplThread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688202</commentid>
    <comment_count>15</comment_count>
      <attachid>156706</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 09:34:52 -0700</bug_when>
    <thetext>Comment on attachment 156706
Patch

R=me.  Sorry about misreading the ownership semantics in the last patch.  You&apos;re totally right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688279</commentid>
    <comment_count>16</comment_count>
      <attachid>156706</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 10:59:21 -0700</bug_when>
    <thetext>Comment on attachment 156706
Patch

Clearing flags on attachment: 156706

Committed r124784: &lt;http://trac.webkit.org/changeset/124784&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688280</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 10:59:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155181</attachid>
            <date>2012-07-29 13:49:54 -0700</date>
            <delta_ts>2012-07-30 12:47:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92596-20120729164937.patch</filename>
            <type>text/plain</type>
            <size>173492</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNzYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJlYmY2NGJmYThmNzU4
MTdjNmEyNjVmMjIxYWIzNWZkZjAyMTczYy4uOWFjNDkwYjUwYTFjYTJkZmIyZmRkM2MxYmM1MzU3
YzkzZTExZjg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAxMi0wNy0yOSAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
UmVmYWN0b3IgQ0NUZXh0dXJlVXBkYXRlciBpbnRvIENDVGV4dHVyZVVwZGF0ZVF1ZXVlIGFuZCBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTI1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkuCisK
KyAgICAgICAgVGhlIENDVGV4dHVyZVVwZGF0ZVF1ZXVlIGludGVyZmFjZSBpcyB1c2VkIGJ5IHRo
ZSBtYWluIHRocmVhZCB0byBxdWV1ZQorICAgICAgICB0ZXh0dXJlIHVwZGF0ZXMuIFRoZSBDQ1Rl
eHR1cmVVcGRhdGVDb250cm9sbGVyIGNvbnN0cnVjdG9yIHRha2VzIGEKKyAgICAgICAgQ0NUZXh0
dXJlVXBkYXRlUXVldWUgYW5kIGNvbnRhaW5zIHRoZSBsb2dpYyByZXF1aXJlZCB0byBwZXJmb3Jt
IHRleHR1cmUKKyAgICAgICAgdXBsb2FkcyBhbmQgdGV4dHVyZSBjb3BpZXMuIFRoaXMgY2xhc3Mg
aXMgb25seSB1c2VkIGJ5IHRoZSBpbXBsIHRocmVhZC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKENvbnRlbnRMYXllckNo
cm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp1cGRh
dGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJv
bWl1bS5oOgorICAgICAgICAoSW1hZ2VMYXllckNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnVwZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZVBhcnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVt
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcm9sbGJhckxheWVyQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZUNvcGllcjo6UGFyYW1ldGVyczo6UGFyYW1ldGVy
cyk6CisgICAgICAgIChQYXJhbWV0ZXJzKToKKyAgICAgICAgKFRleHR1cmVDb3BpZXIpOgorICAg
ICAgICAoQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoVGV4dHVyZUxh
eWVyQ2hyb21pdW1DbGllbnQpOgorICAgICAgICAoVGV4dHVyZUxheWVyQ2hyb21pdW0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzOjpQYXJhbWV0ZXJzKToK
KyAgICAgICAgKFBhcmFtZXRlcnMpOgorICAgICAgICAoVGV4dHVyZVVwbG9hZGVyKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRU
ZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRocm90dGxlZFRleHR1cmVVcGxvYWRlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGlsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50UmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
Lmg6CisgICAgICAgIChUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50TWFza3NGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ0NMYXllclRyZWVIb3N0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNDU2luZ2xlVGhyZWFkUHJveHk6OmNvbW1pdEFuZENvbXBvc2l0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OkNDVGV4dHVyZVVw
ZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlcjo6fkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
ZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6aGFzTW9yZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlTW9yZVRleHR1cmVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZU1vcmVUZXh0dXJl
c1NpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZUNvbnRyb2xsZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuY3BwOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZVF1ZXVlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6fkNDVGV4dHVyZVVwZGF0ZVF1ZXVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjphcHBlbmRGdWxsVXBsb2FkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjphcHBlbmRQYXJ0aWFsVXBsb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjphcHBlbmRDb3B5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjp0YWtlRmlyc3RGdWxsVXBsb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjp0YWtlRmlyc3RQYXJ0
aWFsVXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjp0YWtl
Rmlyc3RDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjpoYXNN
b3JlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlUXVldWUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlUXVldWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUZXh0dXJlVXBkYXRlUXVldWU6OmZ1bGxVcGxvYWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZVF1ZXVlOjpwYXJ0aWFsVXBsb2FkU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6Y29weVNpemUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFt
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRh
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVw
ZGF0ZU1vcmVSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQ29tbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6Om1h
eFBhcnRpYWxUZXh0dXJlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGU6OkJlZ2luRnJh
bWVBbmRDb21taXRTdGF0ZSk6CisgICAgICAgIChCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUpOgor
ICAgICAgICAoQ0NUaHJlYWRQcm94eSk6CisKIDIwMTItMDctMjYgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW50cm9kdWNl
IGdlbmVyaWMgTGl2ZUxvY2F0aW9uLCBtYWtlIFNjcmlwdC5Mb2NhdGlvbiBpbmhlcml0IGl0Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBkZjZiYzM1ZTFkZWVlYjQxMzQ3ZjIwOThlYzkx
YmRhZmVmMWNlYjExLi5iYzhiNjIwNjBmZmJhN2VmY2U2NTRlYWI5MzZlNDllOWI4Y2EyNTk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA3LTI5ICBE
YXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVt
XSBSZWZhY3RvciBDQ1RleHR1cmVVcGRhdGVyIGludG8gQ0NUZXh0dXJlVXBkYXRlUXVldWUgYW5k
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dHVyZVVwZGF0ZXJJ
bXBsOjpXZWJUZXh0dXJlVXBkYXRlckltcGwpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJPY2Ns
dXNpb246OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RMYXll
ck9jY2x1c2lvbldpdGhGaWx0ZXJzOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0TWFueVN1cmZhY2VzOjpiZWdpblRlc3QpOgorICAgICAgICAqIHRlc3RzL0ND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwLgorICAgICAgICAqIHRl
c3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0
Q29tbW9uLmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGUpOgorICAgICAgICAqIHRlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaDoKKyAg
ICAgICAgKEZha2VUaWxlZExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZh
a2VUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFr
ZVRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZSk6CisgICAgICAgICogdGVzdHMvQ2FudmFz
MkRMYXllckJyaWRnZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1RleHR1cmVDb3BpZXJUZXN0
LmNwcDoKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwOgorCiAyMDEyLTA3LTI1ICBEYXZpZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFdlYktpdCBBUEkgaW50ZXJmYWNlcyBmb3IgInVw
Z3JhZGVuZWVkZWQiIG1ldGhvZHMgYW5kIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDc1ZTU0
MWI3OGIzMmJkNGFmNzU4YWMwMTRmMjJiODAwOWNkNWQ3NGEuLjRmMTQzNDI0OWZjMTIwZTc3ZDNj
YTM5NDdiNDUwYTM5ODhkNzJiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgzNzMsOCArODM3Mywx
MCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZURyYXdRdWFkLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZUxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oJywKLSAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCcsCi0gICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVD
b250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5jcHAnLAorICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDAz
ZDM0M2U4MGRlZDBiYjAwZWEyMTA1NzllMmE3NTNmZGEyZTdjY2UuLjFmOWFkMjE2ZTkxODNlYjYx
ZDkxNDYzYjM1ODVjMjU0MGM3ZTJkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6c2V0VGV4
dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImIHByaW8KICAgICBUaWxl
ZExheWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKHByaW9yaXR5Q2FsYyk7CiB9CiAK
LXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbiwgQ0NSZW5kZXJpbmdTdGF0
cyYgc3RhdHMpCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBk
YXRlUXVldWUmIHF1ZXVlLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbiwgQ0NS
ZW5kZXJpbmdTdGF0cyYgc3RhdHMpCiB7CiAgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRl
ZCgpOwogCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBk
YXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHIKICAgICBp
ZiAoZHJhd3NDb250ZW50KCkpCiAgICAgICAgIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRS
ZWN0KCk7CiAKLSAgICB1cGRhdGVDb250ZW50UmVjdCh1cGRhdGVyLCBjb250ZW50UmVjdCwgb2Nj
bHVzaW9uLCBzdGF0cyk7CisgICAgdXBkYXRlQ29udGVudFJlY3QocXVldWUsIGNvbnRlbnRSZWN0
LCBvY2NsdXNpb24sIHN0YXRzKTsKICAgICBtX25lZWRzRGlzcGxheSA9IGZhbHNlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250
ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBmODM5OTM4OTIwNzY1MTcwZWZlYTRh
MjFjOTRiNDk3YmY5YWY4ZDgzLi42YzA2OGIzMGNlZWIxMTBhMWViNWE3NDZhYjc5YTQ4ZjdiMDE2
MDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0dXJlUHJpb3JpdGllcyhjb25zdCBDQ1ByaW9yaXR5
Q2FsY3VsYXRvciYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJl
VXBkYXRlciYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgYm9vbCBuZWVkTW9yZVVwZGF0ZXMoKSBPVkVSUklERTsKIAogICAgIHZpcnR1
YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcAppbmRleCBkNDdmMTRiMWUzMDVkNTA4NjY1ODNhZDk0YzVjZDZlYTNjMDk1ZmFjLi41
MDczZDFjYzhhMTY1NTdkNzQzYTE2NzlkMGFjMDgxZmFlNGJhODJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImIHBy
aW9yaQogICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMocHJpb3Jp
dHlDYWxjKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1c2lvbiwgQ0NS
ZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKEND
VGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2Ns
dXNpb24sIENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQogewogICAgIGNyZWF0ZVRleHR1cmVVcGRh
dGVySWZOZWVkZWQoKTsKICAgICBpZiAobV9uZWVkc0Rpc3BsYXkpIHsKQEAgLTE1MSw3ICsxNTEs
NyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVw
ZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJhYwogICAgICAgICBtX25lZWRzRGlzcGxheSA9IGZh
bHNlOwogICAgIH0KIAotICAgIHVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVDb250
ZW50UmVjdCgpLCBvY2NsdXNpb24sIHN0YXRzKTsKKyAgICB1cGRhdGVDb250ZW50UmVjdChxdWV1
ZSwgdmlzaWJsZUNvbnRlbnRSZWN0KCksIG9jY2x1c2lvbiwgc3RhdHMpOwogfQogCiB2b2lkIElt
YWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDA0NDRjZDU3NDgzYTExYWFjNThhYWNjZDM4ZDM2ZmFh
OTE2YzliNjAuLmI1MGU1ZTcxNTcxY2MyYjJmNWQyMTZmODViMjdiZDA2MDY5YzVlNjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXIqLCBDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2b2lkIHNldEJp
dG1hcChjb25zdCBTa0JpdG1hcCYgaW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI3Y2U4
ZjEwYWIwNjgxNzRlM2IxMTliYzZhNzg5NWIzNDQ1ODc2ZTguLjZmNTQ1ODMxMzg1YmU3NDI3YTY3
NjJkZjFhYmRhZTU3OTdlMTg4MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTU5LDcgKzU5LDcg
QEAgY2xhc3MgQ0NBY3RpdmVBbmltYXRpb247CiBjbGFzcyBDQ0xheWVyQW5pbWF0aW9uRGVsZWdh
dGU7CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNsYXNzIEND
VGV4dHVyZVVwZGF0ZXI7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVRdWV1ZTsKIGNsYXNzIFNjcm9s
bGJhckxheWVyQ2hyb21pdW07CiBzdHJ1Y3QgQ0NBbmltYXRpb25FdmVudDsKIHN0cnVjdCBDQ1Jl
bmRlcmluZ1N0YXRzOwpAQCAtMjEyLDcgKzIxMiw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNl
IG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFz
c2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2lz
RHJhd2FibGU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBDQ1JlbmRlcmluZ1N0YXRzJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZE1v
cmVVcGRhdGVzKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNr
KGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBlYmQ2MTAyMWQ0ZGYwNTA4
ZWFiNDE3NzUyOWM4ZjFjMWRhNDc1NzA0Li40ZjBlYmMzMDAwMDNkNmRjN2RmNTgxZGE3NGFjNjk2
ZTMwMTYwMzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEy
NSw3ICsxMjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgpIE9WRVJSSURF
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJS
SURFIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJREUgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRS
ZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpIE9WRVJSSURFIHsgdGV4dHVy
ZS0+dXBkYXRlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIsIFBhcmFtZXRlcnMgdXBsb2FkKSBPVkVSUklERSB7IHVwbG9hZC5tX3RleHR1
cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgdXBsb2FkLm1fc291cmNlUmVjdCwgdXBs
b2FkLm1fZGVzdFJlY3QpOyB9CiAKIHByb3RlY3RlZDoKICAgICBVbnRocm90dGxlZFRleHR1cmVV
cGxvYWRlcigpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcAppbmRl
eCAwNmM2MDc5ZmU1ZWIyZjc0YTQzOTk3NzBlMmM2NGE4ZDVhMmJhMGVhLi4xZGFmNWU3NDM0MzVk
NzY0MzVmNjdhOGRiMGVkMmFhZTQyMTE0ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXll
ckNocm9taXVtLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0yMjYsNyArMjI2LDcgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVt
OjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKICAgICAgICAgbV90aHVtYiA9IG1fdGh1
bWJVcGRhdGVyLT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJl
TWFuYWdlcigpKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0
KExheWVyVGV4dHVyZVVwZGF0ZXIqIHBhaW50ZXIsIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHJlY3QsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0
ZXIsIENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQordm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVt
Ojp1cGRhdGVQYXJ0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHBhaW50ZXIsIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHJlY3QsIENDVGV4dHVyZVVw
ZGF0ZVF1ZXVlJiBxdWV1ZSwgQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCiB7CiAgICAgLy8gU2tp
cCBwYWludGluZyBhbmQgdXBsb2FkaW5nIGlmIHRoZXJlIGFyZSBubyBpbnZhbGlkYXRpb25zIGFu
ZAogICAgIC8vIHdlIGFscmVhZHkgaGF2ZSB2YWxpZCB0ZXh0dXJlIGRhdGEuCkBAIC0yNDYsNyAr
MjQ2LDcgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KExheWVyVGV4
dHVyZVVwZGF0ZXIqIHBhaW50ZXIsIExheWVyVGV4dHUKICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVj
dChyZWN0LCBzdGF0cyk7CiAKICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KCksIHJlY3Qu
c2l6ZSgpKTsKLSAgICB1cGRhdGVyLmFwcGVuZEZ1bGxVcGRhdGUodGV4dHVyZSwgcmVjdCwgZGVz
dFJlY3QpOworICAgIHF1ZXVlLmFwcGVuZEZ1bGxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJh
bWV0ZXJzKHRleHR1cmUsIHJlY3QsIGRlc3RSZWN0KSk7CiB9CiAKIApAQCAtMjczLDcgKzI3Myw3
IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMoY29u
c3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJMYXll
ckNocm9taXVtOjp1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpCit2b2lkIFNjcm9sbGJhckxh
eWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgcXVldWUsIGNvbnN0IEND
T2NjbHVzaW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQogewogICAgIGlmIChj
b250ZW50Qm91bmRzKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yODIsMTQgKzI4
MiwxNCBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZShDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyLCBjb25zdCBDQ09jY2x1c2lvbgogCiAgICAgSW50UG9pbnQgc2Nyb2xsYmFy
T3JpZ2luKG1fc2Nyb2xsYmFyLT54KCksIG1fc2Nyb2xsYmFyLT55KCkpOwogICAgIEludFJlY3Qg
Y29udGVudFJlY3Qoc2Nyb2xsYmFyT3JpZ2luLCBjb250ZW50Qm91bmRzKCkpOwotICAgIHVwZGF0
ZVBhcnQobV9iYWNrVHJhY2tVcGRhdGVyLmdldCgpLCBtX2JhY2tUcmFjay5nZXQoKSwgY29udGVu
dFJlY3QsIHVwZGF0ZXIsIHN0YXRzKTsKKyAgICB1cGRhdGVQYXJ0KG1fYmFja1RyYWNrVXBkYXRl
ci5nZXQoKSwgbV9iYWNrVHJhY2suZ2V0KCksIGNvbnRlbnRSZWN0LCBxdWV1ZSwgc3RhdHMpOwog
ICAgIGlmIChtX2ZvcmVUcmFjayAmJiBtX2ZvcmVUcmFja1VwZGF0ZXIpCi0gICAgICAgIHVwZGF0
ZVBhcnQobV9mb3JlVHJhY2tVcGRhdGVyLmdldCgpLCBtX2ZvcmVUcmFjay5nZXQoKSwgY29udGVu
dFJlY3QsIHVwZGF0ZXIsIHN0YXRzKTsKKyAgICAgICAgdXBkYXRlUGFydChtX2ZvcmVUcmFja1Vw
ZGF0ZXIuZ2V0KCksIG1fZm9yZVRyYWNrLmdldCgpLCBjb250ZW50UmVjdCwgcXVldWUsIHN0YXRz
KTsKIAogICAgIC8vIENvbnNpZGVyIHRoZSB0aHVtYiB0byBiZSBhdCB0aGUgb3JpZ2luIHdoZW4g
cGFpbnRpbmcuCiAgICAgSW50UmVjdCB0aHVtYlJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIHRo
ZW1lKCktPnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSkuc2l6ZSgpKTsKICAgICBpZiAoIXRo
dW1iUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHVwZGF0ZVBhcnQobV90aHVtYlVwZGF0ZXIuZ2V0
KCksIG1fdGh1bWIuZ2V0KCksIHRodW1iUmVjdCwgdXBkYXRlciwgc3RhdHMpOworICAgICAgICB1
cGRhdGVQYXJ0KG1fdGh1bWJVcGRhdGVyLmdldCgpLCBtX3RodW1iLmdldCgpLCB0aHVtYlJlY3Qs
IHF1ZXVlLCBzdGF0cyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0u
aAppbmRleCAxN2E3YWNlODIxMGU1ZTE4NDI1MDkwOWQzMzJmYTcyZWMxNTFiOWQxLi45MWIzYWI1
ZGU2YWY1MTM4NDA2ZTY5MzJkODNmMzJkYWE1Zjk1ZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bS5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2Nyb2xsYmFyOwogY2xhc3MgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU7Ci1jbGFzcyBD
Q1RleHR1cmVVcGRhdGVyOworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlUXVldWU7CiAKIGNsYXNzIFNj
cm9sbGJhckxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CkBA
IC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIExheWVyQ2hyb21pdW0gaW50ZXJmYWNl
CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlD
YWxjdWxhdG9yJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVV
cGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmLCBj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKSBPVkVS
UklERTsKIApAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGUqIHRoZW1lKCkgY29uc3Q7Ci0gICAgdm9pZCB1cGRhdGVQYXJ0
KExheWVyVGV4dHVyZVVwZGF0ZXIqLCBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29u
c3QgSW50UmVjdCYsIENDVGV4dHVyZVVwZGF0ZXImLCBDQ1JlbmRlcmluZ1N0YXRzJik7CisgICAg
dm9pZCB1cGRhdGVQYXJ0KExheWVyVGV4dHVyZVVwZGF0ZXIqLCBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYsIENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiwgQ0NSZW5k
ZXJpbmdTdGF0cyYpOwogICAgIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOwog
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3Bw
CmluZGV4IDBiNTk1OTdhNWVlODA5MDA3YTI0ODQxYjVkNWY3ZTlhZjljOTQ0ZmEuLjY2ZTE5MDMx
MDFiZmVhYTZhMTNkMTk0MDcxZmI2MGU3MTllNWI5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3Bw
CkBAIC02NiwxMyArNjYsMTMgQEAgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjp+QWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyKCkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxl
dGVGcmFtZWJ1ZmZlcihtX2ZibykpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cjo6Y29weVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4
dHVyZUlkLCBjb25zdCBJbnRTaXplJiBzaXplKQordm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3Bp
ZXI6OmNvcHlUZXh0dXJlKFBhcmFtZXRlcnMgcGFyYW1ldGVycykKIHsKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIlRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlIik7CiAKICAgICAvLyBOb3RlOiB0
aGlzIGNvZGUgZG9lcyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJE
IHRleHR1cmUsIGZyYW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQgZW5hYmxlLgogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUiwgbV9mYm8pKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgZGVzdFRleHR1cmVJZCwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBwYXJhbWV0ZXJzLm1fZGVzdFRleHR1cmUsIDApKTsKIAogI2lmIE9TKEFORFJPSUQpCiAg
ICAgLy8gQ2xlYXIgZGVzdGluYXRpb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiB0aWxpbmcg
R1BVcy4KQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNv
cHlUZXh0dXJlKHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGUKICAgICBHTEMo
bV9jb250ZXh0LCBtX2NvbnRleHQtPmNsZWFyKEdyYXBoaWNzQ29udGV4dDNEOjpDT0xPUl9CVUZG
RVJfQklUKSk7CiAjZW5kaWYKIAotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRl
eHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHNvdXJjZVRleHR1cmVJZCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHBhcmFtZXRlcnMubV9zb3VyY2VUZXh0dXJlKSk7CiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVCkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+dGV4UGFy
YW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfTUFHX0ZJTFRFUiwgR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1QpKTsKIApAQCAt
OTYsNyArOTYsNyBAQCB2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUo
dW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZQogICAgIEdMQyhtX2NvbnRleHQs
IG1fY29udGV4dC0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uQXR0cmlidXRlKSk7
CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpBUlJBWV9CVUZGRVIsIDApKTsKIAotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+
dmlld3BvcnQoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBwYXJhbWV0ZXJzLm1fc2l6ZS53aWR0
aCgpLCBwYXJhbWV0ZXJzLm1fc2l6ZS5oZWlnaHQoKSkpOwogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQzRDo6QkxFTkQpKTsKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPmRyYXdBcnJheXMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xF
X0ZBTiwgMCwgNCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKaW5kZXggYjM4NWY0NWU1NDNhNzQzNmU1
NTc4MDMyMmJhMWQyYjE0ZTI3N2FlNS4uNzk5ZWY0MzQyNDQxZGI4MjBmMWEzNjQxNjE5YzcxMWZl
NTg2ZTlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZUNvcGllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaApAQCAtMzgsMTAgKzM4LDIwIEBAIGNsYXNzIElu
dFNpemU7CiAKIGNsYXNzIFRleHR1cmVDb3BpZXIgewogcHVibGljOgotICAgIC8vIENvcHkgdGhl
IGJhc2UgbGV2ZWwgY29udGVudHMgb2YgfHNvdXJjZVRleHR1cmVJZHwgdG8gfGRlc3RUZXh0dXJl
SWR8LiBCb3RoIHRleHR1cmUgb2JqZWN0cworICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsKKyAgICAg
ICAgUGFyYW1ldGVycyh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0VGV4dHVy
ZSwgSW50U2l6ZSBzaXplKQorICAgICAgICAgICAgOiBtX3NvdXJjZVRleHR1cmUoc291cmNlVGV4
dHVyZSkKKyAgICAgICAgICAgICwgbV9kZXN0VGV4dHVyZShkZXN0VGV4dHVyZSkKKyAgICAgICAg
ICAgICwgbV9zaXplKHNpemUpIHsgfQorCisgICAgICAgIHVuc2lnbmVkIG1fc291cmNlVGV4dHVy
ZTsKKyAgICAgICAgdW5zaWduZWQgbV9kZXN0VGV4dHVyZTsKKyAgICAgICAgSW50U2l6ZSBtX3Np
emU7CisgICAgfTsKKyAgICAvLyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3Vy
Y2VUZXh0dXJlfCB0byB8ZGVzdFRleHR1cmV8LiBCb3RoIHRleHR1cmUgb2JqZWN0cwogICAgIC8v
IG11c3QgYmUgY29tcGxldGUgYW5kIGhhdmUgYSBiYXNlIGxldmVsIG9mIHxzaXplfCBkaW1lbnNp
b25zLiBUaGUgY29sb3IgZm9ybWF0cyBkbyBub3QgbmVlZAotICAgIC8vIHRvIG1hdGNoLCBidXQg
fGRlc3RUZXh0dXJlSWR8IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0LgotICAgIHZpcnR1
YWwgdm9pZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRl
c3RUZXh0dXJlSWQsIGNvbnN0IEludFNpemUmKSA9IDA7CisgICAgLy8gdG8gbWF0Y2gsIGJ1dCB8
ZGVzdFRleHR1cmV8IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0LgorICAgIHZpcnR1YWwg
dm9pZCBjb3B5VGV4dHVyZShQYXJhbWV0ZXJzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNo
KCkgPSAwOwogCiBwcm90ZWN0ZWQ6CkBAIC01OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB9CiAg
ICAgdmlydHVhbCB+QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY29weVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4
dHVyZUlkLCBjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKFBh
cmFtZXRlcnMpOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOTBiYzcwZWE5NmE0MDY1OTg3ZWJj
NjEzNWVmYmJiMzg2NTQxMGIxYi4uN2Q1NzVkMzFmNjNhNTZjY2M5MDIwODEwMWIyODVhM2NjZWEz
ZDM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGV4dHVyZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVMYXllckNocm9taXVtLmNwcApAQCAtMTI5LDEwICsx
MjksMTAgQEAgYm9vbCBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QK
ICAgICByZXR1cm4gKG1fY2xpZW50IHx8IG1fdGV4dHVyZUlkKSAmJiAhbV9jb250ZXh0TG9zdCAm
JiBMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKIH0KIAotdm9pZCBUZXh0dXJlTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVz
aW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKQordm9pZCBUZXh0dXJlTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NPY2NsdXNpb25U
cmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpCiB7CiAgICAgaWYgKG1fY2xpZW50KSB7Ci0gICAg
ICAgIG1fdGV4dHVyZUlkID0gbV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXIpOworICAg
ICAgICBtX3RleHR1cmVJZCA9IG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZShxdWV1ZSk7CiAgICAg
ICAgIG1fY29udGV4dExvc3QgPSBtX2NsaWVudC0+Y29udGV4dCgpLT5nZXRHcmFwaGljc1Jlc2V0
U3RhdHVzQVJCKCkgIT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVMYXllckNocm9taXVtLmgKaW5kZXggMTNmNWNiODQ5NjM2Njc3MTkzOWM3MGRi
NTE1NmNmZWY0MzFhYmFmZi4uNGI2NzIxYmI0OGM1ZGZhOGRkMDI2NDQ3MzZkYzM4ZWJhM2M3OWNi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UZXh0dXJlTGF5ZXJDaHJvbWl1bS5oCkBAIC00MCw5ICs0MCw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50IHsKIHB1
YmxpYzoKICAgICAvLyBDYWxsZWQgdG8gcHJlcGFyZSB0aGlzIGxheWVyJ3MgdGV4dHVyZSBmb3Ig
Y29tcG9zaXRpbmcuIFRoZSBjbGllbnQgbWF5IHF1ZXVlIGEgdGV4dHVyZQotICAgIC8vIHVwbG9h
ZCBvciBjb3B5IG9uIHRoZSBDQ1RleHR1cmVVcGRhdGVyLgorICAgIC8vIHVwbG9hZCBvciBjb3B5
IG9uIHRoZSBDQ1RleHR1cmVVcGRhdGVRdWV1ZS4KICAgICAvLyBSZXR1cm5zIHRoZSB0ZXh0dXJl
IElEIHRvIGJlIHVzZWQgZm9yIGNvbXBvc2l0aW5nLgotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJl
cGFyZVRleHR1cmUoQ0NUZXh0dXJlVXBkYXRlciYpID0gMDsKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IHByZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJikgPSAwOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgY29udGV4dCB0aGF0IGlzIHByb3ZpZGluZyB0aGUgdGV4dHVyZS4gVXNlZCBmb3Ig
cmF0ZSBsaW1pdGluZyBhbmQgZGV0ZWN0aW5nIGxvc3QgY29udGV4dC4KICAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSA9IDA7CkBAIC04Nyw3ICs4Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJU
cmVlSG9zdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBj
b25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciosIENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopIE9WRVJSSURFOwogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVVcGxvYWRlci5oCmluZGV4IDkyODcwY2I1YTViZmQ5MGVhZmMyODczZDcw
Y2MwY2YxMGQxYmUxMGIuLjc1YWVhMzVkOTlhYjQ0MjliNTFjZWM2ODFkZDc4M2MyYzY1ZmVlNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rl
eHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVVcGxvYWRlci5oCkBAIC0zMSwxMiArMzEsMjMgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBUZXh0dXJlVXBsb2FkZXIgewogcHVibGljOgorICAgIHN0cnVjdCBQ
YXJhbWV0ZXJzIHsKKyAgICAgICAgUGFyYW1ldGVycyhMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiB0ZXh0dXJlLCBJbnRSZWN0IHNvdXJjZVJlY3QsIEludFJlY3QgZGVzdFJlY3QpCisgICAg
ICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgLCBtX3NvdXJjZVJlY3Qo
c291cmNlUmVjdCkKKyAgICAgICAgICAgICwgbV9kZXN0UmVjdChkZXN0UmVjdCkgeyB9CisKKyAg
ICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOworICAgICAgICBJ
bnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OworICAgIH07
CisKICAgICB2aXJ0dWFsIH5UZXh0dXJlVXBsb2FkZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgYm9v
bCBpc0J1c3koKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBsb2FkcygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2Fk
VGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgQ0NSZXNvdXJjZVByb3ZpZGVy
KiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgUGFy
YW1ldGVycykgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxv
YWRlci5jcHAKaW5kZXggMjgxZTA4ZmYwNDk4NzgxMjhhODQzMjcwOWVmZmU2OTY5MWI4MGQyZi4u
MmVhNmVhMTY1MzFjOGJkYWI2NzA2ZTRkMDZlYWMyMzhkMDA5YWYzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCkBAIC0xMjAsOSArMTIwLDkgQEAgdm9pZCBU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMoKQogICAgIG1fcGVuZGluZ1F1ZXJp
ZXMuYXBwZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7CiB9CiAKLXZvaWQgVGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwg
Y29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KQordm9pZCBU
aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVy
KiByZXNvdXJjZVByb3ZpZGVyLCBQYXJhbWV0ZXJzIHVwbG9hZCkKIHsKLSAgICB0ZXh0dXJlLT51
cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICB1
cGxvYWQubV90ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHVwbG9hZC5tX3Nv
dXJjZVJlY3QsIHVwbG9hZC5tX2Rlc3RSZWN0KTsKIH0KIAogdm9pZCBUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI6OnByb2Nlc3NRdWVyaWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyLmgKaW5kZXggZjhjNDNkYzJkNDMwMzlmMmZkMjc4Y2ZhN2M3MTdjYWEyOTBiYTRjOS4u
MzYxNDY4ZmM4MmVmNTNlZWNiYTQ4NDRjZWMyMWM0MDU2MjhiNjA2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5V
cGxvYWRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2Fk
VGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBQYXJhbWV0ZXJzKSBPVkVSUklERTsKIAogcHJp
dmF0ZToKICAgICBjbGFzcyBRdWVyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApp
bmRleCA2ODc0MGVmNTA3MzczNjFiMGQxYzYzYTI4NThlNmQ3NWY2MmVkYzM0Li5hMTkxZTczOWEx
YzUwMWFiMjNmYmQwYzZjYTUyZjAzNDViZDczYTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdN
ZXRyaWNzLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlZExheWVySW1wbC5o
IgogCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9v
bCBUaWxlZExheWVyQ2hyb21pdW06OnRpbGVOZWVkc0J1ZmZlcmVkVXBkYXRlKFVwZGF0YWJsZVRp
bGUqIHRpbGUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGlu
dCBib3R0b20sIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlciogb2NjbHVzaW9uLCBDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQg
cmlnaHQsIGludCBib3R0b20sIENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgQ0NP
Y2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24sIENDUmVuZGVyaW5nU3RhdHMmIHN0YXRzKQogewog
ICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKIApAQCAtNTA3LDkgKzUwNyw5IEBA
IHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0
LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGluCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAogICAg
ICAgICAgICAgaWYgKHRpbGUtPnBhcnRpYWxVcGRhdGUpCi0gICAgICAgICAgICAgICAgdXBkYXRl
ci5hcHBlbmRQYXJ0aWFsVXBkYXRlKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOworICAgICAgICAgICAgICAgIHF1ZXVlLmFwcGVuZFBhcnRpYWxVcGxvYWQoVGV4dHVyZVVw
bG9hZGVyOjpQYXJhbWV0ZXJzKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZEZ1bGxV
cGRhdGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAg
ICAgICAgcXVldWUuYXBwZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMo
dGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCkpOwogICAgICAgICB9CiAgICAg
fQogfQpAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpyZXNldFVw
ZGF0ZVN0YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVD
b250ZW50UmVjdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24sIENDUmVuZGVyaW5n
U3RhdHMmIHN0YXRzKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRSZWN0
KENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciogb2NjbHVzaW9uLCBDQ1JlbmRlcmluZ1N0YXRzJiBz
dGF0cykKIHsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogICAgIG1fc2tpcHNJZGxlUGFpbnQg
PSBmYWxzZTsKQEAgLTYyNSw3ICs2MjUsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29udGVudFJlY3QoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlciwgY29uc3QgSW50UgogICAg
IGlmICghY29udGVudFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIGludCBsZWZ0LCB0b3AsIHJp
Z2h0LCBib3R0b207CiAgICAgICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhj
b250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKLSAgICAgICAgdXBkYXRlVGls
ZXMoZmFsc2UsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwgb2NjbHVzaW9uLCBz
dGF0cyk7CisgICAgICAgIHVwZGF0ZVRpbGVzKGZhbHNlLCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0
b20sIHF1ZXVlLCBvY2NsdXNpb24sIHN0YXRzKTsKICAgICB9CiAKICAgICAvLyBBYm9ydCBpZiB3
ZSBoYXZlIGFscmVhZHkgcGFpbnRlZCBvciBydW4gb3V0IG9mIG1lbW9yeS4KQEAgLTY0MiwxNiAr
NjQyLDE2IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50UmVjdChDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSCiAKICAgICAvLyBJZiB0aGUgbGF5ZXIg
aXMgbm90IHZpc2libGUsIHdlIGhhdmUgbm90aGluZyB0byBleHBhbmQgZnJvbSwgc28gaW5zdGVh
ZCB3ZSBwcmVwYWludCB0aGUgb3V0ZXItbW9zdCBzZXQgb2YgdGlsZXMuCiAgICAgaWYgKGNvbnRl
bnRSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExl
ZnQsIHByZXBhaW50VG9wLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludFRvcCwgdXBkYXRlciwgMCwg
c3RhdHMpOworICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCBwcmVwYWludExlZnQsIHByZXBhaW50
VG9wLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludFRvcCwgcXVldWUsIDAsIHN0YXRzKTsKICAgICAg
ICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludEJvdHRv
bSwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIHVwZGF0ZXIsIDAsIHN0YXRzKTsKKyAg
ICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludEJvdHRvbSwgcHJl
cGFpbnRSaWdodCwgcHJlcGFpbnRCb3R0b20sIHF1ZXVlLCAwLCBzdGF0cyk7CiAgICAgICAgIGlm
IChtX2RpZFBhaW50IHx8IG1fc2tpcHNJZGxlUGFpbnQpCiAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIHByZXBhaW50TGVmdCwgcHJlcGFpbnRUb3AsIHByZXBh
aW50TGVmdCwgcHJlcGFpbnRCb3R0b20sIHVwZGF0ZXIsIDAsIHN0YXRzKTsKKyAgICAgICAgdXBk
YXRlVGlsZXModHJ1ZSwgcHJlcGFpbnRMZWZ0LCBwcmVwYWludFRvcCwgcHJlcGFpbnRMZWZ0LCBw
cmVwYWludEJvdHRvbSwgcXVldWUsIDAsIHN0YXRzKTsKICAgICAgICAgaWYgKG1fZGlkUGFpbnQg
fHwgbV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdXBkYXRl
VGlsZXModHJ1ZSwgcHJlcGFpbnRSaWdodCwgcHJlcGFpbnRUb3AsIHByZXBhaW50UmlnaHQsIHBy
ZXBhaW50Qm90dG9tLCB1cGRhdGVyLCAwLCBzdGF0cyk7CisgICAgICAgIHVwZGF0ZVRpbGVzKHRy
dWUsIHByZXBhaW50UmlnaHQsIHByZXBhaW50VG9wLCBwcmVwYWludFJpZ2h0LCBwcmVwYWludEJv
dHRvbSwgcXVldWUsIDAsIHN0YXRzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjU5
LDcgKzY1OSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50UmVjdChD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSCiAgICAgbV90aWxlci0+Y29udGVu
dFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20p
OwogCiAgICAgLy8gT3RoZXJ3aXNlLCBwcmVwYWludCBhbnl0aGluZyB0aGF0IHdhcyBvY2NsdWRl
ZCBidXQgaW5zaWRlIHRoZSBsYXllcidzIHZpc2libGUgcmVnaW9uLgotICAgIHVwZGF0ZVRpbGVz
KHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwgMCwgc3RhdHMpOworICAg
IHVwZGF0ZVRpbGVzKHRydWUsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSwgcXVldWUsIDAsIHN0
YXRzKTsKICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTY2NywyNSArNjY3LDI1IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1
cGRhdGVDb250ZW50UmVjdChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBjb25zdCBJbnRSCiAg
ICAgd2hpbGUgKCFtX3NraXBzSWRsZVBhaW50ICYmIChsZWZ0ID4gcHJlcGFpbnRMZWZ0IHx8IHRv
cCA+IHByZXBhaW50VG9wIHx8IHJpZ2h0IDwgcHJlcGFpbnRSaWdodCB8fCBib3R0b20gPCBwcmVw
YWludEJvdHRvbSkpIHsKICAgICAgICAgaWYgKGJvdHRvbSA8IHByZXBhaW50Qm90dG9tKSB7CiAg
ICAgICAgICAgICArK2JvdHRvbTsKLSAgICAgICAgICAgIHVwZGF0ZVRpbGVzKHRydWUsIGxlZnQs
IGJvdHRvbSwgcmlnaHQsIGJvdHRvbSwgdXBkYXRlciwgMCwgc3RhdHMpOworICAgICAgICAgICAg
dXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgYm90dG9tLCByaWdodCwgYm90dG9tLCBxdWV1ZSwgMCwg
c3RhdHMpOwogICAgICAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwgbV9za2lwc0lkbGVQYWludCkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAodG9wID4gcHJl
cGFpbnRUb3ApIHsKICAgICAgICAgICAgIC0tdG9wOwotICAgICAgICAgICAgdXBkYXRlVGlsZXMo
dHJ1ZSwgbGVmdCwgdG9wLCByaWdodCwgdG9wLCB1cGRhdGVyLCAwLCBzdGF0cyk7CisgICAgICAg
ICAgICB1cGRhdGVUaWxlcyh0cnVlLCBsZWZ0LCB0b3AsIHJpZ2h0LCB0b3AsIHF1ZXVlLCAwLCBz
dGF0cyk7CiAgICAgICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBhaW50KQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChsZWZ0ID4gcHJl
cGFpbnRMZWZ0KSB7CiAgICAgICAgICAgICAtLWxlZnQ7Ci0gICAgICAgICAgICB1cGRhdGVUaWxl
cyh0cnVlLCBsZWZ0LCB0b3AsIGxlZnQsIGJvdHRvbSwgdXBkYXRlciwgMCwgc3RhdHMpOworICAg
ICAgICAgICAgdXBkYXRlVGlsZXModHJ1ZSwgbGVmdCwgdG9wLCBsZWZ0LCBib3R0b20sIHF1ZXVl
LCAwLCBzdGF0cyk7CiAgICAgICAgICAgICBpZiAobV9kaWRQYWludCB8fCBtX3NraXBzSWRsZVBh
aW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChyaWdo
dCA8IHByZXBhaW50UmlnaHQpIHsKICAgICAgICAgICAgICsrcmlnaHQ7Ci0gICAgICAgICAgICB1
cGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwgYm90dG9tLCB1cGRhdGVyLCAwLCBz
dGF0cyk7CisgICAgICAgICAgICB1cGRhdGVUaWxlcyh0cnVlLCByaWdodCwgdG9wLCByaWdodCwg
Ym90dG9tLCBxdWV1ZSwgMCwgc3RhdHMpOwogICAgICAgICAgICAgaWYgKG1fZGlkUGFpbnQgfHwg
bV9za2lwc0lkbGVQYWludCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA2N2U0ZjAyY2ZlZDc5NWJlYzQzYmM5ZDgxNTU0
ZWRkNjM4NWI5OTNmLi4yZjU1M2EwZjNjOTI5NDBhZTgyYTdlNTRlZmJmMGQwNTMzYjYwZTc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtODMsNyArODMsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCByZXNldFVwZGF0ZVN0YXRlKCk7CiAKICAgICAvLyBQcmVwYXJlIGRhdGEgbmVl
ZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0Lgot
ICAgIHZvaWQgdXBkYXRlQ29udGVudFJlY3QoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBDQ1JlbmRlcmluZ1N0
YXRzJik7CisgICAgdm9pZCB1cGRhdGVDb250ZW50UmVjdChDQ1RleHR1cmVVcGRhdGVRdWV1ZSYs
IGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqLCBD
Q1JlbmRlcmluZ1N0YXRzJik7CiAKICAgICAvLyBBZnRlciBwcmVwYXJpbmcgYW4gdXBkYXRlLCBy
ZXR1cm5zIHRydWUgaWYgbW9yZSBwYWludGluZyBpcyBuZWVkZWQuCiAgICAgYm9vbCBuZWVkc0lk
bGVQYWludChjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QpOwpAQCAtMTA2LDcgKzEw
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFRleHR1cmVQcmlvcml0aWVzSW5SZWN0KGNv
bnN0IENDUHJpb3JpdHlDYWxjdWxhdG9yJiwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRS
ZWN0KTsKIAotICAgIHZvaWQgdXBkYXRlVGlsZXMoYm9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRv
cCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiwgQ0NSZW5kZXJpbmdTdGF0cyYpOworICAgIHZvaWQgdXBkYXRlVGlsZXMo
Ym9vbCBpZGxlLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tLCBDQ1Rl
eHR1cmVVcGRhdGVRdWV1ZSYsIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlciosIENDUmVuZGVyaW5n
U3RhdHMmKTsKIAogICAgIFVwZGF0YWJsZVRpbGUqIHRpbGVBdChpbnQsIGludCkgY29uc3Q7CiAg
ICAgVXBkYXRhYmxlVGlsZSogY3JlYXRlVGlsZShpbnQsIGludCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCBlNjM4ZmZhM2JhYTlmMWQwYWI0NTA0NmI1ZGRiMzkzMzk5MTgz
ZTkzLi40NTJmNTJiMWMzYTVkZGU4MzQzNmI4NDg5MjMyMTk1MjQ3YmM2MTcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBib29sIENDTGF5ZXJU
cmVlSG9zdDo6aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpCiB9CiAKIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyLCBz
aXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
dXBkYXRlTGF5ZXJzKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgc2l6ZV90IG1lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKQogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXJJbml0aWFs
aXplZCk7CiAgICAgQVNTRVJUKG1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKTsKQEAgLTQ2MCwx
MCArNDYwLDEwIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlciwgc2l6ZV90IG1lbW9yeUFsbG9jCiAKICAgICBtX2NvbnRlbnRzVGV4
dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5QWxsb2NhdGlvbkxpbWl0
Qnl0ZXMpOwogCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpLCB1cGRhdGVyKTsKKyAgICB1
cGRhdGVMYXllcnMocm9vdExheWVyKCksIHF1ZXVlKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIsIENDVGV4dHVyZVVwZGF0
ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllciwgQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQogewogICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiKTsKIApAQCAt
NDgwLDcgKzQ4MCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJD
aHJvbWl1bSogcm9vdExheWVyLCBDQ1RleHR1cmVVcGRhdGVyJiB1CiAgICAgLy8gUmVzZXQgcGFy
dGlhbCB0ZXh0dXJlIHVwZGF0ZSByZXF1ZXN0cy4KICAgICBtX3BhcnRpYWxUZXh0dXJlVXBkYXRl
UmVxdWVzdHMgPSAwOwogCi0gICAgYm9vbCBuZWVkTW9yZVVwZGF0ZXMgPSBwYWludExheWVyQ29u
dGVudHModXBkYXRlTGlzdCwgdXBkYXRlcik7CisgICAgYm9vbCBuZWVkTW9yZVVwZGF0ZXMgPSBw
YWludExheWVyQ29udGVudHModXBkYXRlTGlzdCwgcXVldWUpOwogICAgIGlmIChtX3RyaWdnZXJJ
ZGxlVXBkYXRlcyAmJiBuZWVkTW9yZVVwZGF0ZXMpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7
CiAKQEAgLTU1Niw3ICs1NTYsNyBAQCBzaXplX3QgQ0NMYXllclRyZWVIb3N0OjpjYWxjdWxhdGVN
ZW1vcnlGb3JSZW5kZXJTdXJmYWNlcyhjb25zdCBMYXllckxpc3QmIHVwZGF0ZQogICAgIHJldHVy
biByZWFkYmFja0J5dGVzICsgbWF4QmFja2dyb3VuZFRleHR1cmVCeXRlcyArIGNvbnRlbnRzVGV4
dHVyZUJ5dGVzOwogfQogCi1ib29sIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrc0ZvclJlbmRl
clN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza3NGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgQ0NUZXh0dXJlVXBkYXRl
UXVldWUmIHF1ZXVlKQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4
aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlz
IHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29t
ZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAg
LTU2NSwxOSArNTY1LDE5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tzRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5CiAgICAgYm9vbCBuZWVk
TW9yZVVwZGF0ZXMgPSBmYWxzZTsKICAgICBMYXllckNocm9taXVtKiBtYXNrTGF5ZXIgPSByZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpOwogICAgIGlmIChtYXNrTGF5ZXIpIHsKLSAgICAg
ICAgbWFza0xheWVyLT51cGRhdGUodXBkYXRlciwgMCwgbV9yZW5kZXJpbmdTdGF0cyk7CisgICAg
ICAgIG1hc2tMYXllci0+dXBkYXRlKHF1ZXVlLCAwLCBtX3JlbmRlcmluZ1N0YXRzKTsKICAgICAg
ICAgbmVlZE1vcmVVcGRhdGVzIHw9IG1hc2tMYXllci0+bmVlZE1vcmVVcGRhdGVzKCk7CiAgICAg
fQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYU1hc2tMYXllciA9IHJlbmRlclN1cmZhY2VM
YXllci0+cmVwbGljYUxheWVyKCkgPyByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigp
LT5tYXNrTGF5ZXIoKSA6IDA7CiAgICAgaWYgKHJlcGxpY2FNYXNrTGF5ZXIpIHsKLSAgICAgICAg
cmVwbGljYU1hc2tMYXllci0+dXBkYXRlKHVwZGF0ZXIsIDAsIG1fcmVuZGVyaW5nU3RhdHMpOwor
ICAgICAgICByZXBsaWNhTWFza0xheWVyLT51cGRhdGUocXVldWUsIDAsIG1fcmVuZGVyaW5nU3Rh
dHMpOwogICAgICAgICBuZWVkTW9yZVVwZGF0ZXMgfD0gcmVwbGljYU1hc2tMYXllci0+bmVlZE1v
cmVVcGRhdGVzKCk7CiAgICAgfQogICAgIHJldHVybiBuZWVkTW9yZVVwZGF0ZXM7CiB9CiAKLWJv
b2wgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorYm9vbCBD
Q0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKIHsKICAgICAv
LyBVc2UgRnJvbnRUb0JhY2sgdG8gYWxsb3cgZm9yIHRlc3Rpbmcgb2NjbHVzaW9uIGFuZCBwZXJm
b3JtaW5nIGN1bGxpbmcgZHVyaW5nIHRoZSB0cmVlIHdhbGsuCiAgICAgdHlwZWRlZiBDQ0xheWVy
SXRlcmF0b3I8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0sIENDTGF5ZXJJdGVyYXRvckFjdGlvbnM6OkZyb250VG9CYWNr
PiBDQ0xheWVySXRlcmF0b3JUeXBlOwpAQCAtNTk1LDEwICs1OTUsMTAgQEAgYm9vbCBDQ0xheWVy
VHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QKIAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c1RhcmdldFJlbmRlclN1cmZh
Y2UoKSkgewogICAgICAgICAgICAgQVNTRVJUKGl0LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFj
aXR5KCkgfHwgaXQtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsK
LSAgICAgICAgICAgIG5lZWRNb3JlVXBkYXRlcyB8PSBwYWludE1hc2tzRm9yUmVuZGVyU3VyZmFj
ZSgqaXQsIHVwZGF0ZXIpOworICAgICAgICAgICAgbmVlZE1vcmVVcGRhdGVzIHw9IHBhaW50TWFz
a3NGb3JSZW5kZXJTdXJmYWNlKCppdCwgcXVldWUpOwogICAgICAgICB9IGVsc2UgaWYgKGl0LnJl
cHJlc2VudHNJdHNlbGYoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFpdC0+Ym91bmRzKCkuaXNF
bXB0eSgpKTsKLSAgICAgICAgICAgIGl0LT51cGRhdGUodXBkYXRlciwgJm9jY2x1c2lvblRyYWNr
ZXIsIG1fcmVuZGVyaW5nU3RhdHMpOworICAgICAgICAgICAgaXQtPnVwZGF0ZShxdWV1ZSwgJm9j
Y2x1c2lvblRyYWNrZXIsIG1fcmVuZGVyaW5nU3RhdHMpOwogICAgICAgICAgICAgbmVlZE1vcmVV
cGRhdGVzIHw9IGl0LT5uZWVkTW9yZVVwZGF0ZXMoKTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oCmluZGV4IDhhMjI4ZjFhMjhiZGQ5ZTRkZmMxMGZjMmZiNWE4YmIxNzAz
NTA3MzAuLmQxYTI2MzQ2MDY4ODQwYWI4YjEyODE2ZjY3Y2UyYjA4YTcyY2I2YTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNzIENDR3JhcGhpY3ND
b250ZXh0OwogY2xhc3MgQ0NMYXllckNocm9taXVtOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1w
bDsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQ7Ci1jbGFzcyBDQ1RleHR1cmVVcGRh
dGVyOworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlUXVldWU7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI7CiBzdHJ1Y3QgQ0NTY3JvbGxBbmRTY2FsZVNldDsK
QEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFjcXVpcmVMYXll
clRleHR1cmVzKCk7CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB3ZSBzaG91bGQgYWJvcnQgdGhp
cyBmcmFtZSBkdWUgdG8gaW5pdGlhbGl6YXRpb24gZmFpbHVyZS4KICAgICBib29sIGluaXRpYWxp
emVMYXllclJlbmRlcmVySWZOZWVkZWQoKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhDQ1RleHR1
cmVVcGRhdGVyJiwgc2l6ZV90IGNvbnRlbnRzTWVtb3J5TGltaXRCeXRlcyk7CisgICAgdm9pZCB1
cGRhdGVMYXllcnMoQ0NUZXh0dXJlVXBkYXRlUXVldWUmLCBzaXplX3QgY29udGVudHNNZW1vcnlM
aW1pdEJ5dGVzKTsKIAogICAgIENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50KCkgeyByZXR1
cm4gbV9jbGllbnQ7IH0KIApAQCAtMjc5LDExICsyNzksMTEgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgaW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoKTsKIAotICAgIHZvaWQgdXBkYXRlKExheWVyQ2hy
b21pdW0qLCBDQ1RleHR1cmVVcGRhdGVyJiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKik7Ci0g
ICAgYm9vbCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiwgQ0NUZXh0dXJlVXBk
YXRlciYpOwotICAgIGJvb2wgcGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZShMYXllckNocm9taXVtKiwg
Q0NUZXh0dXJlVXBkYXRlUXVldWUmLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqKTsKKyAgICBi
b29sIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmLCBDQ1RleHR1cmVVcGRhdGVR
dWV1ZSYpOworICAgIGJvb2wgcGFpbnRNYXNrc0ZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1
bSosIENDVGV4dHVyZVVwZGF0ZVF1ZXVlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXll
ckNocm9taXVtKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExh
eWVyQ2hyb21pdW0qLCBDQ1RleHR1cmVVcGRhdGVRdWV1ZSYpOwogCiAgICAgdm9pZCBwcmlvcml0
aXplVGV4dHVyZXMoY29uc3QgTGF5ZXJMaXN0JiwgQ0NPdmVyZHJhd01ldHJpY3MmKTsgCiAgICAg
dm9pZCBzZXRQcmlvcml0aWVzRm9yU3VyZmFjZXMoc2l6ZV90IHN1cmZhY2VNZW1vcnlCeXRlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDI2YjBhNzE4NjYw
MjFiNjkyN2Q3MDcxNjA2M2VjODYxMjJlZTAzZTguLjlmZTUwNWYzMmRjMGExNWQ5N2NmMjQ0ZTM3
MWE2MmYwOTA4MjlkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAiY2MvQ0NEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Lmgi
Ci0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVy
ZVVwZGF0ZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RpbWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIENDU2luZ2xlVGhy
ZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9
CiAKLXZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0dXJlVXBkYXRlciYg
dXBkYXRlcikKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoQ0NUZXh0dXJlVXBk
YXRlUXVldWUmIHF1ZXVlKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7
CiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CkBAIC0yMDYsMTIgKzIwNiwxMyBAQCB2b2lkIEND
U2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVy
VHJlZUhvc3RJbXBsLmdldCgpKTsKIAotICAgICAgICAvLyBDQ1RleHR1cmVVcGRhdGVyIGlzIG5v
bi1ibG9ja2luZyBhbmQgd2lsbCByZXR1cm4gd2l0aG91dCB1cGRhdGluZwotICAgICAgICAvLyBh
bnkgdGV4dHVyZXMgaWYgdGhlIHVwbG9hZGVyIGlzIGJ1c3kuIFRoaXMgc2hvdWxkbid0IGJlIGEg
cHJvYmxlbQotICAgICAgICAvLyBoZXJlIGFzIHRoZSB0aHJvdHRsZWQgdXBsb2FkZXIgaXNuJ3Qg
dXNlZCBpbiBzaW5nbGUgdGhyZWFkIG1vZGUuCi0gICAgICAgIC8vIEZvciBjb3JyZWN0bmVzcywg
bG9vcCB1bnRpbCBubyBtb3JlIHVwZGF0ZXMgYXJlIHBlbmRpbmcuCi0gICAgICAgIHdoaWxlICh1
cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpCi0gICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xh
eWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5s
YXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0
ZXMoKSk7CisgICAgICAgIC8vIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1
cmVzIGlzIG5vbi1ibG9ja2luZyBhbmQgd2lsbAorICAgICAgICAvLyByZXR1cm4gd2l0aG91dCB1
cGRhdGluZyBhbnkgdGV4dHVyZXMgaWYgdGhlIHVwbG9hZGVyIGlzIGJ1c3kuIFRoaXMKKyAgICAg
ICAgLy8gc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBoZXJlIGFzIHRoZSB0aHJvdHRsZWQgdXBsb2Fk
ZXIgaXNuJ3QgdXNlZCBpbgorICAgICAgICAvLyBzaW5nbGUgdGhyZWFkIG1vZGUuIEZvciBjb3Jy
ZWN0bmVzcywgbG9vcCB1bnRpbCBubyBtb3JlIHVwZGF0ZXMgYXJlCisgICAgICAgIC8vIHBlbmRp
bmcuCisgICAgICAgIHdoaWxlIChxdWV1ZS5oYXNNb3JlVXBkYXRlcygpKQorICAgICAgICAgICAg
Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9sYXllclRyZWVIb3N0
SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRl
cmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJl
cigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgJnF1ZXVlLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMo
KSk7CiAKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQo
bV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTMwMiwxMSArMzAzLDExIEBAIGJvb2wg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0QW5kQ29tcG9zaXRlKCkKICAgICBpZiAobV9sYXll
clRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlc1dlcmVQdXJnZWRTaW5jZUxhc3RDb21taXQo
KSkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5ldmljdEFsbENvbnRlbnRUZXh0dXJlcygpOwog
Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKHVwZGF0ZXIsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFsbG9jYXRpb25M
aW1pdEJ5dGVzKCkpOworICAgIENDVGV4dHVyZVVwZGF0ZVF1ZXVlIHF1ZXVlOworICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5tZW1v
cnlBbGxvY2F0aW9uTGltaXRCeXRlcygpKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+d2lsbENv
bW1pdCgpOwotICAgIGRvQ29tbWl0KHVwZGF0ZXIpOworICAgIGRvQ29tbWl0KHF1ZXVlKTsKICAg
ICBib29sIHJlc3VsdCA9IGRvQ29tcG9zaXRlKCk7CiAgICAgbV9sYXllclRyZWVIb3N0LT5kaWRC
ZWdpbkZyYW1lKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaAppbmRleCA2ZGNlMWMzNWU4NGZlN2Q1MDI5YWU2YjE0N2MwZjc0MDU3YTg4OWY3
Li5jYjA0YTMyYjJmYTYzMDlhNGEwNjNlZmQ3MjE4ZDlmMjM0MTkwYjljIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgQ0NTaW5nbGVUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsKIAogICAgIGJv
b2wgY29tbWl0QW5kQ29tcG9zaXRlKCk7Ci0gICAgdm9pZCBkb0NvbW1pdChDQ1RleHR1cmVVcGRh
dGVyJik7CisgICAgdm9pZCBkb0NvbW1pdChDQ1RleHR1cmVVcGRhdGVRdWV1ZSYpOwogICAgIGJv
b2wgZG9Db21wb3NpdGUoKTsKICAgICB2b2lkIGRpZFN3YXBGcmFtZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkOTM3
YTk4NzM1MzYwMGQ2MWY4NTk5YTI2Y2UwYWI3YWVhZWVhMjQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCIKKworI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgor
I2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgorCituYW1lc3BhY2UgeworCisvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdG8gdXBkYXRlIHdpdGgg
ZWFjaCBjYWxsIHRvIHVwZGF0ZU1vcmVUZXh0dXJlc0lmRW5vdWdoVGltZVJlbWFpbmluZygpLgor
c3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lID0gNDg7CisKKy8vIEZs
dXNoIGludGVydmFsIHdoZW4gcGVyZm9ybWluZyB0ZXh0dXJlIHVwbG9hZHMuCitzdGF0aWMgY29u
c3QgaW50IHRleHR1cmVVcGxvYWRGbHVzaFBlcmlvZCA9IDQ7CisKK30gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3NpemVfdCBDQ1RleHR1cmVVcGRhdGVD
b250cm9sbGVyOjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKQoreworICAgIHJldHVybiB0ZXh0
dXJlVXBkYXRlc1BlckZyYW1lOworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6
OnVwZGF0ZVRleHR1cmVzKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4
dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyLCBDQ1RleHR1cmVV
cGRhdGVRdWV1ZSogcXVldWUsIHNpemVfdCBjb3VudCkKK3sKKyAgICBpZiAocXVldWUtPmZ1bGxV
cGxvYWRTaXplKCkgfHwgcXVldWUtPnBhcnRpYWxVcGxvYWRTaXplKCkpIHsKKyAgICAgICAgaWYg
KHVwbG9hZGVyLT5pc0J1c3koKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1cGxv
YWRlci0+YmVnaW5VcGxvYWRzKCk7CisKKyAgICAgICAgc2l6ZV90IGZ1bGxVcGxvYWRDb3VudCA9
IDA7CisgICAgICAgIHdoaWxlIChxdWV1ZS0+ZnVsbFVwbG9hZFNpemUoKSAmJiBmdWxsVXBsb2Fk
Q291bnQgPCBjb3VudCkgeworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUocmVz
b3VyY2VQcm92aWRlciwgcXVldWUtPnRha2VGaXJzdEZ1bGxVcGxvYWQoKSk7CisgICAgICAgICAg
ICBmdWxsVXBsb2FkQ291bnQrKzsKKyAgICAgICAgICAgIGlmICghKGZ1bGxVcGxvYWRDb3VudCAl
IHRleHR1cmVVcGxvYWRGbHVzaFBlcmlvZCkpCisgICAgICAgICAgICAgICAgcmVzb3VyY2VQcm92
aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xpbmcgdXBsb2FkcyB3aXRob3V0IGEgZmx1c2gu
CisgICAgICAgIGlmIChmdWxsVXBsb2FkQ291bnQgJSB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2Qp
CisgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgp
OworCisgICAgICAgIGJvb2wgbW9yZVVwbG9hZHMgPSBxdWV1ZS0+ZnVsbFVwbG9hZFNpemUoKTsK
KworICAgICAgICBBU1NFUlQocXVldWUtPnBhcnRpYWxVcGxvYWRTaXplKCkgPD0gY291bnQpOwor
ICAgICAgICAvLyBXZSBuZWVkIGFub3RoZXIgdXBkYXRlIGJhdGNoIGlmIHRoZSBudW1iZXIgb2Yg
dXBkYXRlcyByZW1haW5pbmcKKyAgICAgICAgLy8gaW4gfGNvdW50fCBpcyBncmVhdGVyIHRoYW4g
dGhlIHJlbWFpbmluZyBwYXJ0aWFsIGVudHJpZXMuCisgICAgICAgIGlmICgoY291bnQgLSBmdWxs
VXBsb2FkQ291bnQpIDwgcXVldWUtPnBhcnRpYWxVcGxvYWRTaXplKCkpCisgICAgICAgICAgICBt
b3JlVXBsb2FkcyA9IHRydWU7CisKKyAgICAgICAgaWYgKG1vcmVVcGxvYWRzKSB7CisgICAgICAg
ICAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgc2l6ZV90IHBhcnRpYWxVcGxvYWRDb3VudCA9IDA7CisgICAgICAgIHdo
aWxlIChxdWV1ZS0+cGFydGlhbFVwbG9hZFNpemUoKSkgeworICAgICAgICAgICAgdXBsb2FkZXIt
PnVwbG9hZFRleHR1cmUocmVzb3VyY2VQcm92aWRlciwgcXVldWUtPnRha2VGaXJzdFBhcnRpYWxV
cGxvYWQoKSk7CisgICAgICAgICAgICBwYXJ0aWFsVXBsb2FkQ291bnQrKzsKKyAgICAgICAgICAg
IGlmICghKHBhcnRpYWxVcGxvYWRDb3VudCAlIHRleHR1cmVVcGxvYWRGbHVzaFBlcmlvZCkpCisg
ICAgICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xp
bmcgcGFydGlhbCB1cGxvYWRzIHdpdGhvdXQgYSBmbHVzaC4KKyAgICAgICAgaWYgKHBhcnRpYWxV
cGxvYWRDb3VudCAlIHRleHR1cmVVcGxvYWRGbHVzaFBlcmlvZCkKKyAgICAgICAgICAgIHJlc291
cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7CisKKyAgICAgICAgdXBsb2Fk
ZXItPmVuZFVwbG9hZHMoKTsKKyAgICB9CisKKyAgICBzaXplX3QgY29weUNvdW50ID0gMDsKKyAg
ICB3aGlsZSAocXVldWUtPmNvcHlTaXplKCkpIHsKKyAgICAgICAgY29waWVyLT5jb3B5VGV4dHVy
ZShxdWV1ZS0+dGFrZUZpcnN0Q29weSgpKTsKKyAgICAgICAgY29weUNvdW50Kys7CisgICAgfQor
CisgICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFueSB0ZXh0dXJlIGNvcGllcywgd2UgbmVlZCB0
byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhlIGNvbXBvc2l0b3IgY29udGV4dAorICAgIC8v
IGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVhZCBwcm9jZWVkIGFzIGl0IG1heSBtYWtlIGRy
YXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJlIG9mIG9uZSBvZgorICAgIC8vIG91ciBjb3B5
IG9wZXJhdGlvbnMuCisgICAgaWYgKGNvcHlDb3VudCkKKyAgICAgICAgY29waWVyLT5mbHVzaCgp
OworfQorCitDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjpDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyKFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+IHF1ZXVlLCBDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVw
bG9hZGVyKiB1cGxvYWRlcikKKyAgICA6IG1fcXVldWUocXVldWUpCisgICAgLCBtX3Jlc291cmNl
UHJvdmlkZXIocmVzb3VyY2VQcm92aWRlcikKKyAgICAsIG1fY29waWVyKGNvcGllcikKKyAgICAs
IG1fdXBsb2FkZXIodXBsb2FkZXIpCit7Cit9CisKK0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6
On5DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKCkKK3sKK30KKworYm9vbCBDQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcXVl
dWUtPmhhc01vcmVVcGRhdGVzKCk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
cjo6dXBkYXRlTW9yZVRleHR1cmVzKCkKK3sKKyAgICBpZiAoIW1fcXVldWUtPmhhc01vcmVVcGRh
dGVzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQ
cm92aWRlciwgbV9jb3BpZXIsIG1fdXBsb2FkZXIsIG1fcXVldWUuZ2V0KCksIHVwZGF0ZU1vcmVU
ZXh0dXJlc1NpemUoKSk7Cit9CisKK3NpemVfdCBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1
cGRhdGVNb3JlVGV4dHVyZXNTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGV4dHVyZVVwZGF0
ZXNQZXJGcmFtZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMmM3YmM4MjcxZGFlODk4OWJmZjM3MGUzMDkxNDI0MmQ2
YTZjZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcl9oCisjZGVmaW5lIEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRl
UXVldWUuaCIKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZUNvcGllcjsKK2Ns
YXNzIFRleHR1cmVVcGxvYWRlcjsKKworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcik7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcj4g
Y3JlYXRlKFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+IHF1ZXVlLCBDQ1Jlc291cmNl
UHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVy
ZVVwbG9hZGVyKiB1cGxvYWRlcikKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcihxdWV1ZSwgcmVzb3VyY2VQcm92aWRlciwgY29waWVy
LCB1cGxvYWRlcikpOworICAgIH0KKyAgICBzdGF0aWMgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcygpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVRleHR1cmVzKENDUmVzb3VyY2VQcm92
aWRlciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBDQ1RleHR1cmVVcGRhdGVR
dWV1ZSosIHNpemVfdCBjb3VudCk7CisKKyAgICB2aXJ0dWFsIH5DQ1RleHR1cmVVcGRhdGVDb250
cm9sbGVyKCk7CisKKyAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgdm9pZCB1
cGRhdGVNb3JlVGV4dHVyZXMoKTsKKworICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCisgICAg
dmlydHVhbCBzaXplX3QgdXBkYXRlTW9yZVRleHR1cmVzU2l6ZSgpIGNvbnN0OworCitwcm90ZWN0
ZWQ6CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcihQYXNzT3duUHRyPENDVGV4dHVyZVVw
ZGF0ZVF1ZXVlPiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgVGV4dHVyZUNvcGllciosIFRleHR1cmVV
cGxvYWRlciopOworCisgICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZVF1ZXVlPiBtX3F1ZXVlOwor
ICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVyOworICAgIFRleHR1cmVD
b3BpZXIqIG1fY29waWVyOworICAgIFRleHR1cmVVcGxvYWRlciogbV91cGxvYWRlcjsKK307CisK
K30KKworI2VuZGlmIC8vIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMjNmZGQyODU0MTU4NzRh
NmNjZmQwYjU4M2M2OWI2ODU2NTZjMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5jcHAK
QEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZVF1
ZXVlLmgiCisKKyNpbmNsdWRlICJDQ1ByaW9yaXRpemVkVGV4dHVyZS5oIgorI2luY2x1ZGUgIkND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5o
IgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6Q0NUZXh0
dXJlVXBkYXRlUXVldWUoKQoreworfQorCitDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6fkNDVGV4dHVy
ZVVwZGF0ZVF1ZXVlKCkKK3sKK30KKwordm9pZCBDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6YXBwZW5k
RnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMgdXBsb2FkKQoreworICAgIG1f
ZnVsbEVudHJpZXMuYXBwZW5kKHVwbG9hZCk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlUXVl
dWU6OmFwcGVuZFBhcnRpYWxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHVwbG9h
ZCkKK3sKKyAgICBtX3BhcnRpYWxFbnRyaWVzLmFwcGVuZCh1cGxvYWQpOworfQorCit2b2lkIEND
VGV4dHVyZVVwZGF0ZVF1ZXVlOjphcHBlbmRDb3B5KFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMg
Y29weSkKK3sKKyAgICBtX2NvcHlFbnRyaWVzLmFwcGVuZChjb3B5KTsKK30KKworVGV4dHVyZVVw
bG9hZGVyOjpQYXJhbWV0ZXJzIENDVGV4dHVyZVVwZGF0ZVF1ZXVlOjp0YWtlRmlyc3RGdWxsVXBs
b2FkKCkKK3sKKyAgICByZXR1cm4gbV9mdWxsRW50cmllcy50YWtlRmlyc3QoKTsKK30KKworVGV4
dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIENDVGV4dHVyZVVwZGF0ZVF1ZXVlOjp0YWtlRmlyc3RQ
YXJ0aWFsVXBsb2FkKCkKK3sKKyAgICByZXR1cm4gbV9wYXJ0aWFsRW50cmllcy50YWtlRmlyc3Qo
KTsKK30KKworVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBDQ1RleHR1cmVVcGRhdGVRdWV1ZTo6
dGFrZUZpcnN0Q29weSgpCit7CisgICAgcmV0dXJuIG1fY29weUVudHJpZXMudGFrZUZpcnN0KCk7
Cit9CisKK2Jvb2wgQ0NUZXh0dXJlVXBkYXRlUXVldWU6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9mdWxsRW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5z
aXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCk7Cit9CisKK30KKworI2VuZGlmIC8vIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE2YmE0YzRjOTQwNWVmZDNiNzg5ZDIwYzUzMTI0Zjk1OTQ1ZThlMzkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVRdWV1ZS5oCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIENDVGV4dHVyZVVwZGF0ZVF1ZXVlX2gKKyNkZWZpbmUgQ0NUZXh0dXJlVXBkYXRlUXVl
dWVfaAorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZVVwbG9h
ZGVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgQ0NSZXNvdXJjZVByb3ZpZGVyOworY2xhc3MgVGV4dHVyZUNvcGllcjsKK2NsYXNzIFRl
eHR1cmVVcGxvYWRlcjsKKworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlUXVldWUgeworcHVibGljOgor
ICAgIENDVGV4dHVyZVVwZGF0ZVF1ZXVlKCk7CisgICAgdmlydHVhbCB+Q0NUZXh0dXJlVXBkYXRl
UXVldWUoKTsKKworICAgIHZvaWQgYXBwZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBh
cmFtZXRlcnMpOworICAgIHZvaWQgYXBwZW5kUGFydGlhbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6
OlBhcmFtZXRlcnMpOworICAgIHZvaWQgYXBwZW5kQ29weShUZXh0dXJlQ29waWVyOjpQYXJhbWV0
ZXJzKTsKKworICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCisgICAgdmlydHVhbCBUZXh0dXJl
VXBsb2FkZXI6OlBhcmFtZXRlcnMgdGFrZUZpcnN0RnVsbFVwbG9hZCgpOworICAgIHZpcnR1YWwg
VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHRha2VGaXJzdFBhcnRpYWxVcGxvYWQoKTsKKyAg
ICB2aXJ0dWFsIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgdGFrZUZpcnN0Q29weSgpOworCisg
ICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KKyAgICB2aXJ0dWFsIHNpemVfdCBmdWxsVXBsb2Fk
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbEVudHJpZXMuc2l6ZSgpOyB9CisgICAgdmlydHVh
bCBzaXplX3QgcGFydGlhbFVwbG9hZFNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhcnRpYWxFbnRy
aWVzLnNpemUoKTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IGNvcHlTaXplKCkgY29uc3QgeyByZXR1
cm4gbV9jb3B5RW50cmllcy5zaXplKCk7IH0KKworICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBhcHBlbmRVcGxvYWQoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0LCBEZXF1ZTxUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnM+Jik7CisK
KyAgICBEZXF1ZTxUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnM+IG1fZnVsbEVudHJpZXM7Cisg
ICAgRGVxdWU8VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzPiBtX3BhcnRpYWxFbnRyaWVzOwor
ICAgIERlcXVlPFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnM+IG1fY29weUVudHJpZXM7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBDQ1RleHR1cmVVcGRhdGVRdWV1ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmY0OTI5YTg2
MTA2OGYxZTZmOTA1MGU0YzEwNDEyZTdlMzUwNWJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY3ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCi0KLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCi0KLSNpbmNs
dWRlICJDQ1ByaW9yaXRpemVkVGV4dHVyZS5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNE
LmgiCi0jaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgotI2luY2x1ZGUgIlRleHR1cmVD
b3BpZXIuaCIKLSNpbmNsdWRlICJUZXh0dXJlVXBsb2FkZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3QgaW50IGtVcGxvYWRG
bHVzaFBlcmlvZCA9IDQ7Ci0KLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoKQot
ICAgIDogbV9lbnRyeUluZGV4KDApCi17Ci19Ci0KLUNDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1
cmVVcGRhdGVyKCkKLXsKLX0KLQotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmRVcGRhdGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZlY3RvcjxVcGRhdGVFbnRyeT4mIGVu
dHJpZXMpCi17Ci0gICAgQVNTRVJUKHRleHR1cmUpOwotCi0gICAgVXBkYXRlRW50cnkgZW50cnk7
Ci0gICAgZW50cnkudGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgZW50cnkuc291cmNlUmVjdCA9IHNv
dXJjZVJlY3Q7Ci0gICAgZW50cnkuZGVzdFJlY3QgPSBkZXN0UmVjdDsKLSAgICBlbnRyaWVzLmFw
cGVuZChlbnRyeSk7Ci19Ci0KLXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kRnVsbFVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKLXsKLSAgICBhcHBlbmRVcGRhdGUo
dGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fZnVsbEVudHJpZXMpOwotfQotCi12b2lk
IENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWxVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCi17Ci0gICAgYXBwZW5kVXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0LCBtX3BhcnRpYWxFbnRyaWVzKTsKLX0KLQotdm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjphcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIHVuc2lnbmVkIGRlc3RUZXh0dXJl
LCBjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIENvcHlFbnRyeSBjb3B5OwotICAgIGNvcHku
c291cmNlVGV4dHVyZSA9IHNvdXJjZVRleHR1cmU7Ci0gICAgY29weS5kZXN0VGV4dHVyZSA9IGRl
c3RUZXh0dXJlOwotICAgIGNvcHkuc2l6ZSA9IHNpemU7Ci0gICAgbV9jb3B5RW50cmllcy5hcHBl
bmQoY29weSk7Ci19Ci0KLWJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBj
b25zdAotewotICAgIHJldHVybiBtX2Z1bGxFbnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRy
aWVzLnNpemUoKSB8fCBtX2NvcHlFbnRyaWVzLnNpemUoKTsKLX0KLQotdm9pZCBDQ1RleHR1cmVV
cGRhdGVyOjp1cGRhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBUZXh0
dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIsIHNpemVfdCBjb3Vu
dCkKLXsKLSAgICBzaXplX3QgaW5kZXg7Ci0KLSAgICBpZiAobV9mdWxsRW50cmllcy5zaXplKCkg
fHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkpIHsKLSAgICAgICAgaWYgKHVwbG9hZGVyLT5pc0J1
c3koKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1cGxvYWRlci0+YmVnaW5VcGxv
YWRzKCk7Ci0KLSAgICAgICAgaW50IGZ1bGxVcGxvYWRDb3VudCA9IDA7Ci0gICAgICAgIHNpemVf
dCBtYXhJbmRleCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9mdWxsRW50cmllcy5zaXpl
KCkpOwotICAgICAgICBmb3IgKGluZGV4ID0gbV9lbnRyeUluZGV4OyBpbmRleCA8IG1heEluZGV4
OyArK2luZGV4KSB7Ci0gICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2Z1bGxFbnRy
aWVzW2luZGV4XTsKLSAgICAgICAgICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJlKGVudHJ5LnRl
eHR1cmUsIHJlc291cmNlUHJvdmlkZXIsIGVudHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0
KTsKLSAgICAgICAgICAgIGZ1bGxVcGxvYWRDb3VudCsrOwotICAgICAgICAgICAgaWYgKCEoZnVs
bFVwbG9hZENvdW50ICUga1VwbG9hZEZsdXNoUGVyaW9kKSkKLSAgICAgICAgICAgICAgICByZXNv
dXJjZVByb3ZpZGVyLT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkYW5nbGluZyB1cGxvYWRzIHdpdGhvdXQg
YSBmbHVzaC4KLSAgICAgICAgaWYgKGZ1bGxVcGxvYWRDb3VudCAlIGtVcGxvYWRGbHVzaFBlcmlv
ZCkKLSAgICAgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVk
KCk7Ci0KLSAgICAgICAgYm9vbCBtb3JlVXBsb2FkcyA9IG1heEluZGV4IDwgbV9mdWxsRW50cmll
cy5zaXplKCk7Ci0KLSAgICAgICAgQVNTRVJUKG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIDw9IGNv
dW50KTsKLSAgICAgICAgLy8gV2UgbmVlZCBhbm90aGVyIHVwZGF0ZSBiYXRjaCBpZiB0aGUgbnVt
YmVyIG9mIHVwZGF0ZXMgcmVtYWluaW5nCi0gICAgICAgIC8vIGluIHxjb3VudHwgaXMgZ3JlYXRl
ciB0aGFuIHRoZSByZW1haW5pbmcgcGFydGlhbCBlbnRyaWVzLgotICAgICAgICBpZiAoKGNvdW50
IC0gKGluZGV4IC0gbV9lbnRyeUluZGV4KSkgPCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSkKLSAg
ICAgICAgICAgIG1vcmVVcGxvYWRzID0gdHJ1ZTsKLQotICAgICAgICBpZiAobW9yZVVwbG9hZHMp
IHsKLSAgICAgICAgICAgIG1fZW50cnlJbmRleCA9IGluZGV4OwotICAgICAgICAgICAgdXBsb2Fk
ZXItPmVuZFVwbG9hZHMoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyArK2lu
ZGV4KSB7Ci0gICAgICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX3BhcnRpYWxFbnRyaWVz
W2luZGV4XTsKLSAgICAgICAgICAgIHVwbG9hZGVyLT51cGxvYWRUZXh0dXJlKGVudHJ5LnRleHR1
cmUsIHJlc291cmNlUHJvdmlkZXIsIGVudHJ5LnNvdXJjZVJlY3QsIGVudHJ5LmRlc3RSZWN0KTsK
LSAgICAgICAgICAgIGlmICghKChpbmRleCsxKSAlIGtVcGxvYWRGbHVzaFBlcmlvZCkpCi0gICAg
ICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKTsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xpbmcg
cGFydGlhbCB1cGxvYWRzIHdpdGhvdXQgYSBmbHVzaC4KLSAgICAgICAgLy8gTm90ZTogV2UgZG9u
J3QgbmVlZCB0byB1c2UgKGluZGV4KzEpIGluIHRoaXMgY2FzZSBiZWNhdXNlIGluZGV4IHdhcwot
ICAgICAgICAvLyBpbmNyZW1lbnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBmb3IgbG9vcC4KLSAgICAg
ICAgaWYgKGluZGV4ICUga1VwbG9hZEZsdXNoUGVyaW9kKQotICAgICAgICAgICAgcmVzb3VyY2VQ
cm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKTsKLQotICAgICAgICB1cGxvYWRlci0+
ZW5kVXBsb2FkcygpOwotICAgIH0KLQotICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IG1fY29w
eUVudHJpZXMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIENvcHlFbnRyeSYgY29weUVudHJ5
ID0gbV9jb3B5RW50cmllc1tpbmRleF07Ci0gICAgICAgIGNvcGllci0+Y29weVRleHR1cmUoY29w
eUVudHJ5LnNvdXJjZVRleHR1cmUsIGNvcHlFbnRyeS5kZXN0VGV4dHVyZSwgY29weUVudHJ5LnNp
emUpOwotICAgIH0KLQotICAgIC8vIElmIHdlJ3ZlIHBlcmZvcm1lZCBhbnkgdGV4dHVyZSBjb3Bp
ZXMsIHdlIG5lZWQgdG8gaW5zZXJ0IGEgZmx1c2ggaGVyZSBpbnRvIHRoZSBjb21wb3NpdG9yIGNv
bnRleHQKLSAgICAvLyBiZWZvcmUgbGV0dGluZyB0aGUgbWFpbiB0aHJlYWQgcHJvY2VlZCBhcyBp
dCBtYXkgbWFrZSBkcmF3IGNhbGxzIHRvIHRoZSBzb3VyY2UgdGV4dHVyZSBvZiBvbmUgb2YKLSAg
ICAvLyBvdXIgY29weSBvcGVyYXRpb25zLgotICAgIGlmIChtX2NvcHlFbnRyaWVzLnNpemUoKSkK
LSAgICAgICAgY29waWVyLT5mbHVzaCgpOwotCi0gICAgLy8gSWYgbm8gZW50cmllcyBsZWZ0IHRv
IHByb2Nlc3MsIGF1dG8tY2xlYXIuCi0gICAgY2xlYXIoKTsKLX0KLQotdm9pZCBDQ1RleHR1cmVV
cGRhdGVyOjpjbGVhcigpCi17Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKLSAgICBtX2Z1bGxFbnRy
aWVzLmNsZWFyKCk7Ci0gICAgbV9wYXJ0aWFsRW50cmllcy5jbGVhcigpOwotICAgIG1fY29weUVu
dHJpZXMuY2xlYXIoKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5NzJhMWMwZWM3ZTQ4MTIxMzgxZDRlNGZlNmM5OTA3MGE5NGI4MjU2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgL2Rl
di9udWxsCkBAIC0xLDc4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIENDVGV4dHVyZVVwZGF0ZXJf
aAotI2RlZmluZSBDQ1RleHR1cmVVcGRhdGVyX2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNp
bmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENDUmVzb3VyY2VQcm92aWRlcjsKLWNsYXNz
IFRleHR1cmVDb3BpZXI7Ci1jbGFzcyBUZXh0dXJlVXBsb2FkZXI7Ci0KLWNsYXNzIENDVGV4dHVy
ZVVwZGF0ZXIgewotcHVibGljOgotICAgIENDVGV4dHVyZVVwZGF0ZXIoKTsKLSAgICB+Q0NUZXh0
dXJlVXBkYXRlcigpOwotCi0gICAgdm9pZCBhcHBlbmRGdWxsVXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7Ci0gICAgdm9pZCBhcHBlbmRQYXJ0aWFsVXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7Ci0gICAgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUs
IHVuc2lnbmVkIGRlc3RUZXh0dXJlLCBjb25zdCBJbnRTaXplJik7Ci0KLSAgICBib29sIGhhc01v
cmVVcGRhdGVzKCkgY29uc3Q7Ci0KLSAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4KLSAgICB2
b2lkIHVwZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVw
bG9hZGVyKiwgc2l6ZV90IGNvdW50KTsKLQotICAgIHZvaWQgY2xlYXIoKTsKLQotcHJpdmF0ZToK
LSAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgewotICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiB0ZXh0dXJlOwotICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Q7Ci0gICAgICAgIElu
dFJlY3QgZGVzdFJlY3Q7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBDb3B5RW50cnkgewotICAgICAg
ICBJbnRTaXplIHNpemU7Ci0gICAgICAgIHVuc2lnbmVkIHNvdXJjZVRleHR1cmU7Ci0gICAgICAg
IHVuc2lnbmVkIGRlc3RUZXh0dXJlOwotICAgIH07Ci0KLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRV
cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50cnk+Jik7Ci0K
LSAgICBzaXplX3QgbV9lbnRyeUluZGV4OwotICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4gbV9mdWxs
RW50cmllczsKLSAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fcGFydGlhbEVudHJpZXM7Ci0gICAg
VmVjdG9yPENvcHlFbnRyeT4gbV9jb3B5RW50cmllczsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIEND
VGV4dHVyZVVwZGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA5YTQ1NWZm
YjAyYWZlNzY5Nzg1OTVjYjFlZGJhNDUzOTU0YTQ4M2M4Li5mNmZjZWRhMjZmYmQ3YmRjZDhjZjNk
YTY3YmQ0OWFmNTZkY2IzMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzcs
NyArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNj
L0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgotI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8
d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQ2LDEw
ICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAKLS8vIE51bWJl
ciBvZiB0ZXh0dXJlcyB0byB1cGRhdGUgd2l0aCBlYWNoIGNhbGwgdG8KLS8vIHNjaGVkdWxlZEFj
dGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKS4KLXN0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVw
ZGF0ZXNQZXJGcmFtZSA9IDQ4OwotCiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgogc3RhdGljIGNv
bnN0IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIApAQCAtNDQ4LDgg
KzQ0NCw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgp
CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQmVnaW5GcmFt
ZUFuZENvbW1pdFN0YXRlKCkpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5tb25v
dG9uaWNGcmFtZUJlZ2luVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAg
IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5zY3JvbGxJbmZvID0gbV9sYXllclRyZWVIb3N0
SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIpOwotICAgIG1fcGVu
ZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT51cGRhdGVyID0gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQuZ2V0KCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPmNvbnRl
bnRzVGV4dHVyZXNXZXJlRGVsZXRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4
dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFt
ZVJlcXVlc3QtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzID0gbV9sYXllclRyZWVIb3N0SW1w
bC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKTsKIApAQCAtNTIwLDcgKzUxNCw4IEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgaWYgKHJlcXVlc3QtPmNvbnRlbnRz
VGV4dHVyZXNXZXJlRGVsZXRlZCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5ldmljdEFsbENv
bnRlbnRUZXh0dXJlcygpOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKnJl
cXVlc3QtPnVwZGF0ZXIsIHJlcXVlc3QtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKTsKKyAg
ICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+IHF1ZXVlID0gYWRvcHRQdHIobmV3IENDVGV4
dHVyZVVwZGF0ZVF1ZXVlKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygqKHF1
ZXVlLmdldCgpKSwgcmVxdWVzdC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOwogCiAgICAg
Ly8gT25jZSBzaW5nbGUgYnVmZmVyZWQgbGF5ZXJzIGFyZSBjb21taXR0ZWQsIHRoZXkgY2Fubm90
IGJlIG1vZGlmaWVkIHVudGlsCiAgICAgLy8gdGhleSBhcmUgZHJhd24gYnkgdGhlIGltcGwgdGhy
ZWFkLgpAQCAtNTQyLDcgKzUzNyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgp
CiAgICAgICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2Nr
ZWQ7CiAKICAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAgICAgICAgQ0NQ
cm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1Ro
cmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgp
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxl
dGlvbiksIHF1ZXVlLnJlbGVhc2UoKSkpOwogICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKICAg
ICB9CiAKQEAgLTU1MCw3ICs1NDUsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUo
KQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZGlkQmVnaW5GcmFtZSgpOwogfQogCi12b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBQYXNzT3duUHRyPENDVGV4
dHVyZVVwZGF0ZVF1ZXVlPiBxdWV1ZSkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVCgh
bV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwpAQCAtNTYzLDYgKzU1OCw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZCA9IENDVGV4dHVyZVVw
ZGF0ZUNvbnRyb2xsZXI6OmNyZWF0ZShxdWV1ZSwgbV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3Vy
Y2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1
cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJl
VXBsb2FkZXIoKSk7CiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBj
b21wbGV0aW9uOwogCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21w
bGV0ZSgpOwpAQCAtNTgwLDkgKzU3Niw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUFib3J0ZWRPbkltcGxUaHJlYWQoKQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNv
dXJjZVVwZGF0ZXMoKSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQpCisgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9u
SW1wbFRocmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4g
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRh
dGVzKCk7CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCkBAIC01OTYsMTkgKzU5
MiwxOSBAQCBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQogdm9pZCBDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVO
VDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJj
ZXMiKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwot
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9sYXllclRy
ZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXll
clJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJS
ZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSk7Cisg
ICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkKTsK
KyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZC0+dXBkYXRl
TW9yZVRleHR1cmVzKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9u
Q29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OnNjaGVk
dWxlZEFjdGlvbkNvbW1pdCIpOwogICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7Ci0gICAgQVNT
RVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQoIW1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKKyAg
ICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQpOwor
ICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQt
Pmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCk7CiAKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5j
bGVhcigpOworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFk
LmNsZWFyKCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCkBA
IC04NjEsNyArODU3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRGdWxsUm9vdExheWVyRGFt
YWdlT25JbXBsVGhyZWFkKCkKIAogc2l6ZV90IENDVGhyZWFkUHJveHk6Om1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJhbWU7
CisgICAgcmV0dXJuIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6Om1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dE9uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgQ0NHcmFwaGljc0NvbnRleHQq
IGNvbnRleHRQdHIsIGJvb2wqIHJlY3JlYXRlU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKiBjYXBhYmlsaXRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggODYwYTIw
MTczODY2NGJlNzk0ZWI3ODk4NGNkZWZhMWNiOTZmOGU0NS4uZDc4YTY3NmIxZTlkNjU1MTRjMGQ4
N2ZmNjkyNzMxOWFjNTEzOTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMzgsNyAr
MzgsOCBAQCBjbGFzcyBDQ0lucHV0SGFuZGxlcjsKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKIGNs
YXNzIENDU2NoZWR1bGVyOwogY2xhc3MgQ0NTY29wZWRUaHJlYWRQcm94eTsKLWNsYXNzIENDVGV4
dHVyZVVwZGF0ZXI7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVRdWV1ZTsKK2NsYXNzIENDVGV4dHVy
ZVVwZGF0ZUNvbnRyb2xsZXI7CiBjbGFzcyBDQ1RocmVhZDsKIGNsYXNzIENDVGhyZWFkUHJveHlD
b250ZXh0UmVjcmVhdGlvblRpbWVyOwogCkBAIC05OSwxMyArMTAwLDExIEBAIHByaXZhdGU6CiAg
ICAgc3RydWN0IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSB7CiAgICAgICAgIEJlZ2luRnJhbWVB
bmRDb21taXRTdGF0ZSgpCiAgICAgICAgICAgICA6IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKDAp
Ci0gICAgICAgICAgICAsIHVwZGF0ZXIoMCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAg
ICAgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lOwogICAgICAgICBPd25QdHI8Q0NTY3Jv
bGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciogdXBk
YXRlcjsKICAgICAgICAgYm9vbCBjb250ZW50c1RleHR1cmVzV2VyZURlbGV0ZWQ7CiAgICAgICAg
IHNpemVfdCBtZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsKICAgICB9OwpAQCAtMTI3LDcgKzEy
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgcmVjdDsKICAgICB9OwogICAgIHZvaWQg
Zm9yY2VCZWdpbkZyYW1lT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAg
ICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCos
IFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlUXVldWU+KTsKICAgICB2b2lkIGJlZ2luRnJhbWVB
Ym9ydGVkT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJl
YWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0U3RhcnRQYWdlU2NhbGVBbmlt
YXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3Is
IGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwpAQCAtMTQ1LDYgKzE0NCw3IEBAIHBy
aXZhdGU6CiAgICAgQ0NTY2hlZHVsZWRBY3Rpb25EcmF3QW5kU3dhcFJlc3VsdCBzY2hlZHVsZWRB
Y3Rpb25EcmF3QW5kU3dhcEludGVybmFsKGJvb2wgZm9yY2VkRHJhdyk7CiAgICAgdm9pZCBmb3Jj
ZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsK
ICAgICB2b2lkIHNldE5lZWRzRm9yY2VkQ29tbWl0T25JbXBsVGhyZWFkKCk7CisgICAgdm9pZCB0
ZXh0dXJlVXBkYXRlT25JbXBsVGhyZWFkKCk7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRo
cmVhZCBvbmx5LgogICAgIGJvb2wgbV9hbmltYXRlUmVxdWVzdGVkOwpAQCAtMTgzLDcgKzE4Myw3
IEBAIHByaXZhdGU6CiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcg
b24gbGF5ZXJzIHRvIGJlIGRyYXduLgogICAgIENDQ29tcGxldGlvbkV2ZW50KiBtX3RleHR1cmVB
Y3F1aXNpdGlvbkNvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKIAotICAgIE93blB0cjxDQ1Rl
eHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKKyAgICBP
d25QdHI8Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcj4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXJPbkltcGxUaHJlYWQ7CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3IHNo
b3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAgICAg
Ym9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDgzMTI0MWRlNDM3NmI1MjY4YjNlNzM1ZWJiNDcx
NWVjNDRjNjkxNzUuLjZkNWIxNWQzY2U3YzgzMzY0NTZkZWFjMmQ1MjM2Y2UxYWJlMGU1MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtODUsNyArODUsNyBAQAogICAgICAgICAg
ICAgJ3Rlc3RzL0NDU2NvcGVkVGV4dHVyZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9D
Q1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUZXN0
Q29tbW9uLmgnLAotICAgICAgICAgICAgJ3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCcs
CisgICAgICAgICAgICAndGVzdHMvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QuY3BwJywK
ICAgICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uaCcsCiAgICAgICAgICAgICAndGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCmluZGV4IGQ5Y2VhM2JiMTZi
NGQ4YjU3ZTI1ZDk0YjFkM2ZiNDRjY2UxNDlhZjMuLjQyMzkwMmY5MTU1Y2EyNmRmYzY4MDJlYzcx
YmFlZmMwNjc3ZTRiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRl
IDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KIAogI2luY2x1ZGUgIlRleHR1cmVM
YXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+CkBAIC0zOCwxOCArMzgsMTggQEAgbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBXZWJU
ZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJ
bXBsKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCi0gICAgICAgIDogbV91cGRhdGVyKHVwZGF0
ZXIpCisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVyZVVwZGF0ZVF1
ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVlKQogICAgIHsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25l
ZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKICAgICB7Ci0gICAg
ICAgIG1fdXBkYXRlci5hcHBlbmRDb3B5KHNvdXJjZVRleHR1cmUsIGRlc3RpbmF0aW9uVGV4dHVy
ZSwgc2l6ZSk7CisgICAgICAgIG1fcXVldWUuYXBwZW5kQ29weShUZXh0dXJlQ29waWVyOjpQYXJh
bWV0ZXJzKHNvdXJjZVRleHR1cmUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgc2l6ZSkpOwogICAgIH0K
IAogcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVyJiBtX3VwZGF0ZXI7CisgICAgQ0NUZXh0
dXJlVXBkYXRlUXVldWUmIG1fcXVldWU7CiB9OwogCiBjbGFzcyBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwgOiBwdWJsaWMgVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQsIHB1YmxpYyBUZXh0
dXJlTGF5ZXJDaHJvbWl1bSB7CkBAIC02MCw5ICs2MCw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
fQogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShDQ1RleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKSBPVkVSUklERQorICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUo
Q0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgV2Vi
VGV4dHVyZVVwZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHVwZGF0ZXIpOworICAgICAgICBXZWJUZXh0
dXJlVXBkYXRlckltcGwgdXBkYXRlckltcGwocXVldWUpOwogICAgICAgICByZXR1cm4gbV9jbGll
bnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXJJbXBsKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGVh
NzY3OGIwMmFiZTNjZjFkMWYzMTBkNjNhNzI2ZTEzMGQzYjNkNWQuLjQ5OWE0NDVhMDczOGEyZGY5
ZDFhODQ3NGFkOGZlMjYyOThkMTExMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2lu
Y2x1ZGUgImNjL0NDR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKICNp
bmNsdWRlICJjYy9DQ1RpbWluZ0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhy
ZWFkLmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KQEAgLTExNjAsOSArMTE2MCw5IEBAIHB1
YmxpYzoKICAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRl
bnRzQ291bnQ7IH0KICAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3BhaW50
Q29udGVudHNDb3VudCA9IDA7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlciwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24sIEND
UmVuZGVyaW5nU3RhdHMmIHN0YXRzKSBPVkVSUklERQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUo
Q0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXIqIG9j
Y2x1c2lvbiwgQ0NSZW5kZXJpbmdTdGF0cyYgc3RhdHMpIE9WRVJSSURFCiAgICAgewotICAgICAg
ICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKHVwZGF0ZXIsIG9jY2x1c2lvbiwgc3RhdHMp
OworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlKHF1ZXVlLCBvY2NsdXNpb24s
IHN0YXRzKTsKICAgICAgICAgbV9wYWludENvbnRlbnRzQ291bnQrKzsKICAgICB9CiAKQEAgLTE1
NzQsNyArMTU3NCw3IEBAIGNsYXNzIFRlc3RMYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hy
b21pdW0gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRlc3RMYXllckNocm9taXVt
PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGVzdExheWVyQ2hyb21pdW0oKSk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoQ0NUZXh0dXJlVXBkYXRlciYsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlciogb2NjbHVzaW9uLCBDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREUKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiwgY29uc3QgQ0NPY2Ns
dXNpb25UcmFja2VyKiBvY2NsdXNpb24sIENDUmVuZGVyaW5nU3RhdHMmKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgLy8gR2FpbiBhY2Nlc3MgdG8gaW50ZXJuYWxzIG9mIHRoZSBDQ09jY2x1c2lv
blRyYWNrZXIuCiAgICAgICAgIGNvbnN0IFRlc3RDQ09jY2x1c2lvblRyYWNrZXIqIHRlc3RPY2Ns
dXNpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBUZXN0Q0NPY2NsdXNpb25UcmFja2VyKj4ob2NjbHVz
aW9uKTsKQEAgLTE2MjksOCArMTYyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5z
ZXRWaWV3cG9ydFNpemUocm9vdExheWVyLT5ib3VuZHMoKSk7CiAgICAgICAgIEFTU0VSVF9UUlVF
KG1fbGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXJJZk5lZWRlZCgpKTsKLSAg
ICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKKyAgICAgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUgcXVldWU7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46
Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3Jl
ZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKHF1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5k
cygpKTsKQEAgLTE2NjUsNyArMTY2NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
KSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE2ODUs
NyArMTY4NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RM
YXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6
ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21w
bGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+
b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE3MDcsNyArMTcwNyw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIp
OwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJv
dW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgZ3JhbmRDaGlsZC0+b2NjbHVkZWRTY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKQEAgLTE3MjksNyArMTcyOSw3IEBAIHB1YmxpYzoKIAogICAgICAg
ICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJvdW5kcygpKTsKLSAgICAg
ICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKHF1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpA
QCAtMTc1Miw3ICsxNzUyLDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmll
d3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycyh1cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgp
KTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMocXVldWUsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNv
bW1pdENvbXBsZXRlKCk7CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBncmFu
ZENoaWxkLT5vY2NsdWRlZFNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwpAQCAtMTc3NSw3ICsxNzc1
LDcgQEAgcHVibGljOgogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJv
b3RMYXllcik7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RM
YXllci0+Ym91bmRzKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyh1
cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMocXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6
ZV90Pjo6bWF4KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7
CiAKICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBjaGlsZDItPm9jY2x1ZGVkU2Ny
ZWVuU3BhY2UoKS5ib3VuZHMoKSk7CkBAIC0xODM3LDggKzE4MzcsOCBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKHJvb3RMYXllcik7CiAgICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKHJvb3RMYXllci0+Ym91bmRzKCkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShtX2xheWVyVHJlZUhvc3QtPmluaXRpYWxpemVMYXllclJlbmRlcmVy
SWZOZWVkZWQoKSk7Ci0gICAgICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcjsKLSAgICAgICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIENDVGV4dHVyZVVwZGF0ZVF1ZXVlIHF1ZXVlOwor
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhxdWV1ZSwgc3RkOjpudW1lcmlj
X2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIAogICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KCksIGNoaWxkMi0+
b2NjbHVkZWRTY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTE4NjUsNyArMTg2NSw3IEBAIHB1
YmxpYzoKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihyb290TGF5ZXIp
OwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShyb290TGF5ZXItPmJv
dW5kcygpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnModXBkYXRlciwg
c3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKHF1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoKSwgY2hpbGQyLT5vY2NsdWRlZFNjcmVlblNwYWNl
KCkuYm91bmRzKCkpOwpAQCAtMTkyNiw4ICsxOTI2LDggQEAgcHVibGljOgogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihsYXllcnNbMF0uZ2V0KCkpOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShsYXllcnNbMF0tPmJvdW5kcygpKTsKICAgICAg
ICAgQVNTRVJUX1RSVUUobV9sYXllclRyZWVIb3N0LT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcklm
TmVlZGVkKCkpOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXI7Ci0gICAgICAgIG1f
bGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKHVwZGF0ZXIsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOworICAgICAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSBxdWV1ZTsKKyAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMocXVldWUsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmNvbW1pdENv
bXBsZXRlKCk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1TdXJmYWNlcy0xOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJl
VXBkYXRlQ29udHJvbGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQ0OTJlOWVjMDhh
Nzk5ODlhNjY0NGEzZjVkZWFhYzZlNDZhYzBkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QuY3BwCkBA
IC0wLDAgKzEsNTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
bmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJDQ1Nj
aGVkdWxlclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgi
CisjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgorI2luY2x1
ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZAorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgorCisjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0
czsKK3VzaW5nIHRlc3Rpbmc6OlRlc3Q7CisKKworbmFtZXNwYWNlIHsKKworY29uc3QgaW50IGtG
bHVzaFBlcmlvZEZ1bGwgPSA0OworY29uc3QgaW50IGtGbHVzaFBlcmlvZFBhcnRpYWwgPSBrRmx1
c2hQZXJpb2RGdWxsOworCitjbGFzcyBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdDsKKwor
Y2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0IDogcHVibGljIEZha2VXZWJH
cmFwaGljc0NvbnRleHQzRCB7CitwdWJsaWM6CisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JV
cGxvYWRUZXN0KENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0ICp0ZXN0KQorICAgICAgICA6
IG1fdGVzdCh0ZXN0KQorICAgICAgICAsIG1fc3VwcG9ydFNoYWxsb3dGbHVzaCh0cnVlKQorICAg
IHsgfQorCisgICAgdmlydHVhbCB2b2lkIGZsdXNoKHZvaWQpOworICAgIHZpcnR1YWwgdm9pZCBz
aGFsbG93Rmx1c2hDSFJPTUlVTSh2b2lkKTsKKyAgICB2aXJ0dWFsIEdyR0xJbnRlcmZhY2UqIG9u
Q3JlYXRlR3JHTEludGVyZmFjZSgpIHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1YWwgV2ViU3Ry
aW5nIGdldFN0cmluZyhXR0MzRGVudW0gbmFtZSkKKyAgICB7CisgICAgICAgIGlmIChtX3N1cHBv
cnRTaGFsbG93Rmx1c2gpCisgICAgICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCJHTF9DSFJPTUlV
TV9zaGFsbG93X2ZsdXNoIik7CisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIiIpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCogbV90ZXN0Owor
ICAgIGJvb2wgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoOworfTsKKworCitjbGFzcyBUZXh0dXJlVXBs
b2FkZXJGb3JVcGxvYWRUZXN0IDogcHVibGljIEZha2VUZXh0dXJlVXBsb2FkZXIgeworcHVibGlj
OgorICAgIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QoQ0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlclRlc3QgKnRlc3QpIDogbV90ZXN0KHRlc3QpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGJl
Z2luVXBsb2FkcygpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyKiwgUGFyYW1ldGVycykgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlclRlc3QqIG1fdGVzdDsKK307CisKK2NsYXNzIFRleHR1cmVGb3JV
cGxvYWRUZXN0IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworcHVibGlj
OgorICAgIFRleHR1cmVGb3JVcGxvYWRUZXN0KCkgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKGFkb3B0UHRyPENDUHJpb3JpdGl6ZWRUZXh0dXJlPigwKSkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpIHsgfQorfTsKKworCitjbGFzcyBDQ1RleHR1
cmVVcGRhdGVDb250cm9sbGVyVGVzdCA6IHB1YmxpYyBUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ1Rl
eHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCgpCisgICAgOiBtX3F1ZXVlKGFkb3B0UHRyKG5ldyBD
Q1RleHR1cmVVcGRhdGVRdWV1ZSkpCisgICAgLCBtX3VwbG9hZGVyKHRoaXMpCisgICAgLCBtX2Z1
bGxVcGxvYWRDb3VudEV4cGVjdGVkKDApCisgICAgLCBtX3BhcnRpYWxDb3VudEV4cGVjdGVkKDAp
CisgICAgLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCgwKQorICAgICwgbV9tYXhVcGxvYWRD
b3VudFBlclVwZGF0ZSgwKQorICAgICwgbV9udW1CZWdpblVwbG9hZHMoMCkKKyAgICAsIG1fbnVt
RW5kVXBsb2FkcygwKQorICAgICwgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMoMCkKKyAgICAsIG1f
bnVtRGFuZ2xpbmdVcGxvYWRzKDApCisgICAgLCBtX251bVRvdGFsVXBsb2FkcygwKQorICAgICwg
bV9udW1Ub3RhbEZsdXNoZXMoMCkKKyAgICAsIG1fbnVtUHJldmlvdXNVcGxvYWRzKDApCisgICAg
LCBtX251bVByZXZpb3VzRmx1c2hlcygwKQorICAgIHsgfQorCitwdWJsaWM6CisgICAgdm9pZCBv
bkZsdXNoKCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIGZvciBiYWNrLXRvLWJhY2sgZmx1c2hl
cy4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzKSA8PCAiQmFj
ay10by1iYWNrIGZsdXNoZXMgZGV0ZWN0ZWQuIjsKKworICAgICAgICAvLyBDaGVjayBmb3IgcHJl
bWF0dXJlIGZsdXNoZXMKKyAgICAgICAgaWYgKG1fbnVtUHJldmlvdXNVcGxvYWRzICE9IG1fbWF4
VXBsb2FkQ291bnRQZXJVcGRhdGUpIHsKKyAgICAgICAgICAgIGlmIChtX251bVRvdGFsVXBsb2Fk
cyA8IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgRVhQRUNUX0dF
KG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8PCAiUHJlbWF0dXJlIGZs
dXNoIGRldGVjdGVkIGluIGZ1bGwgdXBsb2Fkcy4iOworICAgICAgICAgICAgZWxzZSBpZiAobV9u
dW1Ub3RhbFVwbG9hZHMgPiBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkICYmIG1fbnVtVG90YWxV
cGxvYWRzIDwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgRVhQ
RUNUX0dFKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RQYXJ0aWFsKSA8PCAiUHJl
bWF0dXJlIGZsdXNoIGRldGVjdGVkIGluIHBhcnRpYWwgdXBsb2Fkcy4iOworICAgICAgICB9CisK
KyAgICAgICAgbV9udW1EYW5nbGluZ1VwbG9hZHMgPSAwOworICAgICAgICBtX251bUNvbnNlY3V0
aXZlRmx1c2hlcysrOworICAgICAgICBtX251bVRvdGFsRmx1c2hlcysrOworICAgICAgICBtX251
bVByZXZpb3VzRmx1c2hlcysrOworICAgIH0KKworICAgIHZvaWQgb25CZWdpblVwbG9hZHMoKQor
ICAgIHsKKyAgICAgICAgbV9udW1QcmV2aW91c0ZsdXNoZXMgPSAwOworICAgICAgICBtX251bVBy
ZXZpb3VzVXBsb2FkcyA9IDA7CisgICAgICAgIG1fbnVtQmVnaW5VcGxvYWRzKys7CisgICAgfQor
CisgICAgdm9pZCBvblVwbG9hZCgpCisgICAgeworICAgICAgICAvLyBDaGVjayBmb3IgdG9vIG1h
bnkgY29uc2VjdXRpdmUgdXBsb2FkcworICAgICAgICBpZiAobV9udW1Ub3RhbFVwbG9hZHMgPCBt
X2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKQorICAgICAgICAgICAgRVhQRUNUX0xUKG1fbnVtRGFu
Z2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8PCAiVG9vIG1hbnkgY29uc2VjdXRpdmUg
ZnVsbCB1cGxvYWRzIGRldGVjdGVkLiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEVYUEVD
VF9MVChtX251bURhbmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFydGlhbCkgPDwgIlRvbyBt
YW55IGNvbnNlY3V0aXZlIHBhcnRpYWwgdXBsb2FkcyBkZXRlY3RlZC4iOworCisgICAgICAgIG1f
bnVtQ29uc2VjdXRpdmVGbHVzaGVzID0gMDsKKyAgICAgICAgbV9udW1EYW5nbGluZ1VwbG9hZHMr
KzsKKyAgICAgICAgbV9udW1Ub3RhbFVwbG9hZHMrKzsKKyAgICAgICAgbV9udW1QcmV2aW91c1Vw
bG9hZHMrKzsKKyAgICB9CisKKyAgICB2b2lkIG9uRW5kVXBsb2FkcygpCisgICAgeworICAgICAg
ICBFWFBFQ1RfRVEoMCwgbV9udW1EYW5nbGluZ1VwbG9hZHMpIDw8ICJMYXN0IHVwbG9hZCB3YXNu
J3QgZm9sbG93ZWQgYnkgYSBmbHVzaC4iOworCisgICAgICAgIC8vIE5vdGU6IFRoZSBtX251bVRv
dGFsVXBsb2FkcyAhPSBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkIGNvbXBhcmlzb24KKyAgICAg
ICAgLy8gYWxsb3dzIGZvciB0aGUgcXVvdGEgbm90IHRvIGJlIGhpdCBpbiB0aGUgY2FzZSB3aGVy
ZSB3ZSBhcmUgdHJhc2l0aW9uaW5nCisgICAgICAgIC8vIGZyb20gZnVsbCB1cGxvYWRzIHRvIHBh
cnRpYWwgdXBsb2Fkcy4KKyAgICAgICAgaWYgKG1fbnVtVG90YWxVcGxvYWRzICE9IG1fdG90YWxV
cGxvYWRDb3VudEV4cGVjdGVkICYmIG1fbnVtVG90YWxVcGxvYWRzICE9IG1fZnVsbFVwbG9hZENv
dW50RXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShtX21heFVwbG9hZENvdW50UGVy
VXBkYXRlLCBtX251bVByZXZpb3VzVXBsb2FkcykKKyAgICAgICAgICAgICAgICA8PCAiZW5kVXBs
b2FkKCkgd2FzIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSB0ZXh0dXJlcyB0byB1cGxvYWQsIGJ1dCB0
aGUgdXBsb2FkIHF1b3RhIGhhc24ndCBiZWVuIGZpbGxlZC4iOworICAgICAgICB9CisKKyAgICAg
ICAgbV9udW1FbmRVcGxvYWRzKys7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2
b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIE93blB0cjxXZWJUaHJlYWQ+IHRocmVhZDsKKyAg
ICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworCisgICAgICAg
IG1fY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCgKKyAgICAgICAgICAgICAg
ICAgICAgYWRvcHRQdHIobmV3IFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2FkVGVzdCh0aGlz
KSkpOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAg
ICAgbV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250
ZXh0LmdldCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsK
KyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVRdWV1ZShpbnQgY291bnQpCisgICAgeworICAgICAgICBt
X2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkICs9IGNvdW50OworICAgICAgICBtX3RvdGFsVXBsb2Fk
Q291bnRFeHBlY3RlZCArPSBjb3VudDsKKworICAgICAgICBjb25zdCBJbnRSZWN0IHJlY3QoMCwg
MCwgMzAwLCAxNTApOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisg
ICAgICAgICAgICBtX3F1ZXVlLT5hcHBlbmRGdWxsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFy
YW1ldGVycygmbV90ZXh0dXJlLCByZWN0LCByZWN0KSk7CisgICAgfQorCisgICAgdm9pZCBhcHBl
bmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlUXVldWUoaW50IGNvdW50KQorICAgIHsKKyAgICAgICAg
bV9wYXJ0aWFsQ291bnRFeHBlY3RlZCArPSBjb3VudDsKKyAgICAgICAgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQgKz0gY291bnQ7CisKKyAgICAgICAgY29uc3QgSW50UmVjdCByZWN0KDAsIDAs
IDEwMCwgMTAwKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAg
ICAgICAgICAgbV9xdWV1ZS0+YXBwZW5kUGFydGlhbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBh
cmFtZXRlcnMoJm1fdGV4dHVyZSwgcmVjdCwgcmVjdCkpOworICAgIH0KKworICAgIHZvaWQgc2V0
TWF4VXBsb2FkQ291bnRQZXJVcGRhdGUoaW50IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9tYXhV
cGxvYWRDb3VudFBlclVwZGF0ZSA9IGNvdW50OworICAgIH0KKworcHJvdGVjdGVkOgorICAgIC8v
IENsYXNzZXMgcmVxdWlyZWQgdG8gaW50ZXJhY3QgYW5kIHRlc3QgdGhlIENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXIKKyAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsKKyAg
ICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgT3du
UHRyPENDVGV4dHVyZVVwZGF0ZVF1ZXVlPiBtX3F1ZXVlOworICAgIFRleHR1cmVGb3JVcGxvYWRU
ZXN0IG1fdGV4dHVyZTsKKyAgICBGYWtlVGV4dHVyZUNvcGllciBtX2NvcGllcjsKKyAgICBUZXh0
dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IG1fdXBsb2FkZXI7CisKKyAgICAvLyBQcm9wZXJ0aWVz
IC8gZXhwZWN0YXRpb25zIG9mIHRoaXMgdGVzdAorICAgIGludCBtX2Z1bGxVcGxvYWRDb3VudEV4
cGVjdGVkOworICAgIGludCBtX3BhcnRpYWxDb3VudEV4cGVjdGVkOworICAgIGludCBtX3RvdGFs
VXBsb2FkQ291bnRFeHBlY3RlZDsKKyAgICBpbnQgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZTsK
KworICAgIC8vIER5bmFtaWMgcHJvcGVydGllcyBvZiB0aGlzIHRlc3QKKyAgICBpbnQgbV9udW1C
ZWdpblVwbG9hZHM7CisgICAgaW50IG1fbnVtRW5kVXBsb2FkczsKKyAgICBpbnQgbV9udW1Db25z
ZWN1dGl2ZUZsdXNoZXM7CisgICAgaW50IG1fbnVtRGFuZ2xpbmdVcGxvYWRzOworICAgIGludCBt
X251bVRvdGFsVXBsb2FkczsKKyAgICBpbnQgbV9udW1Ub3RhbEZsdXNoZXM7CisgICAgaW50IG1f
bnVtUHJldmlvdXNVcGxvYWRzOworICAgIGludCBtX251bVByZXZpb3VzRmx1c2hlczsKK307CisK
K3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0OjpmbHVzaCh2b2lkKQorewor
ICAgIG1fdGVzdC0+b25GbHVzaCgpOworfQorCit2b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERm9y
VXBsb2FkVGVzdDo6c2hhbGxvd0ZsdXNoQ0hST01JVU0odm9pZCkKK3sKKyAgICBtX3Rlc3QtPm9u
Rmx1c2goKTsKK30KKwordm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0OjpiZWdpblVw
bG9hZHMoKQoreworICAgIG1fdGVzdC0+b25CZWdpblVwbG9hZHMoKTsKK30KKwordm9pZCBUZXh0
dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0OjplbmRVcGxvYWRzKCkKK3sKKyAgICBtX3Rlc3QtPm9u
RW5kVXBsb2FkcygpOworfQorCit2b2lkIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6OnVw
bG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwgUGFyYW1ldGVycykKK3sK
KyAgICBtX3Rlc3QtPm9uVXBsb2FkKCk7Cit9CisKKworLy8gWkVSTyBVUExPQURTIFRFU1RTCitU
RVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIFplcm9VcGxvYWRzKQoreworICAg
IGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVRdWV1ZSgwKTsKKyAgICBhcHBlbmRQYXJ0aWFsVXBs
b2Fkc1RvVXBkYXRlUXVldWUoMCk7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBk
YXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9h
ZGVyLCBtX3F1ZXVlLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBF
WFBFQ1RfRVEoMCwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgwLCBtX251bUVu
ZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgwLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisgICAg
RVhQRUNUX0VRKDAsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworCisvLyBPTkUgVVBMT0FE
IFRFU1RTCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE9uZUZ1bGxVcGxv
YWQpCit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZVF1ZXVlKDEpOworICAgIGFwcGVu
ZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVRdWV1ZSgwKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVU
ZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIs
IG1fcXVldWUuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVD
VF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBs
b2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBF
Q1RfRVEoMSwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBk
YXRlQ29udHJvbGxlclRlc3QsIE9uZVBhcnRpYWxVcGxvYWQpCit7CisgICAgYXBwZW5kRnVsbFVw
bG9hZHNUb1VwZGF0ZVF1ZXVlKDApOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVR
dWV1ZSgxKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fcXVldWUuZ2V0KCksIG1fdG90YWxV
cGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fk
cyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEs
IG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1QcmV2aW91c1Vw
bG9hZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE9uZUZ1
bGxPbmVQYXJ0aWFsVXBsb2FkKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVRdWV1
ZSgxKTsKKyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlUXVldWUoMSk7CisgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3F1ZXVlLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3Rl
ZCk7CisKKyAgICAvLyBXZSBleHBlY3QgdGhlIGZ1bGwgdXBsb2FkcyB0byBiZSBmb2xsb3dlZCBi
eSBhIGZsdXNoCisgICAgLy8gYmVmb3JlIHRoZSBwYXJ0aWFsIHVwbG9hZHMgYmVnaW4uCisgICAg
RVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1F
bmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAg
IEVYUEVDVF9FUSgyLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisKKworLy8gTk8gUkVNQUlO
REVSIFRFU1RTCisvLyBUaGlzIGNsYXNzIG9mIHRlc3RzIHVwbG9hZCBhIG51bWJlciBvZiB0ZXh0
dXJlcyB0aGF0IGlzIGEgbXVsdGlwbGUgb2YgdGhlIGZsdXNoIHBlcmlvZC4KK2NvbnN0IGludCBm
dWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgPSA3OworY29uc3QgaW50IGZ1bGxOb1JlbWFpbmRlckNv
dW50ID0gZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICoga0ZsdXNoUGVyaW9kRnVsbDsKKworY29u
c3QgaW50IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciA9IDExOworY29uc3QgaW50IHBhcnRp
YWxOb1JlbWFpbmRlckNvdW50ID0gcGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyICoga0ZsdXNo
UGVyaW9kUGFydGlhbDsKKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBN
YW55RnVsbFVwbG9hZHNOb1JlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBk
YXRlUXVldWUoZnVsbE5vUmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRz
VG9VcGRhdGVRdWV1ZSgwKTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fcXVldWUuZ2V0KCks
IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJl
Z2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQ
RUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwor
ICAgIEVYUEVDVF9FUShmdWxsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMp
OworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE1hbnlQYXJ0aWFs
VXBsb2Fkc05vUmVtYWluZGVyKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVRdWV1
ZSgwKTsKKyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlUXVldWUocGFydGlhbE5vUmVt
YWluZGVyQ291bnQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwor
ICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV9xdWV1ZS5nZXQoKSwgbV90
b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5V
cGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1Rf
RVEocGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Cisg
ICAgRVhQRUNUX0VRKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fk
cyk7Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFueUZ1bGxN
YW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1Rv
VXBkYXRlUXVldWUoZnVsbE5vUmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxv
YWRzVG9VcGRhdGVRdWV1ZShwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCk7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
cjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBtX3F1ZXVlLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisK
KyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBt
X251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIg
KyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAg
ICBFWFBFQ1RfRVEoZnVsbE5vUmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTm9SZW1haW5kZXJDb3Vu
dCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCisKKy8vIE1JTi9NQVggUkVNQUlOREVSIFRF
U1RTCisvLyBUaGlzIGNsYXNzIG9mIHRlc3RzIG1peCBhbmQgbWF0Y2ggdXBsb2FkaW5nIDEgbW9y
ZSBhbmQgMSBsZXNzIHRleHR1cmUKKy8vIHRoYW4gYSBtdWx0aXBsZSBvZiB0aGUgZmx1c2ggcGVy
aW9kLgorCitjb25zdCBpbnQgZnVsbE1pblJlbWFpbmRlckNvdW50ID0gZnVsbE5vUmVtYWluZGVy
Q291bnQgKyAxOworY29uc3QgaW50IGZ1bGxNYXhSZW1haW5kZXJDb3VudCA9IGZ1bGxOb1JlbWFp
bmRlckNvdW50IC0gMTsKK2NvbnN0IGludCBwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQgPSBwYXJ0
aWFsTm9SZW1haW5kZXJDb3VudCArIDE7Citjb25zdCBpbnQgcGFydGlhbE1heFJlbWFpbmRlckNv
dW50ID0gcGFydGlhbE5vUmVtYWluZGVyQ291bnQgLSAxOworCitURVNUX0YoQ0NUZXh0dXJlVXBk
YXRlQ29udHJvbGxlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbE1pblJlbWFpbmRlcikKK3sKKyAg
ICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlUXVldWUoZnVsbE1pblJlbWFpbmRlckNvdW50KTsK
KyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlUXVldWUocGFydGlhbE1pblJlbWFpbmRl
ckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fcXVldWUuZ2V0KCksIG1fdG90YWxV
cGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fk
cyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKGZ1
bGxVcGxvYWRGbHVzaE11bHRpcGxlciArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciArIDIs
IG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbE1pblJlbWFpbmRlckNv
dW50ICsgcGFydGlhbE1pblJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9
CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFueUZ1bGxBbmRQYXJ0
aWFsVXBsb2Fkc01heFJlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRl
UXVldWUoZnVsbE1heFJlbWFpbmRlckNvdW50KTsKKyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1Rv
VXBkYXRlUXVldWUocGFydGlhbE1heFJlbWFpbmRlckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1
cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBs
b2FkZXIsIG1fcXVldWUuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAg
IEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVt
RW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciArIHBh
cnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVY
UEVDVF9FUShmdWxsTWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQs
IG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXJUZXN0LCBNYW55RnVsbE1pblJlbWFpbmRlck1hbnlQYXJ0aWFsTWF4UmVtYWluZGVyKQor
eworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVRdWV1ZShmdWxsTWluUmVtYWluZGVyQ291
bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVRdWV1ZShwYXJ0aWFsTWF4UmVt
YWluZGVyQ291bnQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwor
ICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV9xdWV1ZS5nZXQoKSwgbV90
b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5V
cGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1Rf
RVEoKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlcisxKSArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRp
cGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUShmdWxsTWluUmVtYWlu
ZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRz
KTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBNYW55RnVsbE1h
eFJlbWFpbmRlck1hbnlQYXJ0aWFsTWluUmVtYWluZGVyKQoreworICAgIGFwcGVuZEZ1bGxVcGxv
YWRzVG9VcGRhdGVRdWV1ZShmdWxsTWF4UmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRp
YWxVcGxvYWRzVG9VcGRhdGVRdWV1ZShwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQpOworICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29w
aWVyLCAmbV91cGxvYWRlciwgbV9xdWV1ZS5nZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0
ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1Rf
RVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbFVwbG9hZEZsdXNoTXVs
dGlwbGVyICsgKHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlcisxKSwgbV9udW1QcmV2aW91c0Zs
dXNoZXMpOworICAgIEVYUEVDVF9FUShmdWxsTWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWlu
UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworCisvLyBNVUxUSVBM
RSBVUERBVEUgVEVTVFMKKy8vIFRoZXNlIHRlc3RzIGF0dGVtcHQgdG8gdXBsb2FkIHRvbyBtYW55
IHRleHR1cmVzIGF0IG9uY2UsIHJlcXVpcmluZworLy8gbXVsdGlwbGUgY2FsbHMgdG8gdXBkYXRl
KCkuCisKK2ludCBleHBlY3RlZEZsdXNoZXMoaW50IHVwbG9hZHMsIGludCBmbHVzaFBlcmlvZCkK
K3sKKyAgICByZXR1cm4gKHVwbG9hZHMgKyBmbHVzaFBlcmlvZCAtIDEpIC8gZmx1c2hQZXJpb2Q7
Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgVHJpcGxlVXBkYXRl
RmluYWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKK3sKKyAgICBjb25zdCBpbnQga01heFVwbG9hZHNQ
ZXJVcGRhdGUgPSA0MDsKKyAgICBjb25zdCBpbnQga0Z1bGxVcGxvYWRzID0gMTAwOworICAgIGNv
bnN0IGludCBrUGFydGlhbFVwbG9hZHMgPSAyMDsKKworICAgIGludCBleHBlY3RlZFByZXZpb3Vz
Rmx1c2hlcyA9IDA7CisgICAgaW50IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0gMDsKKworICAg
IHNldE1heFVwbG9hZENvdW50UGVyVXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBh
cHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlUXVldWUoa0Z1bGxVcGxvYWRzKTsKKyAgICBhcHBlbmRQ
YXJ0aWFsVXBsb2Fkc1RvVXBkYXRlUXVldWUoa1BhcnRpYWxVcGxvYWRzKTsKKworICAgIC8vIEZp
cnN0IHVwZGF0ZSAoNDAgZnVsbCkKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fcXVldWUuZ2V0
KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2lu
VXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAgICBleHBl
Y3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVwZGF0
ZSwga0ZsdXNoUGVyaW9kRnVsbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVz
aGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzVXBsb2Fk
cyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOworICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3Vz
VXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOworCisgICAgLy8gU2Vjb25kIHVwZGF0ZSAo
NDAgZnVsbCkKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fcXVldWUu
Z2V0KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgyLCBtX251bUJl
Z2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDIsIG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAgICBl
eHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVw
ZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNG
bHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzVXBs
b2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOworICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZp
b3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOworCisgICAgLy8gVGhpcmQgdXBkYXRl
ICgyMCBmdWxsLCAyMCBwYXJ0aWFsKQorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVw
ZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxv
YWRlciwgbV9xdWV1ZS5nZXQoKSwga01heFVwbG9hZHNQZXJVcGRhdGUpOworCisgICAgRVhQRUNU
X0VRKDMsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxv
YWRzKTsKKworICAgIGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzID0gZXhwZWN0ZWRGbHVzaGVzKGtG
dWxsVXBsb2Fkcy1rTWF4VXBsb2Fkc1BlclVwZGF0ZSoyLCBrRmx1c2hQZXJpb2RGdWxsKSArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZEZsdXNoZXMoa1BhcnRpYWxVcGxv
YWRzLCBrRmx1c2hQZXJpb2RQYXJ0aWFsKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91
c0ZsdXNoZXMsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKworICAgIGV4cGVjdGVkUHJldmlvdXNV
cGxvYWRzID0gKGtGdWxsVXBsb2Fkcy1rTWF4VXBsb2Fkc1BlclVwZGF0ZSoyKStrUGFydGlhbFVw
bG9hZHM7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251bVByZXZp
b3VzVXBsb2Fkcyk7CisKKyAgICAvLyBGaW5hbCBzYW5pdHkgY2hlY2tzCisgICAgRVhQRUNUX0VR
KGtGdWxsVXBsb2FkcyArIGtQYXJ0aWFsVXBsb2FkcywgbV9udW1Ub3RhbFVwbG9hZHMpOworfQor
CitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFs
VXBkYXRlQWxsUGFydGlhbCkKK3sKKyAgICBjb25zdCBpbnQga01heFVwbG9hZHNQZXJVcGRhdGUg
PSA0MDsKKyAgICBjb25zdCBpbnQga0Z1bGxVcGxvYWRzID0gNzA7CisgICAgY29uc3QgaW50IGtQ
YXJ0aWFsVXBsb2FkcyA9IDMwOworCisgICAgaW50IGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzID0g
MDsKKyAgICBpbnQgZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMgPSAwOworCisgICAgc2V0TWF4VXBs
b2FkQ291bnRQZXJVcGRhdGUoa01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIGFwcGVuZEZ1bGxV
cGxvYWRzVG9VcGRhdGVRdWV1ZShrRnVsbFVwbG9hZHMpOworICAgIGFwcGVuZFBhcnRpYWxVcGxv
YWRzVG9VcGRhdGVRdWV1ZShrUGFydGlhbFVwbG9hZHMpOworCisgICAgLy8gRmlyc3QgdXBkYXRl
ICg0MCBmdWxsKQorICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAg
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV9xdWV1ZS5nZXQoKSwga01heFVw
bG9hZHNQZXJVcGRhdGUpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsK
KyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKworICAgIGV4cGVjdGVkUHJldmlv
dXNGbHVzaGVzID0gZXhwZWN0ZWRGbHVzaGVzKGtNYXhVcGxvYWRzUGVyVXBkYXRlLCBrRmx1c2hQ
ZXJpb2RGdWxsKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMsIG1fbnVt
UHJldmlvdXNGbHVzaGVzKTsKKworICAgIGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0ga01heFVw
bG9hZHNQZXJVcGRhdGU7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBt
X251bVByZXZpb3VzVXBsb2Fkcyk7CisKKyAgICAvLyBTZWNvbmQgdXBkYXRlICgzMCBmdWxsLCBv
cHRpb25hbGx5IDEwIHBhcnRpYWwpCisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBk
YXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9h
ZGVyLCBtX3F1ZXVlLmdldCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisKKyAgICBFWFBFQ1Rf
RVEoMiwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgyLCBtX251bUVuZFVwbG9h
ZHMpOworICAgIEVYUEVDVF9MRShtX251bVByZXZpb3VzVXBsb2Fkcywga01heFVwbG9hZHNQZXJV
cGRhdGUpOworICAgIC8vIEJlIGxlbmllbnQgb24gdGhlIGV4YWN0IG51bWJlciBvZiBmbHVzaGVz
IGhlcmUsIGFzIHRoZSBudW1iZXIgb2YgZmx1c2hlcworICAgIC8vIHdpbGwgZGVwZW5kIG9uIHdo
ZXRoZXIgc29tZSBwYXJ0aWFsIHVwbG9hZHMgd2VyZSBwZXJmb3JtZWQuCisgICAgLy8gb25GbHVz
aCgpLCBvblVwbG9hZCgpLCBhbmQgb25FbmRVcGxvYWQoKSB3aWxsIGRvIGJhc2ljIGZsdXNoIGNo
ZWNrcyBmb3IgdXMgYW55d2F5LgorCisgICAgLy8gVGhpcmQgdXBkYXRlICgzMCBwYXJ0aWFsIE9S
IDIwIHBhcnRpYWwgaWYgMTAgcGFydGlhbCB1cGxvYWRlZCBpbiBzZWNvbmQgdXBkYXRlKQorICAg
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV9xdWV1ZS5nZXQoKSwga01heFVw
bG9hZHNQZXJVcGRhdGUpOworCisgICAgRVhQRUNUX0VRKDMsIG1fbnVtQmVnaW5VcGxvYWRzKTsK
KyAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfTEUobV9udW1Q
cmV2aW91c1VwbG9hZHMsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICAvLyBCZSBsZW5pZW50
IG9uIHRoZSBleGFjdCBudW1iZXIgb2YgZmx1c2hlcyBoZXJlIGFzIHdlbGwuCisKKyAgICAvLyBG
aW5hbCBzYW5pdHkgY2hlY2tzCisgICAgRVhQRUNUX0VRKGtGdWxsVXBsb2FkcyArIGtQYXJ0aWFs
VXBsb2FkcywgbV9udW1Ub3RhbFVwbG9hZHMpOworfQorCit9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZiMzVjMDQ4Y2FiMDIxZjBmOTJjZjQ0
OGI2ZTJiZTUzNjQxODEwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCi0KLSNp
bmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiRmFrZVdlYkdyYXBo
aWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCi0j
aW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgotI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUgInBsYXRmb3Jt
L1dlYlRocmVhZC5oIgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKLXVzaW5nIHRlc3Rpbmc6OlRlc3Q7
Ci0KLQotbmFtZXNwYWNlIHsKLQotY29uc3QgaW50IGtGbHVzaFBlcmlvZEZ1bGwgPSA0OwotY29u
c3QgaW50IGtGbHVzaFBlcmlvZFBhcnRpYWwgPSBrRmx1c2hQZXJpb2RGdWxsOwotCi1jbGFzcyBD
Q1RleHR1cmVVcGRhdGVyVGVzdDsKLQotY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxv
YWRUZXN0IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7Ci1wdWJsaWM6Ci0gICAg
V2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0KENDVGV4dHVyZVVwZGF0ZXJUZXN0ICp0
ZXN0KQotICAgICAgICA6IG1fdGVzdCh0ZXN0KQotICAgICAgICAsIG1fc3VwcG9ydFNoYWxsb3dG
bHVzaCh0cnVlKQotICAgIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGZsdXNoKHZvaWQpOwotICAg
IHZpcnR1YWwgdm9pZCBzaGFsbG93Rmx1c2hDSFJPTUlVTSh2b2lkKTsKLSAgICB2aXJ0dWFsIEdy
R0xJbnRlcmZhY2UqIG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpIHsgcmV0dXJuIDA7IH0KLQotICAg
IHZpcnR1YWwgV2ViU3RyaW5nIGdldFN0cmluZyhXR0MzRGVudW0gbmFtZSkKLSAgICB7Ci0gICAg
ICAgIGlmIChtX3N1cHBvcnRTaGFsbG93Rmx1c2gpCi0gICAgICAgICAgICByZXR1cm4gV2ViU3Ry
aW5nKCJHTF9DSFJPTUlVTV9zaGFsbG93X2ZsdXNoIik7Ci0gICAgICAgIHJldHVybiBXZWJTdHJp
bmcoIiIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVyVGVzdCogbV90
ZXN0OwotICAgIGJvb2wgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoOwotfTsKLQotCi1jbGFzcyBUZXh0
dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IDogcHVibGljIEZha2VUZXh0dXJlVXBsb2FkZXIgewot
cHVibGljOgotICAgIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QoQ0NUZXh0dXJlVXBkYXRl
clRlc3QgKnRlc3QpIDogbV90ZXN0KHRlc3QpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGJlZ2lu
VXBsb2FkcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRzKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6TGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29y
ZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7Ci0KLXBy
aXZhdGU6Ci0gICAgQ0NUZXh0dXJlVXBkYXRlclRlc3QqIG1fdGVzdDsKLX07Ci0KLQotY2xhc3Mg
VGV4dHVyZUZvclVwbG9hZFRlc3QgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSB7Ci1wdWJsaWM6Ci0gICAgVGV4dHVyZUZvclVwbG9hZFRlc3QoKSA6IExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUoYWRvcHRQdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+KDApKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgeyB9Ci19OwotCi0KLWNs
YXNzIENDVGV4dHVyZVVwZGF0ZXJUZXN0IDogcHVibGljIFRlc3QgewotcHVibGljOgotICAgIEND
VGV4dHVyZVVwZGF0ZXJUZXN0KCkKLSAgICA6IG1fdXBsb2FkZXIodGhpcykKLSAgICAsIG1fZnVs
bFVwbG9hZENvdW50RXhwZWN0ZWQoMCkKLSAgICAsIG1fcGFydGlhbENvdW50RXhwZWN0ZWQoMCkK
LSAgICAsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKDApCi0gICAgLCBtX21heFVwbG9hZENv
dW50UGVyVXBkYXRlKDApCi0gICAgLCBtX251bUJlZ2luVXBsb2FkcygwKQotICAgICwgbV9udW1F
bmRVcGxvYWRzKDApCi0gICAgLCBtX251bUNvbnNlY3V0aXZlRmx1c2hlcygwKQotICAgICwgbV9u
dW1EYW5nbGluZ1VwbG9hZHMoMCkKLSAgICAsIG1fbnVtVG90YWxVcGxvYWRzKDApCi0gICAgLCBt
X251bVRvdGFsRmx1c2hlcygwKQotICAgICwgbV9udW1QcmV2aW91c1VwbG9hZHMoMCkKLSAgICAs
IG1fbnVtUHJldmlvdXNGbHVzaGVzKDApCi0gICAgeyB9Ci0KLXB1YmxpYzoKLSAgICB2b2lkIG9u
Rmx1c2goKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgZm9yIGJhY2stdG8tYmFjayBmbHVzaGVz
LgotICAgICAgICBFWFBFQ1RfRVEoMCwgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMpIDw8ICJCYWNr
LXRvLWJhY2sgZmx1c2hlcyBkZXRlY3RlZC4iOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBwcmVt
YXR1cmUgZmx1c2hlcwotICAgICAgICBpZiAobV9udW1QcmV2aW91c1VwbG9hZHMgIT0gbV9tYXhV
cGxvYWRDb3VudFBlclVwZGF0ZSkgewotICAgICAgICAgICAgaWYgKG1fbnVtVG90YWxVcGxvYWRz
IDwgbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCkKLSAgICAgICAgICAgICAgICBFWFBFQ1RfR0Uo
bV9udW1EYW5nbGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZEZ1bGwpIDw8ICJQcmVtYXR1cmUgZmx1
c2ggZGV0ZWN0ZWQgaW4gZnVsbCB1cGxvYWRzLiI7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX251
bVRvdGFsVXBsb2FkcyA+IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQgJiYgbV9udW1Ub3RhbFVw
bG9hZHMgPCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCkKLSAgICAgICAgICAgICAgICBFWFBF
Q1RfR0UobV9udW1EYW5nbGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZFBhcnRpYWwpIDw8ICJQcmVt
YXR1cmUgZmx1c2ggZGV0ZWN0ZWQgaW4gcGFydGlhbCB1cGxvYWRzLiI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBtX251bURhbmdsaW5nVXBsb2FkcyA9IDA7Ci0gICAgICAgIG1fbnVtQ29uc2VjdXRp
dmVGbHVzaGVzKys7Ci0gICAgICAgIG1fbnVtVG90YWxGbHVzaGVzKys7Ci0gICAgICAgIG1fbnVt
UHJldmlvdXNGbHVzaGVzKys7Ci0gICAgfQotCi0gICAgdm9pZCBvbkJlZ2luVXBsb2FkcygpCi0g
ICAgewotICAgICAgICBtX251bVByZXZpb3VzRmx1c2hlcyA9IDA7Ci0gICAgICAgIG1fbnVtUHJl
dmlvdXNVcGxvYWRzID0gMDsKLSAgICAgICAgbV9udW1CZWdpblVwbG9hZHMrKzsKLSAgICB9Ci0K
LSAgICB2b2lkIG9uVXBsb2FkKCkKLSAgICB7Ci0gICAgICAgIC8vIENoZWNrIGZvciB0b28gbWFu
eSBjb25zZWN1dGl2ZSB1cGxvYWRzCi0gICAgICAgIGlmIChtX251bVRvdGFsVXBsb2FkcyA8IG1f
ZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpCi0gICAgICAgICAgICBFWFBFQ1RfTFQobV9udW1EYW5n
bGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZEZ1bGwpIDw8ICJUb28gbWFueSBjb25zZWN1dGl2ZSBm
dWxsIHVwbG9hZHMgZGV0ZWN0ZWQuIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgRVhQRUNU
X0xUKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RQYXJ0aWFsKSA8PCAiVG9vIG1h
bnkgY29uc2VjdXRpdmUgcGFydGlhbCB1cGxvYWRzIGRldGVjdGVkLiI7Ci0KLSAgICAgICAgbV9u
dW1Db25zZWN1dGl2ZUZsdXNoZXMgPSAwOwotICAgICAgICBtX251bURhbmdsaW5nVXBsb2Fkcysr
OwotICAgICAgICBtX251bVRvdGFsVXBsb2FkcysrOwotICAgICAgICBtX251bVByZXZpb3VzVXBs
b2FkcysrOwotICAgIH0KLQotICAgIHZvaWQgb25FbmRVcGxvYWRzKCkKLSAgICB7Ci0gICAgICAg
IEVYUEVDVF9FUSgwLCBtX251bURhbmdsaW5nVXBsb2FkcykgPDwgIkxhc3QgdXBsb2FkIHdhc24n
dCBmb2xsb3dlZCBieSBhIGZsdXNoLiI7Ci0KLSAgICAgICAgLy8gTm90ZTogVGhlIG1fbnVtVG90
YWxVcGxvYWRzICE9IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQgY29tcGFyaXNvbgotICAgICAg
ICAvLyBhbGxvd3MgZm9yIHRoZSBxdW90YSBub3QgdG8gYmUgaGl0IGluIHRoZSBjYXNlIHdoZXJl
IHdlIGFyZSB0cmFzaXRpb25pbmcKLSAgICAgICAgLy8gZnJvbSBmdWxsIHVwbG9hZHMgdG8gcGFy
dGlhbCB1cGxvYWRzLgotICAgICAgICBpZiAobV9udW1Ub3RhbFVwbG9hZHMgIT0gbV90b3RhbFVw
bG9hZENvdW50RXhwZWN0ZWQgJiYgbV9udW1Ub3RhbFVwbG9hZHMgIT0gbV9mdWxsVXBsb2FkQ291
bnRFeHBlY3RlZCkgewotICAgICAgICAgICAgRVhQRUNUX0VRKG1fbWF4VXBsb2FkQ291bnRQZXJV
cGRhdGUsIG1fbnVtUHJldmlvdXNVcGxvYWRzKQotICAgICAgICAgICAgICAgIDw8ICJlbmRVcGxv
YWQoKSB3YXMgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIHRleHR1cmVzIHRvIHVwbG9hZCwgYnV0IHRo
ZSB1cGxvYWQgcXVvdGEgaGFzbid0IGJlZW4gZmlsbGVkLiI7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtX251bUVuZFVwbG9hZHMrKzsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgT3duUHRyPFdlYlRocmVhZD4gdGhyZWFkOwotICAg
ICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7Ci0KLSAgICAgICAg
bV9jb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKAotICAgICAgICAgICAgICAg
ICAgICBhZG9wdFB0cihuZXcgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0KHRoaXMp
KSk7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAg
ICBtX3Jlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRl
eHQuZ2V0KCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewot
ICAgICAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwotICAgIH0KLQotICAgIHZvaWQgYXBw
ZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoaW50IGNvdW50KQotICAgIHsKLSAgICAgICAgbV9mdWxs
VXBsb2FkQ291bnRFeHBlY3RlZCArPSBjb3VudDsKLSAgICAgICAgbV90b3RhbFVwbG9hZENvdW50
RXhwZWN0ZWQgKz0gY291bnQ7Ci0KLSAgICAgICAgY29uc3QgSW50UmVjdCByZWN0KDAsIDAsIDMw
MCwgMTUwKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAg
ICAgICAgbV91cGRhdGVyLmFwcGVuZEZ1bGxVcGRhdGUoJm1fdGV4dHVyZSwgcmVjdCwgcmVjdCk7
Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihpbnQgY291
bnQpCi0gICAgewotICAgICAgICBtX3BhcnRpYWxDb3VudEV4cGVjdGVkICs9IGNvdW50OwotICAg
ICAgICBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCArPSBjb3VudDsKLQotICAgICAgICBjb25z
dCBJbnRSZWN0IHJlY3QoMCwgMCwgMTAwLCAxMDApOwotICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGNvdW50OyBpKyspCi0gICAgICAgICAgICBtX3VwZGF0ZXIuYXBwZW5kUGFydGlhbFVwZGF0
ZSgmbV90ZXh0dXJlLCByZWN0LCByZWN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldE1heFVwbG9h
ZENvdW50UGVyVXBkYXRlKGludCBjb3VudCkKLSAgICB7Ci0gICAgICAgIG1fbWF4VXBsb2FkQ291
bnRQZXJVcGRhdGUgPSBjb3VudDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBDbGFzc2Vz
IHJlcXVpcmVkIHRvIGludGVyYWN0IGFuZCB0ZXN0IHRoZSBDQ1RleHR1cmVVcGRhdGVyCi0gICAg
T3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgT3duUHRyPENDUmVzb3Vy
Y2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwotICAgIENDVGV4dHVyZVVwZGF0ZXIgbV91
cGRhdGVyOwotICAgIFRleHR1cmVGb3JVcGxvYWRUZXN0IG1fdGV4dHVyZTsKLSAgICBGYWtlVGV4
dHVyZUNvcGllciBtX2NvcGllcjsKLSAgICBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IG1f
dXBsb2FkZXI7Ci0KLSAgICAvLyBQcm9wZXJ0aWVzIC8gZXhwZWN0YXRpb25zIG9mIHRoaXMgdGVz
dAotICAgIGludCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkOwotICAgIGludCBtX3BhcnRpYWxD
b3VudEV4cGVjdGVkOwotICAgIGludCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZDsKLSAgICBp
bnQgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZTsKLQotICAgIC8vIER5bmFtaWMgcHJvcGVydGll
cyBvZiB0aGlzIHRlc3QKLSAgICBpbnQgbV9udW1CZWdpblVwbG9hZHM7Ci0gICAgaW50IG1fbnVt
RW5kVXBsb2FkczsKLSAgICBpbnQgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXM7Ci0gICAgaW50IG1f
bnVtRGFuZ2xpbmdVcGxvYWRzOwotICAgIGludCBtX251bVRvdGFsVXBsb2FkczsKLSAgICBpbnQg
bV9udW1Ub3RhbEZsdXNoZXM7Ci0gICAgaW50IG1fbnVtUHJldmlvdXNVcGxvYWRzOwotICAgIGlu
dCBtX251bVByZXZpb3VzRmx1c2hlczsKLX07Ci0KLQotdm9pZCBXZWJHcmFwaGljc0NvbnRleHQz
REZvclVwbG9hZFRlc3Q6OmZsdXNoKHZvaWQpCi17Ci0gICAgbV90ZXN0LT5vbkZsdXNoKCk7Ci19
Ci0KLXZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0OjpzaGFsbG93Rmx1c2hD
SFJPTUlVTSh2b2lkKQotewotICAgIG1fdGVzdC0+b25GbHVzaCgpOwotfQotCi12b2lkIFRleHR1
cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6OmJlZ2luVXBsb2FkcygpCi17Ci0gICAgbV90ZXN0LT5v
bkJlZ2luVXBsb2FkcygpOwotfQotCi12b2lkIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6
OmVuZFVwbG9hZHMoKQotewotICAgIG1fdGVzdC0+b25FbmRVcGxvYWRzKCk7Ci19Ci0KLXZvaWQg
VGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6dXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlcios
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVzdFJlY3QpCi17
Ci0gICAgbV90ZXN0LT5vblVwbG9hZCgpOwotfQotCi0KLS8vIFpFUk8gVVBMT0FEUyBURVNUUwot
VEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBaZXJvVXBsb2FkcykKLXsKLSAgICBhcHBlbmRG
dWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRl
cigwKTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwotCi0gICAg
RVhQRUNUX0VRKDAsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9udW1F
bmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAg
IEVYUEVDVF9FUSgwLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLQotLy8gT05FIFVQTE9B
RCBURVNUUwotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVGdWxsVXBsb2FkKQotewot
ICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxv
YWRzVG9VcGRhdGVyKDApOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBF
Q1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVw
bG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQ
RUNUX0VRKDEsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVw
ZGF0ZXJUZXN0LCBPbmVQYXJ0aWFsVXBsb2FkKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9V
cGRhdGVyKDApOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFs
VXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9h
ZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgx
LCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNV
cGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVGdWxsT25lUGFy
dGlhbFVwbG9hZCkKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigxKTsKLSAgICBh
cHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigxKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRl
ci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0
ZWQpOwotCi0gICAgLy8gV2UgZXhwZWN0IHRoZSBmdWxsIHVwbG9hZHMgdG8gYmUgZm9sbG93ZWQg
YnkgYSBmbHVzaAotICAgIC8vIGJlZm9yZSB0aGUgcGFydGlhbCB1cGxvYWRzIGJlZ2luLgotICAg
IEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVt
RW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAg
ICBFWFBFQ1RfRVEoMiwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi0KLS8vIE5PIFJFTUFJ
TkRFUiBURVNUUwotLy8gVGhpcyBjbGFzcyBvZiB0ZXN0cyB1cGxvYWQgYSBudW1iZXIgb2YgdGV4
dHVyZXMgdGhhdCBpcyBhIG11bHRpcGxlIG9mIHRoZSBmbHVzaCBwZXJpb2QuCi1jb25zdCBpbnQg
ZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyID0gNzsKLWNvbnN0IGludCBmdWxsTm9SZW1haW5kZXJD
b3VudCA9IGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciAqIGtGbHVzaFBlcmlvZEZ1bGw7Ci0KLWNv
bnN0IGludCBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIgPSAxMTsKLWNvbnN0IGludCBwYXJ0
aWFsTm9SZW1haW5kZXJDb3VudCA9IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciAqIGtGbHVz
aFBlcmlvZFBhcnRpYWw7Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxV
cGxvYWRzTm9SZW1haW5kZXIpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVs
bE5vUmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDAp
OwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRl
ci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVy
LCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1C
ZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVY
UEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsK
LSAgICBFWFBFQ1RfRVEoZnVsbE5vUmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRz
KTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55UGFydGlhbFVwbG9hZHNO
b1JlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKLSAgICBh
cHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCk7Ci0g
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVw
ZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1f
dG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2lu
VXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNU
X0VRKHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwot
ICAgIEVYUEVDVF9FUShwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9h
ZHMpOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsTWFueVBhcnRp
YWxVcGxvYWRzTm9SZW1haW5kZXIpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIo
ZnVsbE5vUmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVy
KHBhcnRpYWxOb1JlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQo
KSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwot
Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMSwg
bV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVy
ICsgcGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0g
ICAgRVhQRUNUX0VRKGZ1bGxOb1JlbWFpbmRlckNvdW50ICsgcGFydGlhbE5vUmVtYWluZGVyQ291
bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotCi0vLyBNSU4vTUFYIFJFTUFJTkRFUiBU
RVNUUwotLy8gVGhpcyBjbGFzcyBvZiB0ZXN0cyBtaXggYW5kIG1hdGNoIHVwbG9hZGluZyAxIG1v
cmUgYW5kIDEgbGVzcyB0ZXh0dXJlCi0vLyB0aGFuIGEgbXVsdGlwbGUgb2YgdGhlIGZsdXNoIHBl
cmlvZC4KLQotY29uc3QgaW50IGZ1bGxNaW5SZW1haW5kZXJDb3VudCA9IGZ1bGxOb1JlbWFpbmRl
ckNvdW50ICsgMTsKLWNvbnN0IGludCBmdWxsTWF4UmVtYWluZGVyQ291bnQgPSBmdWxsTm9SZW1h
aW5kZXJDb3VudCAtIDE7Ci1jb25zdCBpbnQgcGFydGlhbE1pblJlbWFpbmRlckNvdW50ID0gcGFy
dGlhbE5vUmVtYWluZGVyQ291bnQgKyAxOwotY29uc3QgaW50IHBhcnRpYWxNYXhSZW1haW5kZXJD
b3VudCA9IHBhcnRpYWxOb1JlbWFpbmRlckNvdW50IC0gMTsKLQotVEVTVF9GKENDVGV4dHVyZVVw
ZGF0ZXJUZXN0LCBNYW55RnVsbEFuZFBhcnRpYWxNaW5SZW1haW5kZXIpCi17Ci0gICAgYXBwZW5k
RnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE1pblJlbWFpbmRlckNvdW50KTsKLSAgICBhcHBlbmRQ
YXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQpOwotICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFs
VXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9h
ZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUShm
dWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyAy
LCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxNaW5SZW1haW5kZXJD
b3VudCArIHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwot
fQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbFVwbG9h
ZHNNYXhSZW1haW5kZXIpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE1h
eFJlbWFpbmRlckNvdW50KTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0
aWFsTWF4UmVtYWluZGVyQ291bnQpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAm
bV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251
bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBw
YXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBF
WFBFQ1RfRVEoZnVsbE1heFJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1heFJlbWFpbmRlckNvdW50
LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVz
dCwgTWFueUZ1bGxNaW5SZW1haW5kZXJNYW55UGFydGlhbE1heFJlbWFpbmRlcikKLXsKLSAgICBh
cHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQpOwotICAgIGFw
cGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7Ci0g
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVw
ZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1f
dG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2lu
VXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNU
X0VRKChmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIrMSkgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0
aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbE1pblJlbWFp
bmRlckNvdW50ICsgcGFydGlhbE1heFJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fk
cyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxNYXhSZW1haW5k
ZXJNYW55UGFydGlhbE1pblJlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBk
YXRlcihmdWxsTWF4UmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9V
cGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVj
dGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNU
X0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11
bHRpcGxlciArIChwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIrMSksIG1fbnVtUHJldmlvdXNG
bHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbE1heFJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1p
blJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLQotLy8gTVVMVElQ
TEUgVVBEQVRFIFRFU1RTCi0vLyBUaGVzZSB0ZXN0cyBhdHRlbXB0IHRvIHVwbG9hZCB0b28gbWFu
eSB0ZXh0dXJlcyBhdCBvbmNlLCByZXF1aXJpbmcKLS8vIG11bHRpcGxlIGNhbGxzIHRvIHVwZGF0
ZSgpLgotCi1pbnQgZXhwZWN0ZWRGbHVzaGVzKGludCB1cGxvYWRzLCBpbnQgZmx1c2hQZXJpb2Qp
Ci17Ci0gICAgcmV0dXJuICh1cGxvYWRzICsgZmx1c2hQZXJpb2QgLSAxKSAvIGZsdXNoUGVyaW9k
OwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0ZUZpbmFsVXBk
YXRlRnVsbEFuZFBhcnRpYWwpCi17Ci0gICAgY29uc3QgaW50IGtNYXhVcGxvYWRzUGVyVXBkYXRl
ID0gNDA7Ci0gICAgY29uc3QgaW50IGtGdWxsVXBsb2FkcyA9IDEwMDsKLSAgICBjb25zdCBpbnQg
a1BhcnRpYWxVcGxvYWRzID0gMjA7Ci0KLSAgICBpbnQgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMg
PSAwOwotICAgIGludCBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IDA7Ci0KLSAgICBzZXRNYXhV
cGxvYWRDb3VudFBlclVwZGF0ZShrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0gICAgYXBwZW5kRnVs
bFVwbG9hZHNUb1VwZGF0ZXIoa0Z1bGxVcGxvYWRzKTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fk
c1RvVXBkYXRlcihrUGFydGlhbFVwbG9hZHMpOwotCi0gICAgLy8gRmlyc3QgdXBkYXRlICg0MCBm
dWxsKQotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBk
YXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9h
ZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdp
blVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotCi0gICAgZXhw
ZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZsdXNoZXMoa01heFVwbG9hZHNQZXJVcGRh
dGUsIGtGbHVzaFBlcmlvZEZ1bGwpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzRmx1
c2hlcywgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotCi0gICAgZXhwZWN0ZWRQcmV2aW91c1VwbG9h
ZHMgPSBrTWF4VXBsb2Fkc1BlclVwZGF0ZTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91
c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLQotICAgIC8vIFNlY29uZCB1cGRhdGUg
KDQwIGZ1bGwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCks
ICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLQotICAgIEVY
UEVDVF9FUSgyLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDIsIG1fbnVtRW5k
VXBsb2Fkcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hl
cyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0KLSAgICBl
eHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOwotICAgIEVYUEVD
VF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotCi0g
ICAgLy8gVGhpcmQgdXBkYXRlICgyMCBmdWxsLCAyMCBwYXJ0aWFsKQotICAgIG1fdXBkYXRlci51
cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBr
TWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMywgbV9udW1CZWdpblVwbG9h
ZHMpOwotICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwotCi0gICAgZXhwZWN0ZWRQ
cmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZsdXNoZXMoa0Z1bGxVcGxvYWRzLWtNYXhVcGxvYWRz
UGVyVXBkYXRlKjIsIGtGbHVzaFBlcmlvZEZ1bGwpICsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkRmx1c2hlcyhrUGFydGlhbFVwbG9hZHMsIGtGbHVzaFBlcmlvZFBhcnRp
YWwpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzRmx1c2hlcywgbV9udW1QcmV2aW91
c0ZsdXNoZXMpOwotCi0gICAgZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMgPSAoa0Z1bGxVcGxvYWRz
LWtNYXhVcGxvYWRzUGVyVXBkYXRlKjIpK2tQYXJ0aWFsVXBsb2FkczsKLSAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLQotICAgIC8v
IEZpbmFsIHNhbml0eSBjaGVja3MKLSAgICBFWFBFQ1RfRVEoa0Z1bGxVcGxvYWRzICsga1BhcnRp
YWxVcGxvYWRzLCBtX251bVRvdGFsVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRh
dGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0aWFsKQotewotICAgIGNvbnN0
IGludCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSA9IDQwOwotICAgIGNvbnN0IGludCBrRnVsbFVwbG9h
ZHMgPSA3MDsKLSAgICBjb25zdCBpbnQga1BhcnRpYWxVcGxvYWRzID0gMzA7Ci0KLSAgICBpbnQg
ZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSAwOwotICAgIGludCBleHBlY3RlZFByZXZpb3VzVXBs
b2FkcyA9IDA7Ci0KLSAgICBzZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0ZShrTWF4VXBsb2Fkc1Bl
clVwZGF0ZSk7Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoa0Z1bGxVcGxvYWRzKTsK
LSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihrUGFydGlhbFVwbG9hZHMpOwotCi0g
ICAgLy8gRmlyc3QgdXBkYXRlICg0MCBmdWxsKQotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdl
dCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251
bUVuZFVwbG9hZHMpOwotCi0gICAgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZs
dXNoZXMoa01heFVwbG9hZHNQZXJVcGRhdGUsIGtGbHVzaFBlcmlvZEZ1bGwpOwotICAgIEVYUEVD
VF9FUShleHBlY3RlZFByZXZpb3VzRmx1c2hlcywgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotCi0g
ICAgZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMgPSBrTWF4VXBsb2Fkc1BlclVwZGF0ZTsKLSAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsK
LQotICAgIC8vIFNlY29uZCB1cGRhdGUgKDMwIGZ1bGwsIG9wdGlvbmFsbHkgMTAgcGFydGlhbCkK
LSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVy
LCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwotCi0gICAgRVhQRUNUX0VRKDIs
IG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1FbmRVcGxvYWRzKTsK
LSAgICBFWFBFQ1RfTEUobV9udW1QcmV2aW91c1VwbG9hZHMsIGtNYXhVcGxvYWRzUGVyVXBkYXRl
KTsKLSAgICAvLyBCZSBsZW5pZW50IG9uIHRoZSBleGFjdCBudW1iZXIgb2YgZmx1c2hlcyBoZXJl
LCBhcyB0aGUgbnVtYmVyIG9mIGZsdXNoZXMKLSAgICAvLyB3aWxsIGRlcGVuZCBvbiB3aGV0aGVy
IHNvbWUgcGFydGlhbCB1cGxvYWRzIHdlcmUgcGVyZm9ybWVkLgotICAgIC8vIG9uRmx1c2goKSwg
b25VcGxvYWQoKSwgYW5kIG9uRW5kVXBsb2FkKCkgd2lsbCBkbyBiYXNpYyBmbHVzaCBjaGVja3Mg
Zm9yIHVzIGFueXdheS4KLQotICAgIC8vIFRoaXJkIHVwZGF0ZSAoMzAgcGFydGlhbCBPUiAyMCBw
YXJ0aWFsIGlmIDEwIHBhcnRpYWwgdXBsb2FkZWQgaW4gc2Vjb25kIHVwZGF0ZSkKLSAgICBtX3Vw
ZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxv
YWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwotCi0gICAgRVhQRUNUX0VRKDMsIG1fbnVtQmVn
aW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBF
Q1RfTEUobV9udW1QcmV2aW91c1VwbG9hZHMsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLSAgICAv
LyBCZSBsZW5pZW50IG9uIHRoZSBleGFjdCBudW1iZXIgb2YgZmx1c2hlcyBoZXJlIGFzIHdlbGwu
Ci0KLSAgICAvLyBGaW5hbCBzYW5pdHkgY2hlY2tzCi0gICAgRVhQRUNUX0VRKGtGdWxsVXBsb2Fk
cyArIGtQYXJ0aWFsVXBsb2FkcywgbV9udW1Ub3RhbFVwbG9hZHMpOwotfQotCi0KLX0gLy8gbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGhyZWFk
ZWRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3Qu
Y3BwCmluZGV4IDJlMmMxYTA2ZjRiMGZmNWMwY2VmMWQzZDUyNzllZDgyNmU5YzllOGQuLmI3NWYw
MWEzYzQ2ZDQ0ZTI1ZTRjYWRhODFjMmY0ZTVkYWY1YmYzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwCkBAIC00Myw3ICs0Myw3IEBACiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVk
VGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCi0jaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZVF1ZXVlLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSAiY2MvQ0NU
aW1pbmdGdW5jdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1v
bi5jcHAKaW5kZXggZWMyMTA1MzI3OTAwZTgzOTVjMTUwODUzYzczMDc0NWZmOTI4MDNhNi4uNTRm
MjliYmVmNTU0OGQzZTBjZjc1NDIxZjNjNjMzYzNkNTA5YTMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21tb24uY3BwCkBA
IC0xMTUsOSArMTE1LDkgQEAgdm9pZCBGYWtlVGlsZWRMYXllckNocm9taXVtOjpzZXROZWVkc0Rp
c3BsYXlSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBUaWxlZExheWVyQ2hyb21pdW06
OnNldE5lZWRzRGlzcGxheVJlY3QocmVjdCk7CiB9CiAKLXZvaWQgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9u
VHJhY2tlciogb2NjbHVzaW9uLCBDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykKK3ZvaWQgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSwgY29u
c3QgQ0NPY2NsdXNpb25UcmFja2VyKiBvY2NsdXNpb24sIENDUmVuZGVyaW5nU3RhdHMmIHN0YXRz
KQogewotICAgIHVwZGF0ZUNvbnRlbnRSZWN0KHVwZGF0ZXIsIHZpc2libGVDb250ZW50UmVjdCgp
LCBvY2NsdXNpb24sIHN0YXRzKTsKKyAgICB1cGRhdGVDb250ZW50UmVjdChxdWV1ZSwgdmlzaWJs
ZUNvbnRlbnRSZWN0KCksIG9jY2x1c2lvbiwgc3RhdHMpOwogfQogCiB2b2lkIEZha2VUaWxlZExh
eWVyQ2hyb21pdW06OnNldFRleHR1cmVQcmlvcml0aWVzKGNvbnN0IENDUHJpb3JpdHlDYWxjdWxh
dG9yJiBjYWxjdWxhdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllclRlc3RDb21tb24uaAppbmRleCBkZTFlYjY2YzYxYjY0NDFjZDU2MjUwMDAw
YzhkNGE2MjBiOGM4ZmM3Li5jOGQzZmQzZGRlYTJhMGUzYjljYjM3ZTA4NmQwOTE4OTUzYTljZjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXllclRl
c3RDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGlsZWRMYXll
clRlc3RDb21tb24uaApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgImNjL0NDR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKICNpbmNsdWRl
ICJjYy9DQ1Jlc291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKICNpbmNsdWRlICJjYy9D
Q1RpbGVkTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXRUZXN0cyB7CkBAIC0xMjIsNyAr
MTIyLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbGFzdE5lZWRz
RGlzcGxheVJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xhc3ROZWVkc0Rpc3BsYXlSZWN0OyB9CiAK
ICAgICAvLyBVcGRhdGVzIHRoZSB2aXNpYmxlQ29udGVudFJlY3QoKS4KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBXZWJDb3JlOjpDQ09j
Y2x1c2lvblRyYWNrZXIqLCBXZWJDb3JlOjpDQ1JlbmRlcmluZ1N0YXRzJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZShXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZSYsIGNv
bnN0IFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlciosIFdlYkNvcmU6OkNDUmVuZGVyaW5nU3Rh
dHMmKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0dXJlUHJpb3JpdGllcyhj
b25zdCBXZWJDb3JlOjpDQ1ByaW9yaXR5Q2FsY3VsYXRvciYpIE9WRVJSSURFOwogCkBAIC0xNTMs
NyArMTUzLDcgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBGYWtlVGV4dHVyZUNvcGllciA6IHB1Ymxp
YyBXZWJDb3JlOjpUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgY29w
eVRleHR1cmUodW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKFBhcmFtZXRlcnMpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBmbHVzaCgpIHsgfQogfTsKIApAQCAtMTYyLDcgKzE2Miw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5VcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSB7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJv
dmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRU
ZXh0dXJlKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgUGFy
YW1ldGVycyB1cGxvYWQpIHsgdXBsb2FkLm1fdGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVBy
b3ZpZGVyLCB1cGxvYWQubV9zb3VyY2VSZWN0LCB1cGxvYWQubV9kZXN0UmVjdCk7IH0KIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXll
ckJyaWRnZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExh
eWVyQnJpZGdlVGVzdC5jcHAKaW5kZXggYWNlNzQxMGMzNWE1YWM2Y2YzNjEzNDdkZjlhNmFiNTZm
Njg3YzFiZi4uOTYwN2FjMDkxZjQ3MWEzYmE5ZGIwYTMwYTU1MDhkZGFkMjFiODVlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQnJpZGdlVGVz
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQnJp
ZGdlVGVzdC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlICJjYy9DQ0dyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3Rh
dHMuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlUXVldWUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKIApAQCAtMTUxLDkgKzE1
MSw5IEBAIFRFU1QoQ2FudmFzMkRMYXllckJyaWRnZVRlc3QyLCB0ZXN0Q2xlYXJDbGllbnQpCiAg
ICAgT3duUHRyPENhbnZhczJETGF5ZXJCcmlkZ2U+IGJyaWRnZSA9IENhbnZhczJETGF5ZXJCcmlk
Z2U6OmNyZWF0ZShtYWluQ29udGV4dC5nZXQoKSwgSW50U2l6ZSgxMDAsIDEwMCksIERlZmVycmVk
LCAxKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBicmlkZ2UtPmxheWVyKCk7
CiAgICAgYnJpZGdlLmNsZWFyKCk7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyOworICAg
IENDVGV4dHVyZVVwZGF0ZVF1ZXVlIHF1ZXVlOwogICAgIENDUmVuZGVyaW5nU3RhdHMgc3RhdHM7
Ci0gICAgbGF5ZXItPnVwZGF0ZSh1cGRhdGVyLCAwLCBzdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0
ZShxdWV1ZSwgMCwgc3RhdHMpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCA3NzZlMjNi
ZmQyNjMwNjAxYTE4ZWNiMDVhMWI1NWRhODhhZmQxMGU0Li40NTVlZTY5MTk4MjVjOWM1OWQ4OGJi
ZjdkNmU2NDI4YWI3ZjBiNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcApAQCAtNzYsNSArNzYsNSBAQCBURVNUKFRleHR1cmVD
b3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgaW50IGRlc3RUZXh0dXJlSWQgPSAy
OwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1vY2tD
b250ZXh0LmdldCgpLCBmYWxzZSkpOwotICAgIGNvcGllci0+Y29weVRleHR1cmUoc291cmNlVGV4
dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKKyAgICBjb3BpZXItPmNvcHlUZXh0dXJlKFRl
eHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMoc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBz
aXplKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBlMzlmZTdlNTY5YzdlZDJhZGRkNWFjYzEyYTQz
OGEyMTE4MDUzOTMwLi42N2Y1MjRhOGRmOTllNmI3NTBlOWRmNmQxY2VhYjNmNWMzMzY5YTNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNo
cm9taXVtVGVzdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3
TWV0cmljcy5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJj
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQK
KyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
IApAQCAtODksMTIgKzkwLDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlVGV4dHVyZXMo
aW50IGNvdW50ID0gNTAwKQogICAgIHsKLSAgICAgICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGNvdW50KTsKKyAgICAg
ICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVBy
b3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCAmbV9xdWV1ZSwgY291bnQpOwog
ICAgIH0KIHB1YmxpYzoKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsK
ICAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7Ci0gICAg
Q0NUZXh0dXJlVXBkYXRlciBtX3VwZGF0ZXI7CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUgbV9x
dWV1ZTsKICAgICBDQ1JlbmRlcmluZ1N0YXRzIG1fc3RhdHM7CiAgICAgRmFrZVRleHR1cmVDb3Bp
ZXIgbV9jb3BpZXI7CiAgICAgRmFrZVRleHR1cmVVcGxvYWRlciBtX3VwbG9hZGVyOwpAQCAtMTE4
LDcgKzExOSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxl
cykKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3Ip
OwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
LCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDAsIG1fc3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMTMxLDcg
KzEzMiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGlydHlUaWxlcykK
ICAgICAvLyAuLi4uYnV0IHRoZW4gb25seSB1cGRhdGUgb25lIG9mIHRoZW0uCiAgICAgbGF5ZXIt
PnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJl
TWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAsIG1fc3RhdHMpOworICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAw
KSwgMCwgbV9zdGF0cyk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKIAogICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgdGhlIGZpcnN0IHRpbGUgc2luY2Ug
dGhlIG90aGVyIHRpbGUgd2FzIGludmFsaWRhdGVkIGJ1dCBub3QgcGFpbnRlZC4KQEAgLTE1NSw3
ICsxNTYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGly
dHlUaWxlcykKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAmb2NjbHVkZWQsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdCht
X3F1ZXVlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAKQEAgLTE3MSw3ICsxNzIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRl
bnRSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7CiAgICAgLy8gLi4uLmJ1dCB0aGUgYXJlYSBp
cyBvY2NsdWRlZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgwLCAwLCA1MCwg
NTApKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDEwMCwgMTAwKSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCwgbV9z
dGF0cyk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOwogCkBAIC0xOTksNyArMjAwLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hEZWxldGVkVGlsZXMpCiAgICAgbGF5ZXItPnNldFRleHR1cmVQ
cmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRh
dGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwLCBtX3N0
YXRzKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTIyMSw3ICsyMjIsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcHVzaERlbGV0ZWRUaWxlcykKICAgICAvLyBUaGlzIHNob3VsZCByZWNy
ZWF0ZSBhbmQgdXBkYXRlIHRoZSBkZWxldGVkIHRleHR1cmVzLgogICAgIGxheWVyLT5zZXRUZXh0
dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXIt
PnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAwLCBtX3N0YXRzKTsKKyAgICBsYXllci0+
dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAsIG1f
c3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtMjUwLDcgKzI1MSw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50VGlsZXMpCiAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+
cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KG1fcXVldWUsIHZpc2libGVSZWN0LCAwLCBtX3N0YXRzKTsKICAgICB1cGRhdGVUZXh0
dXJlcygpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5lZWQgaWRsZS1wYWludGluZyBmb3IgM3gzIHRp
bGVzIGluIHRoZSBjZW50ZXIuCkBAIC0yNjYsNyArMjY3LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKICAgICAgICAgbGF5ZXItPnNldFRleHR1
cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0gICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIHZpc2libGVSZWN0LCAwLCBtX3N0YXRzKTsKKyAgICAgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIHZpc2libGVSZWN0LCAwLCBtX3N0YXRzKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVSZWN0KSk7CiAg
ICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1Rv
KGxheWVySW1wbC5nZXQoKSk7CkBAIC0zMTcsOCArMzE4LDggQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIGxheWVyMi0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIGxheWVyMS0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllcjEtPnVwZGF0ZUNvbnRlbnRS
ZWN0KG1fdXBkYXRlciwgbGF5ZXJSZWN0LCAwLCBtX3N0YXRzKTsKLSAgICBsYXllcjItPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAsIG1fc3Rh
dHMpOworICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgbGF5ZXJSZWN0LCAw
LCBtX3N0YXRzKTsKKyAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwLCBtX3N0YXRzKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZWVk
IGlkbGUtcGFpbnRpbmcgZm9yIGJvdGggcmVtYWluaW5nIHRpbGVzIGluIGxheWVyMi4KICAgICBF
WFBFQ1RfVFJVRShsYXllcjItPm5lZWRzSWRsZVBhaW50KGxheWVyMlJlY3QpKTsKQEAgLTMzNSw3
ICszMzYsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzQWZ0ZXJJ
ZGxlUGFpbnRGYWlsZWQpCiAgICAgbGF5ZXIyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9y
aXR5Q2FsY3VsYXRvcik7CiAgICAgbGF5ZXIxLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9y
aXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwotICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAs
IDEwMCwgMTAwKSwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50UmVjdCht
X3F1ZXVlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgMCwgbV9zdGF0cyk7CiAKICAgICAvLyBP
aCB3ZWxsLCBjb21taXQgdGhlIGZyYW1lIGFuZCBwdXNoLgogICAgIHVwZGF0ZVRleHR1cmVzKCk7
CkBAIC0zNTUsOCArMzU2LDggQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogICAgIGxheWVyMi0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIGxheWVyMS0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgbGF5
ZXIyUmVjdCwgMCwgbV9zdGF0cyk7Ci0gICAgbGF5ZXIxLT51cGRhdGVDb250ZW50UmVjdChtX3Vw
ZGF0ZXIsIGxheWVyUmVjdCwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXIyLT51cGRhdGVDb250ZW50
UmVjdChtX3F1ZXVlLCBsYXllcjJSZWN0LCAwLCBtX3N0YXRzKTsKKyAgICBsYXllcjEtPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fcXVldWUsIGxheWVyUmVjdCwgMCwgbV9zdGF0cyk7CiAKICAgICB1cGRh
dGVUZXh0dXJlcygpOwogICAgIGxheWVyMS0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwxLmdl
dCgpKTsKQEAgLTM4Nyw3ICszODgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaElkbGVQYWludGVkT2NjbHVkZWRUaWxlcykKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJp
b3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9y
aXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IEludFJlY3QoMCwgMCwgMTAwLCAxMDApLCAmb2NjbHVkZWQsIG1fc3RhdHMpOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSwgJm9j
Y2x1ZGVkLCBtX3N0YXRzKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNo
UHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAKQEAgLTQxMiw3ICs0MTMsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTWFya2VkRGlydHlEdXJpbmdQYWlu
dCkKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAw
LCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCksIDAsIG1fc3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAg
ICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtNDQyLDEx
ICs0NDMsMTEgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0xheWVy
TWFya2VkRGlydHlEdXJpbmdQYWludE9uTmV4dExheWVyKQogICAgIGxheWVyMi0+c2V0VGV4dHVy
ZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5w
cmlvcml0aXplVGV4dHVyZXMoKTsKIAotICAgIGxheWVyMS0+dXBkYXRlQ29udGVudFJlY3QobV91
cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXIx
LT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCwg
bV9zdGF0cyk7CiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBsYXllcjEKICAgICBsYXll
cjItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0ludmFsaWRhdGUoSW50UmVj
dCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMS5nZXQoKSk7Ci0gICAgbGF5ZXIyLT51cGRhdGVDb250
ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwLCBtX3N0YXRzKTsK
KyAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwLCBtX3N0YXRzKTsKIAogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIx
LT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwpAQCAtNDgyLDggKzQ4Myw4IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5
RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5CiAKICAgICAvLyBJbnZhbGlkYXRlIGEgdGlsZSBvbiBs
YXllcjIKICAgICBsYXllcjEtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldFJlY3RUb0lu
dmFsaWRhdGUoSW50UmVjdCgwLCA1MCwgMTAwLCA1MCksIGxheWVyMi5nZXQoKSk7Ci0gICAgbGF5
ZXIxLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDAp
LCAwLCBtX3N0YXRzKTsKLSAgICBsYXllcjItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAsIG1fc3RhdHMpOworICAgIGxheWVyMS0+dXBkYXRl
Q29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAsIG1fc3RhdHMp
OworICAgIGxheWVyMi0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCAx
MDAsIDIwMCksIDAsIG1fc3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXIx
LT5wdXNoUHJvcGVydGllc1RvKGxheWVyMUltcGwuZ2V0KCkpOwogICAgIGxheWVyMi0+cHVzaFBy
b3BlcnRpZXNUbyhsYXllcjJJbXBsLmdldCgpKTsKQEAgLTUxNyw3ICs1MTgsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiAKICAgICBsYXll
ci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1
cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIHZpc2libGVSZWN0LCAwLCBtX3N0YXRzKTsKIAogICAg
IC8vIElkbGUtcGFpbnRpbmcgc2hvdWxkIHNlZSBubyBtb3JlIHByaW9yaXR5IHRpbGVzIGZvciBw
YWludGluZy4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXItPm5lZWRzSWRsZVBhaW50KHZpc2libGVS
ZWN0KSk7CkBAIC01MzAsNyArNTMxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGlkbGVQYWludE91dE9mTWVtb3J5KQogCiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJs
ZVJlY3QsIDAsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVl
LCB2aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CiAKICAgICAvLyBXZSBzaG91bGRuJ3Qgc2lnbmFs
IHdlIG5lZWQgYW5vdGhlciBpZGxlIHBhaW50LgogICAgIEVYUEVDVF9GQUxTRShsYXllci0+bmVl
ZHNJZGxlUGFpbnQodmlzaWJsZVJlY3QpKTsKQEAgLTU1OSw3ICs1NjAsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiAgICAgICAgIHRl
eHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKIAogICAgICAgICAvLyBFbXB0eSBs
YXllcnMgZG9uJ3QgcGFpbnQgb3IgaWRsZS1wYWludC4KLSAgICAgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudFJlY3QsIDAsIG1fc3RhdHMpOworICAgICAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgY29udGVudFJlY3QsIDAsIG1fc3RhdHMp
OwogCiAgICAgICAgIC8vIEVtcHR5IGxheWVycyBkb24ndCBoYXZlIHRpbGVzLgogICAgICAgICBF
WFBFQ1RfRVEoMHUsIGxheWVyLT5udW1QYWludGVkVGlsZXMoKSk7CkBAIC01OTUsNyArNTk2LDcg
QEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE5vblZpc2libGVMYXll
cnMpCiAgICAgICAgIC8vIFBhaW50IC8gaWRsZS1wYWludC4KICAgICAgICAgbGF5ZXItPnNldFRl
eHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICAgICAgdGV4dHVyZU1h
bmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgICAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV91cGRhdGVyLCB2aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CisgICAgICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCB2aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CiAK
ICAgICAgICAgLy8gTm9uLXZpc2libGUgbGF5ZXJzIGRvbid0IG5lZWQgaWRsZSBwYWludC4KICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGxheWVyLT5uZWVkc0lkbGVQYWludCh2aXNpYmxlUmVjdCkpOwpA
QCAtNjU4LDcgKzY1OSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpZGxlUGFp
bnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAgICAgICAgICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgICAgICAgICAgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCi0gICAgICAgICAgICAgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgdmlzaWJsZVJlY3QsIDAsIG1fc3Rh
dHMpOworICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCB2
aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CiAgICAgICAgICAgICAgICAgdXBkYXRlVGV4dHVyZXMo
KTsKICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0
KCkpOwogICAgICAgICAgICAgfQpAQCAtNjcxLDcgKzY3Miw3IEBAIFRFU1RfRihUaWxlZExheWVy
Q2hyb21pdW1UZXN0LCBpZGxlUGFpbnROb25WaXNpYmxlQW5pbWF0aW5nTGF5ZXJzKQogICAgICAg
ICAgICAgICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgICAgICAgICAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygp
OwogCi0gICAgICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
dmlzaWJsZVJlY3QsIDAsIG1fc3RhdHMpOworICAgICAgICAgICAgICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3F1ZXVlLCB2aXNpYmxlUmVjdCwgMCwgbV9zdGF0cyk7CiAgICAgICAgICAg
ICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICAgICAgICAgICAgICBsYXllci0+cHVzaFByb3Bl
cnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwogICAgICAgICAgICAgfQpAQCAtNjk0LDcgKzY5NSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUp
CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMjAw
KSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9y
KTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAs
IG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMjAwKSwgMCwgbV9zdGF0cyk7CiAgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7
CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKIApAQCAtNzA1
LDcgKzcwNiw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJv
bVByZXBhcmUpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJl
cGFyZUNvdW50KCk7CiAgICAgLy8gSW52b2tlIHVwZGF0ZUNvbnRlbnRSZWN0IGFnYWluLiBBcyB0
aGUgbGF5ZXIgaXMgdmFsaWQgdXBkYXRlQ29udGVudFJlY3Qgc2hvdWxkbid0IGJlIGludm9rZWQg
b24KICAgICAvLyB0aGUgTGF5ZXJUZXh0dXJlVXBkYXRlci4KLSAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCwgbV9zdGF0cyk7
CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgMTAw
LCAyMDApLCAwLCBtX3N0YXRzKTsKICAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICBFWFBF
Q1RfRVEoMCwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVDb3VudCgp
KTsKIApAQCAtNzEzLDEyICs3MTQsMTIgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IGludmFsaWRhdGVGcm9tUHJlcGFyZSkKICAgICAvLyBzZXRSZWN0VG9JbnZhbGlkYXRlIHRyaWdn
ZXJzIGludmFsaWRhdGVDb250ZW50UmVjdCgpIGJlaW5nIGludm9rZWQgZnJvbSB1cGRhdGVDb250
ZW50UmVjdC4KICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+c2V0UmVjdFRv
SW52YWxpZGF0ZShJbnRSZWN0KDI1LCAyNSwgNTAsIDUwKSwgbGF5ZXIuZ2V0KCkpOwogICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclByZXBhcmVDb3VudCgpOwotICAg
IGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAy
MDApLCAwLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwg
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksIDAsIG1fc3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVz
KDEwMDApOwogICAgIEVYUEVDVF9FUSgxLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZUNvdW50KCkpOwogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5jbGVhclByZXBhcmVDb3VudCgpOwogICAgIC8vIFRoZSBsYXllciBzaG91bGQgc3RpbGwgYmUg
aW52YWxpZCBhcyB1cGRhdGVDb250ZW50UmVjdCBpbnZva2VkIGludmFsaWRhdGUuCi0gICAgbGF5
ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCks
IDAsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMjAwKSwgMCwgbV9zdGF0cyk7CiAgICAgdXBkYXRlVGV4dHVyZXMoMTAw
MCk7CiAgICAgRVhQRUNUX0VRKDEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5w
cmVwYXJlQ291bnQoKSk7CiB9CkBAIC03NDUsNyArNzQ2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkK
IAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51
cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDAsIG1fc3RhdHMpOwor
ICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBjb250ZW50Qm91bmRzLCAwLCBt
X3N0YXRzKTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoMCwgMCwgMzAwLCAz
MDAgKiAwLjgpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwog
CkBAIC03NTMsNyArNzU0LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlm
eVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKICAgICBsYXllci0+c2V0VGV4
dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2Vy
LT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0
KGNvbnRlbnRCb3VuZHMpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IGNvbnRlbnRCb3VuZHMsIDAsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3F1ZXVlLCBjb250ZW50Qm91bmRzLCAwLCBtX3N0YXRzKTsKICAgICBFWFBFQ1RfRkxPQVRf
UkVDVF9FUShGbG9hdFJlY3QobGF5ZXJCb3VuZHMpLCBsYXllci0+dXBkYXRlUmVjdCgpKTsKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogCkBAIC03NjIsNyArNzYzLDcgQEAgVEVTVF9GKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxl
ZCkKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHBhcnRpYWxEYW1hZ2UpOwogICAg
IGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAg
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVD
b250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsIDAsIG1fc3RhdHMpOworICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBjb250ZW50Qm91bmRzLCAwLCBtX3N0YXRz
KTsKICAgICBFWFBFQ1RfRkxPQVRfUkVDVF9FUShGbG9hdFJlY3QoNDUsIDgwLCAxNSwgOCksIGxh
eWVyLT51cGRhdGVSZWN0KCkpOwogfQogCkBAIC03ODQsNyArNzg1LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hh
bmdlcykKICAgICAvLyBQdXNoIHRoZSB0aWxlcyB0byB0aGUgaW1wbCBzaWRlIGFuZCBjaGVjayB0
aGF0IHRoZXJlIGlzIGV4YWN0bHkgb25lLgogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgMTAwLCAxMDApLCAwLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksIDAsIG1fc3RhdHMpOwogICAg
IHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBs
LmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CkBA
IC04MDEsNyArODAyLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUlu
dmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykKICAgICAvLyBUaGUgaW1wbCBzaWRl
IHNob3VsZCBnZXQgMngyIHRpbGVzIG5vdy4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRp
ZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXpl
VGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRS
ZWN0KDAsIDAsIDIwMCwgMjAwKSwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRl
bnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgMjAwLCAyMDApLCAwLCBtX3N0YXRzKTsKICAg
ICB1cGRhdGVUZXh0dXJlcygpOwogICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpA
QCAtODEzLDcgKzgxNCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJ
bnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiAgICAgLy8gaW1wbCBzaWRlLgog
ICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVj
dChtX3VwZGF0ZXIsIEludFJlY3QoMSwgMCwgMCwgMSksIDAsIG1fc3RhdHMpOworICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBJbnRSZWN0KDEsIDAsIDAsIDEpLCAwLCBtX3N0
YXRzKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKICAgICBs
YXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOwpAQCAtODU0LDcgKzg1NSw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAg
ICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIocm9vdExheWVyKTsKICAgICBjY0xheWVy
VHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDMwMCwgMzAwKSk7CiAKLSAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBj
Y0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3F1ZXVlLCBtZW1vcnlMaW1pdCk7CiAKICAg
ICAvLyBXZSdsbCBza2lwIHRoZSByb290IGxheWVyLgogICAgIEVYUEVDVF9UUlVFKHJvb3RMYXll
ci0+c2tpcHNEcmF3KCkpOwpAQCAtODY1LDcgKzg2Niw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgLy8gUmVtb3ZlIHRoZSBjaGlsZCBs
YXllci4KICAgICByb290TGF5ZXItPnJlbW92ZUFsbENoaWxkcmVuKCk7CiAKLSAgICBjY0xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIG1lbW9yeUxpbWl0KTsKKyAgICBjY0xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3F1ZXVlLCBtZW1vcnlMaW1pdCk7CiAgICAgRVhQ
RUNUX0ZBTFNFKHJvb3RMYXllci0+c2tpcHNEcmF3KCkpOwogCiAgICAgY2NMYXllclRyZWVIb3N0
LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSk7CkBAIC04ODUsNyArODg2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHJlc2l6ZVRvU21hbGxlcikKIAogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGll
cyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVU
ZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJl
Y3QoMCwgMCwgNzAwLCA3MDApLCAwLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVu
dFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCA3MDAsIDcwMCksIDAsIG1fc3RhdHMpOwogCiAg
ICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDIwMCwgMjAwKSk7CiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDIwMCwgMjAwKSk7CkBAIC05MDQsNyArOTA1
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGh1Z2VMYXllclVwZGF0ZUNyYXNo
KQogICAgIC8vIEVuc3VyZSBubyBjcmFzaCBmb3IgYm91bmRzIHdoZXJlIHNpemUgKiBzaXplIHdv
dWxkIG92ZXJmbG93IGFuIGludC4KICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAs
IDAsIDcwMCwgNzAwKSwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KG1fcXVldWUsIEludFJlY3QoMCwgMCwgNzAwLCA3MDApLCAwLCBtX3N0YXRzKTsKIH0KIAogVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQpAQCAtOTMzLDE3ICs5
MzQsMTcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQog
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnRTaXplKEludFNpemUoMzAwLCAyMDApKTsK
IAogICAgIC8vIEZ1bGwgdXBkYXRlIG9mIGFsbCA2IHRpbGVzLgotICAgIGNjTGF5ZXJUcmVlSG9z
dC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+Ojpt
YXgoKSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgc3RkOjpu
dW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5
ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7
CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBF
Q1RfVFJVRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVz
KDQpOwogICAgICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01v
cmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNNb3JlVXBkYXRl
cygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBk
YXRlQ291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdl
dCgpKTsKICAgICB9CkBAIC05NTEsMTcgKzk1MiwxNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAKICAgICAvLyBGdWxsIHVwZGF0ZSBvZiAzIHRpbGVz
IGFuZCBwYXJ0aWFsIHVwZGF0ZSBvZiAzIHRpbGVzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29u
dGVudFJlY3QoSW50UmVjdCgwLCAwLCAzMDAsIDE1MCkpOwotICAgIGNjTGF5ZXJUcmVlSG9zdC0+
dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgo
KSk7CisgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CiAg
ICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZh
a2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShtX3VwZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1f
cXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQp
OwogICAgICAgICBFWFBFQ1RfRVEoMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVV
cGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNNb3JlVXBkYXRlcygp
KTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRl
Q291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKICAgICB9CkBAIC05NzIsMTQgKzk3MywxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Ci0gICAgICAg
IGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fdXBkYXRlciwgc3RkOjpudW1lcmljX2xp
bWl0czxzaXplX3Q+OjptYXgoKSk7CisgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKG1fcXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAg
ICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUo
bV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShtX3F1ZXVl
Lmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAg
ICAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRh
dGVDb3VudCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKG1fdXBkYXRlci5oYXNNb3JlVXBkYXRl
cygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAg
ICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50
KCk7CiAgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CiAg
ICAgfQpAQCAtOTk5LDE0ICsxMDAwLDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBwYXJ0aWFsVXBkYXRlcykKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwogICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVy
SW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKLSAgICAgICAgY2NM
YXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRz
PHNpemVfdD46Om1heCgpKTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMo
bV9xdWV1ZSwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIHVw
ZGF0ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3Vw
ZGF0ZXIuaGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fcXVldWUuaGFz
TW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDQpOwogICAgICAg
ICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNv
dW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkp
OworICAgICAgICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAg
ICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsK
ICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKICAgICB9
CkBAIC0xMDE3LDEwICsxMDE4LDEwIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
YXJ0aWFsVXBkYXRlcykKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwogICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1w
bChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKLSAgICAgICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91cGRhdGVyLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNp
emVfdD46Om1heCgpKTsKKyAgICAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9x
dWV1ZSwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgICAgIHVwZGF0
ZVRleHR1cmVzKDQpOwogICAgICAgICBFWFBFQ1RfRVEoNCwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNN
b3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PmNsZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5
ZXJJbXBsLmdldCgpKTsKICAgICB9CkBAIC0xMDQ3LDcgKzEwNDgsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9jY2x1c2lvbikKIAogICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgdGV4
dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgMTAwLCAyMDApLCAwLCBtX3N0YXRzKTsK
KyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCAxMDAs
IDIwMCksIDAsIG1fc3RhdHMpOwogICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIH0KIApAQCAtMTA2Nyw3ICsxMDY4
LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb24pCiAKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1
bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBs
YXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAw
KSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9x
dWV1ZSwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCwgbV9zdGF0cyk7CiAgICAg
RVhQRUNUX0VRKDM2LTMsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJl
UmVjdENvdW50KCkpOwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNz
KCkucGl4ZWxzVXBsb2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMDc4LDcgKzEwNzksNyBAQCBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbikK
IAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDI1MCwgMjAwLCAzMDAsIDEwMCkp
OwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwg
MCwgNjAwLCA2MDApLCAmb2NjbHVkZWQsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250
ZW50UmVjdChtX3F1ZXVlLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkLCBtX3N0
YXRzKTsKICAgICBFWFBFQ1RfRVEoMzYtMiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVy
ZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTEwODksNyAr
MTA5MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRo
T2NjbHVzaW9uKQogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjUwLCAyNTAs
IDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAs
IDAsIDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwg
SW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCwgbV9zdGF0cyk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2Nj
bHVkZWQsIG1fc3RhdHMpOwogICAgIEVYUEVDVF9FUSgzNiwgbGF5ZXItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2Ns
dWRlZC5vdmVyZHJhd01ldHJpY3MoKS5waXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAg
LTExMTQsNyArMTExNSw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1Bh
aW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlzaWJsaXR5Q29uc3RyYWludHMpCiAKICAgICBsYXllci0+
c2V0VGV4dHVyZVByaW9yaXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgMzYwKSwgJm9jY2x1ZGVkLCBtX3N0YXRz
KTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVjdCgwLCAwLCA2
MDAsIDM2MCksICZvY2NsdWRlZCwgbV9zdGF0cyk7CiAgICAgRVhQRUNUX0VRKDI0LTMsIGxheWVy
LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwogCiAgICAg
RVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2FkZWRPcGFx
dWUoKSwgMCwgMSk7CkBAIC0xMTI5LDcgKzExMzAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRz
KQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCAzNTApLCAm
b2NjbHVkZWQsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVl
LCBJbnRSZWN0KDAsIDAsIDYwMCwgMzUwKSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAgICBFWFBF
Q1RfRVEoMjQtNiwgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0
Q291bnQoKSk7CiAKICAgICBFWFBFQ1RfTkVBUihvY2NsdWRlZC5vdmVyZHJhd01ldHJpY3MoKS5w
aXhlbHNVcGxvYWRlZE9wYXF1ZSgpLCAwLCAxKTsKQEAgLTExNDQsNyArMTE0NSw3IEBAIFRFU1Rf
RihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kVmlz
aWJsaXR5Q29uc3RyYWludHMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRS
ZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1f
cHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1
cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgw
LCAwLCA2MDAsIDM0MCksICZvY2NsdWRlZCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgNjAwLCAzNDApLCAmb2NjbHVkZWQsIG1f
c3RhdHMpOwogICAgIEVYUEVDVF9FUSgyNC02LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0
ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92
ZXJkcmF3TWV0cmljcygpLnBpeGVsc1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTE2OCw3
ICsxMTY5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRl
ZFdpdGhvdXRJbnZhbGlkYXRpb24pCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVz
KG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRl
eHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQs
IG1fc3RhdHMpOwogICAgIEVYUEVDVF9FUSgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3VudCgpKTsKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwpAQCAtMTE4Miw3ICsxMTgzLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzTm90UGFpbnRlZFdpdGhvdXRJbnZhbGlkYXRpb24p
CiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RD
b3VudCgpOwogCiAgICAgLy8gUmVwYWludCB3aXRob3V0IG1hcmtpbmcgaXQgZGlydHkuIFRoZSAz
IGN1bGxlZCB0aWxlcyB3aWxsIGJlIHByZS1wYWludGVkIG5vdy4KLSAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV91cGRhdGVyLCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVk
LCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgSW50UmVj
dCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCwgbV9zdGF0cyk7CiAgICAgRVhQRUNUX0VRKDMs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwog
CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2Fk
ZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMjExLDcgKzEyMTIsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFRyYW5zZm9ybXMpCiAg
ICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7
CiAgICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsK
ICAgICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVw
ZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2Ns
dWRlZCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIElu
dFJlY3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQsIG1fc3RhdHMpOwogICAgIEVYUEVDVF9F
USgzNi0zLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVJlY3RDb3Vu
dCgpKTsKIAogICAgIEVYUEVDVF9ORUFSKG9jY2x1ZGVkLm92ZXJkcmF3TWV0cmljcygpLnBpeGVs
c1VwbG9hZGVkT3BhcXVlKCksIDAsIDEpOwpAQCAtMTI0Miw3ICsxMjQzLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5n
KQogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYw
MCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRv
cik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwotICAgIGxheWVy
LT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIEludFJlY3QoMCwgMCwgNjAwLCA2MDApLCAm
b2NjbHVkZWQsIG1fc3RhdHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVl
LCBJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAgICAvLyBU
aGUgY29udGVudCBpcyBoYWxmIHRoZSBzaXplIG9mIHRoZSBsYXllciAoc28gdGhlIG51bWJlciBv
ZiB0aWxlcyBpcyBmZXdlcikuCiAgICAgLy8gSW4gdGhpcyBjYXNlLCB0aGUgY29udGVudCBpcyAz
MDB4MzAwLCBhbmQgc2luY2UgdGhlIHRpbGUgc2l6ZSBpcyAxMDAsIHRoZQogICAgIC8vIG51bWJl
ciBvZiB0aWxlcyAzeDMuCkBAIC0xMjYyLDcgKzEyNjMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAg
bGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0
ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNv
bnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRlZCwg
bV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJlY3Qo
MCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQsIG1fc3RhdHMpOwogICAgIEVYUEVDVF9FUSg5LTEs
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkpOwog
CiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBsb2Fk
ZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMjgyLDcgKzEyODMsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAg
ICAgbGF5ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAg
ICB0ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgSW50UmVjdCgwLCAwLCA2MDAsIDYwMCksICZvY2NsdWRl
ZCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApLCAmb2NjbHVkZWQsIG1fc3RhdHMpOwogICAgIEVYUEVDVF9FUSg5
LTEsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlUmVjdENvdW50KCkp
OwogCiAgICAgRVhQRUNUX05FQVIob2NjbHVkZWQub3ZlcmRyYXdNZXRyaWNzKCkucGl4ZWxzVXBs
b2FkZWRPcGFxdWUoKSwgMCwgMSk7CkBAIC0xMzE1LDcgKzEzMTYsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gSWYg
dGhlIGxheWVyIGRvZXNuJ3QgcGFpbnQgb3BhcXVlIGNvbnRlbnQsIHRoZW4gdGhlIHZpc2libGVD
b250ZW50T3BhcXVlUmVnaW9uIHNob3VsZCBiZSBlbXB0eS4KICAgICBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQsIG1fc3Rh
dHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBjb250ZW50Qm91bmRz
LCAmb2NjbHVkZWQsIG1fc3RhdHMpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2li
bGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMu
aXNFbXB0eSgpKTsKIApAQCAtMTMyOCw3ICsxMzI5LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIG9wYXF1ZVBhaW50UmVj
dCA9IEludFJlY3QoMTAsIDEwLCA5MCwgMTkwKTsKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KG9wYXF1ZVBhaW50UmVjdCk7CiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChjb250ZW50Qm91bmRzKTsKLSAgICBsYXllci0+dXBk
YXRlQ29udGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50Qm91bmRzLCAmb2NjbHVkZWQsIG1fc3Rh
dHMpOworICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3F1ZXVlLCBjb250ZW50Qm91bmRz
LCAmb2NjbHVkZWQsIG1fc3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgb3BhcXVl
Q29udGVudHMgPSBsYXllci0+dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24oKTsKICAgICBFWFBF
Q1RfRVFfUkVDVChpbnRlcnNlY3Rpb24ob3BhcXVlUGFpbnRSZWN0LCB2aXNpYmxlQm91bmRzKSwg
b3BhcXVlQ29udGVudHMuYm91bmRzKCkpOwpAQCAtMTM0MSw3ICsxMzQyLDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogCiAgICAg
Ly8gSWYgd2UgcGFpbnQgYWdhaW4gd2l0aG91dCBpbnZhbGlkYXRpbmcsIHRoZSBzYW1lIHN0dWZm
IHNob3VsZCBiZSBvcGFxdWUuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCkt
PnNldE9wYXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50
UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCwgbV9zdGF0cyk7CisgICAg
bGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRl
ZCwgbV9zdGF0cyk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9
IGxheWVyLT52aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNU
KGludGVyc2VjdGlvbihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250
ZW50cy5ib3VuZHMoKSk7CkBAIC0xMzU2LDcgKzEzNTcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgdmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFm
ZmVjdGVkLgogICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQ
YWludFJlY3QoSW50UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoMCwgMCwgMSwgMSkpOwotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0
ZXIsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0
ZUNvbnRlbnRSZWN0KG1fcXVldWUsIGNvbnRlbnRCb3VuZHMsICZvY2NsdWRlZCwgbV9zdGF0cyk7
CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICBvcGFxdWVDb250ZW50cyA9IGxheWVyLT52aXNp
YmxlQ29udGVudE9wYXF1ZVJlZ2lvbigpOwogICAgIEVYUEVDVF9FUV9SRUNUKGludGVyc2VjdGlv
bihvcGFxdWVQYWludFJlY3QsIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSk7CkBAIC0xMzcxLDcgKzEzNzIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dmlzaWJsZUNvbnRlbnRPcGFxdWVSZWdpb24pCiAgICAgLy8gbm90IGJlIGFmZmVjdGVkLgogICAg
IGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRPcGFxdWVQYWludFJlY3QoSW50
UmVjdCgpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMTAsIDEw
LCAxLCAxKSk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVu
dEJvdW5kcywgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJl
Y3QobV9xdWV1ZSwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAgICB1cGRh
dGVUZXh0dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50
T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX0VRX1JFQ1QoaW50ZXJzZWN0aW9uKEludFJlY3Qo
MTAsIDEwMCwgOTAsIDEwMCksIHZpc2libGVCb3VuZHMpLCBvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSk7CkBAIC0xNDA4LDcgKzE0MDksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgLy8gSW52YWxpZGF0ZXMgYW5kIHBhaW50cyB0aGUg
d2hvbGUgbGF5ZXIuCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnNldE9w
YXF1ZVBhaW50UmVjdChJbnRSZWN0KCkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJl
Y3QoY29udGVudEJvdW5kcyk7Ci0gICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRl
ciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRl
Q29udGVudFJlY3QobV9xdWV1ZSwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkLCBtX3N0YXRzKTsK
ICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIG9wYXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2li
bGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAgRVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMu
aXNFbXB0eSgpKTsKQEAgLTE0MjMsNyArMTQyNCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwaXhlbHNQYWludGVkTWV0cmljcykKICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+c2V0T3BhcXVlUGFpbnRSZWN0KEludFJlY3QoKSk7CiAgICAgbGF5ZXItPmlu
dmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoNTAsIDIwMCwgMTAsIDEwKSk7Ci0gICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fdXBkYXRlciwgY29udGVudEJvdW5kcywgJm9jY2x1ZGVkLCBt
X3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgY29udGVudEJv
dW5kcywgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAgICB1cGRhdGVUZXh0dXJlcygpOwogICAgIG9w
YXF1ZUNvbnRlbnRzID0gbGF5ZXItPnZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKCk7CiAgICAg
RVhQRUNUX1RSVUUob3BhcXVlQ29udGVudHMuaXNFbXB0eSgpKTsKQEAgLTE0ODQsMTQgKzE0ODUs
MTQgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRlbnRz
V2hlblRhcmdldFN1cmZhY2VDYW50QmVBbGxvY2EKICAgICByb290LT5pbnZhbGlkYXRlQ29udGVu
dFJlY3Qocm9vdFJlY3QpOwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGRS
ZWN0KTsKICAgICBjaGlsZDItPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZDJSZWN0KTsKLSAg
ICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOworICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJz
KG1fcXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgIHsKICAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIHVwZGF0
ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEoNiwgcm9vdC0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgzLCBjaGls
ZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgzLCBjaGlsZDItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50
KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRhdGVyLmhhc01vcmVVcGRhdGVzKCkpOwor
ICAgICAgICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNNb3JlVXBkYXRlcygpKTsKIAogICAgICAg
ICByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAg
ICAgICAgIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50
KCk7CkBAIC0xNTE5LDE0ICsxNTIwLDE0IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAg
cm9vdC0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KHJvb3RSZWN0KTsKICAgICBjaGlsZC0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNoaWxkUmVjdCk7CiAgICAgY2hpbGQyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoY2hpbGQyUmVjdCk7Ci0gICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV91
cGRhdGVyLCAoMyAqIDIgKyAzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOworICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVldWUsICgzICogMiArIDMgKiAxKSAqICgxMDAgKiAx
MDApICogNCk7CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoMTAwMCk7CiAgICAgICAgIEVYUEVDVF9FUSg2
LCByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAg
ICAgRVhQRUNUX0VRKDAsIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVD
b3VudCgpKTsKICAgICAgICAgRVhQRUNUX0VRKDAsIGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShtX3VwZGF0ZXIu
aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShtX3F1ZXVlLmhhc01vcmVV
cGRhdGVzKCkpOwogCiAgICAgICAgIHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNs
ZWFyVXBkYXRlQ291bnQoKTsKICAgICAgICAgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVy
KCktPmNsZWFyVXBkYXRlQ291bnQoKTsKQEAgLTE1NTUsMTQgKzE1NTYsMTQgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGRvbnRBbGxvY2F0ZUNvbnRlbnRzV2hlblRhcmdldFN1cmZh
Y2VDYW50QmVBbGxvY2EKICAgICByb290LT5pbnZhbGlkYXRlQ29udGVudFJlY3Qocm9vdFJlY3Qp
OwogICAgIGNoaWxkLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGRSZWN0KTsKICAgICBjaGls
ZDItPmludmFsaWRhdGVDb250ZW50UmVjdChjaGlsZDJSZWN0KTsKLSAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycyhtX3VwZGF0ZXIsICgzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOwor
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVldWUsICgzICogMSkgKiAoMTAw
ICogMTAwKSAqIDQpOwogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1Rf
RVEoMCwgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAg
ICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBk
YXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZDItPmZha2VMYXllclRleHR1
cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UobV91cGRh
dGVyLmhhc01vcmVVcGRhdGVzKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNN
b3JlVXBkYXRlcygpKTsKIAogICAgICAgICByb290LT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBk
YXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CkBAIC0xNjUxLDcgKzE2NTIsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3Rv
cnRlZER1cmluZ1BhaW50KQogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMo
KTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgd2hvbGUgdGlsZS4KLSAgICBsYXllci0+dXBkYXRlQ29u
dGVudFJlY3QobV91cGRhdGVyLCBjb250ZW50UmVjdCwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXIt
PnVwZGF0ZUNvbnRlbnRSZWN0KG1fcXVldWUsIGNvbnRlbnRSZWN0LCAwLCBtX3N0YXRzKTsKICAg
ICBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cmVzZXRQYWludGVkUmVjdCgpOwogCiAg
ICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoKSwgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWlu
dGVyKCktPnBhaW50ZWRSZWN0KCkpOwpAQCAtMTY2Myw3ICsxNjY0LDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIG5vbkludGVnZXJDb250ZW50c1NjYWxlSXNOb3REaXN0b3J0ZWRE
dXJpbmdQYWludCkKIAogICAgIC8vIEludmFsaWRhdGUgdGhlIGVudGlyZSBsYXllciBpbiBjb250
ZW50IHNwYWNlLiBXaGVuIHBhaW50aW5nLCB0aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxk
IG1hdGNoIHRoZSBsYXllcidzIGJvdW5kcy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KGNvbnRlbnRSZWN0KTsKLSAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV91cGRhdGVy
LCBjb250ZW50UmVjdCwgMCwgbV9zdGF0cyk7CisgICAgbGF5ZXItPnVwZGF0ZUNvbnRlbnRSZWN0
KG1fcXVldWUsIGNvbnRlbnRSZWN0LCAwLCBtX3N0YXRzKTsKIAogICAgIEVYUEVDVF9JTlRfUkVD
VF9FUShsYXllclJlY3QsIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVj
dCgpKTsKIH0KQEAgLTE2ODYsNyArMTY4Nyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxpCiAg
ICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogCiAgICAgLy8gVXBkYXRl
IHRoZSB3aG9sZSB0aWxlLgotICAgIGxheWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIs
IGNvbnRlbnRSZWN0LCAwLCBtX3N0YXRzKTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3Qo
bV9xdWV1ZSwgY29udGVudFJlY3QsIDAsIG1fc3RhdHMpOwogICAgIGxheWVyLT50cmFja2luZ0xh
eWVyUGFpbnRlcigpLT5yZXNldFBhaW50ZWRSZWN0KCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1Rf
RVEoSW50UmVjdCgpLCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3Qo
KSk7CkBAIC0xNjk4LDcgKzE2OTksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
bm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ0ludmFsaQogCiAgICAg
Ly8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGluIGxheWVyIHNwYWNlLiBXaGVuIHBhaW50
aW5nLCB0aGUgcmVjdCBnaXZlbiB0byB3ZWJraXQgc2hvdWxkIG1hdGNoIHRoZSBsYXllcidzIGJv
dW5kcy4KICAgICBsYXllci0+c2V0TmVlZHNEaXNwbGF5UmVjdChsYXllclJlY3QpOwotICAgIGxh
eWVyLT51cGRhdGVDb250ZW50UmVjdChtX3VwZGF0ZXIsIGNvbnRlbnRSZWN0LCAwLCBtX3N0YXRz
KTsKKyAgICBsYXllci0+dXBkYXRlQ29udGVudFJlY3QobV9xdWV1ZSwgY29udGVudFJlY3QsIDAs
IG1fc3RhdHMpOwogCiAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKGxheWVyUmVjdCwgbGF5ZXItPnRy
YWNraW5nTGF5ZXJQYWludGVyKCktPnBhaW50ZWRSZWN0KCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155341</attachid>
            <date>2012-07-30 12:48:00 -0700</date>
            <delta_ts>2012-07-31 09:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92596-20120730154744.patch</filename>
            <type>text/plain</type>
            <size>88914</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIwODUwZjdiNWZhYWEx
MWRkNzhhNDkwNDQ2MmJmMDBlMWIzNzFkMi4uNzlkMzBmYmEzMmMyOWNjNDg0MDU4N2M3ZjA2NzE0
YmI1NmNiN2JhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTMwICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBS
ZS1mYWN0b3IgQ0NUZXh0dXJlVXBkYXRlciBpbnRvIENDVGV4dHVyZVVwZGF0ZXIgYW5kIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MjU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoZSBDQ1RleHR1cmVVcGRhdGVyIGludGVyZmFjZSBpcyB1c2VkIGJ5IHRo
ZSBtYWluIHRocmVhZCB0byBxdWV1ZQorICAgICAgICB0ZXh0dXJlIHVwZGF0ZXMuIFRoZSBDQ1Rl
eHR1cmVVcGRhdGVDb250cm9sbGVyIGNvbnN0cnVjdG9yIHRha2VzIGEKKyAgICAgICAgQ0NUZXh0
dXJlVXBkYXRlciBhbmQgY29udGFpbnMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvIHBlcmZvcm0gdGV4
dHVyZQorICAgICAgICB1cGxvYWRzIGFuZCB0ZXh0dXJlIGNvcGllcy4gVGhpcyBjbGFzcyBpcyBv
bmx5IHVzZWQgYnkgdGhlIGltcGwgdGhyZWFkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlUGFydCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzOjpQYXJhbWV0ZXJzKToKKyAgICAgICAgKFBhcmFt
ZXRlcnMpOgorICAgICAgICAoVGV4dHVyZUNvcGllcik6CisgICAgICAgIChBY2NlbGVyYXRlZFRl
eHR1cmVDb3BpZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1
cmVVcGxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0
ZXJzOjpQYXJhbWV0ZXJzKToKKyAgICAgICAgKFBhcmFtZXRlcnMpOgorICAgICAgICAoVGV4dHVy
ZVVwbG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3R0bGVkVGV4dHVy
ZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaDoKKyAgICAgICAgKFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlVGlsZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJl
YWRQcm94eTo6ZG9Db21taXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6bWF4UGFy
dGlhbFRleHR1cmVVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVw
ZGF0ZUNvbnRyb2xsZXI6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6fkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6aGFzTW9y
ZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6
dXBkYXRlTW9yZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXI6OnVwZGF0ZU1vcmVUZXh0dXJlc1NpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVD
b250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6
OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjphcHBl
bmRGdWxsVXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVu
ZFBhcnRpYWxVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBw
ZW5kQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp0YWtlRmlyc3RG
dWxsVXBsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnRha2VGaXJz
dFBhcnRpYWxVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dGFr
ZUZpcnN0Q29weSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3Jl
VXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoQ0NUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmVVcGRhdGVyOjpmdWxsVXBsb2FkU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpwYXJ0aWFsVXBsb2FkU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RleHR1cmVVcGRhdGVyOjpjb3B5U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25CZWdpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OkJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZTo6QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKyAg
ICAgICAgKEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSk6CisgICAgICAgIChDQ1RocmVhZFByb3h5
KToKKwogMjAxMi0wNy0yOCAgTWluIFFpbiAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgQWRkIGFuIG92ZXJsYXkgcGxheSBidXR0b24gdG8gbWVkaWEgY29udHJvbHMgb24gYW5kcm9p
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwYjhhYTlmNDBmYjFhNDNjMzJjYTg3ZTgy
MmEzMzY5MjVjNjE5YjYzLi40NzBjNzRiOTY5OWVlOWM1ZmU5NmZmYzM1YTgyY2YzNTU0ZDRlMzgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTMw
ICBEYXZpZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9t
aXVtXSBSZWZhY3RvciBDQ1RleHR1cmVVcGRhdGVyIGludG8gQ0NUZXh0dXJlVXBkYXRlUXVldWUg
YW5kIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogc3JjL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1RleHR1cmVVcGRhdGVD
b250cm9sbGVyVGVzdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcC4KKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6
OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVy
Ojp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAgKiB0ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHA6
CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0
LmNwcDoKKwogMjAxMi0wNy0yOCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+
CiAKICAgICAgICAgU2lnaC4gIEp1c3QgZGlzYWJsZSBhbGwgdGhlIEF1dG9SZXNpemUgdGVzdHMg
YWZ0ZXIgdGhlIGZpcnN0IHRocmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDNlYzg0ZjRiNTI2OGE4
YzJjNDEwNmIwYTE0NmM1ZjgwZjljZTEzZmEuLmFmN2IwYWViN2ZmMDMzMTJjYzVmNjc3MWJhY2E3
NTNlZDdhYTk1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTgzODMsNiArODM4Myw4IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlRHJhd1F1YWQu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAKaW5kZXggYzRmMTM4YWI3MWM2YmJhNTAwYTVkYjA3NDhjYWUzNDFhMzMxOThhNC4uNDAwM2U0
MjJlZTY1YzRkMWRjZjFjYzFhMmYwNDYwZmFmZDE4MzI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMjUsNyArMTI1LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwg
dm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBs
b2FkcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRl
c3RSZWN0KSBPVkVSUklERSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUo
Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBQYXJhbWV0ZXJzIHVwbG9hZCkg
T1ZFUlJJREUgeyB1cGxvYWQubV90ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIs
IHVwbG9hZC5tX3NvdXJjZVJlY3QsIHVwbG9hZC5tX2Rlc3RSZWN0KTsgfQogCiBwcm90ZWN0ZWQ6
CiAgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDZjNjA3OWZlNWViMmY3NGE0Mzk5NzcwZTJjNjRh
OGQ1YTJiYTBlYS4uNDY1NWI2MzU1NTM5MGZhNjljYmYxZWVkNmRlODU0YjkxNTg4MTcxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBA
QCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZVBhcnQoTGF5ZXJUZXh0dXJlVXBk
YXRlciogcGFpbnRlciwgTGF5ZXJUZXh0dQogICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHJlY3Qs
IHN0YXRzKTsKIAogICAgIEludFJlY3QgZGVzdFJlY3QoSW50UG9pbnQoKSwgcmVjdC5zaXplKCkp
OwotICAgIHVwZGF0ZXIuYXBwZW5kRnVsbFVwZGF0ZSh0ZXh0dXJlLCByZWN0LCBkZXN0UmVjdCk7
CisgICAgdXBkYXRlci5hcHBlbmRGdWxsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVy
cyh0ZXh0dXJlLCByZWN0LCBkZXN0UmVjdCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAK
aW5kZXggMGI1OTU5N2E1ZWU4MDkwMDdhMjQ4NDFiNWQ1ZjdlOWFmOWM5NDRmYS4uNjZlMTkwMzEw
MWJmZWFhNmExM2QxOTQwNzFmYjYwZTcxOWU1YjlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5jcHAK
QEAgLTY2LDEzICs2NiwxMyBAQCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6On5BY2NlbGVyYXRl
ZFRleHR1cmVDb3BpZXIoKQogICAgICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKSk7CiB9CiAKLXZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVy
Ojpjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmIHNpemUpCit2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGll
cjo6Y29weVRleHR1cmUoUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogewogICAgIFRSQUNFX0VWRU5U
MCgiY2MiLCAiVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUiKTsKIAogICAgIC8vIE5vdGU6IHRo
aXMgY29kZSBkb2VzIG5vdCByZXN0b3JlIHRoZSB2aWV3cG9ydCwgYm91bmQgcHJvZ3JhbSwgMkQg
dGV4dHVyZSwgZnJhbWVidWZmZXIsIGJ1ZmZlciBvciBibGVuZCBlbmFibGUuCiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSLCBtX2ZibykpOwotICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0Nv
bnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBkZXN0VGV4dHVyZUlkLCAwKSk7CisgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHBhcmFtZXRlcnMubV9kZXN0VGV4dHVyZSwgMCkpOwogCiAjaWYgT1MoQU5EUk9JRCkKICAg
ICAvLyBDbGVhciBkZXN0aW5hdGlvbiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9uIHRpbGluZyBH
UFVzLgpAQCAtODAsNyArODAsNyBAQCB2b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29w
eVRleHR1cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZQogICAgIEdMQyht
X2NvbnRleHQsIG1fY29udGV4dC0+Y2xlYXIoR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0JVRkZF
Ul9CSVQpKTsKICNlbmRpZgogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgc291cmNlVGV4dHVyZUlkKSk7Cisg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgcGFyYW1ldGVycy5tX3NvdXJjZVRleHR1cmUpKTsKICAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpORUFSRVNUKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJh
bWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOwogCkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSh1
bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlCiAgICAgR0xDKG1fY29udGV4dCwg
bV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsK
ICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0
M0Q6OkFSUkFZX0JVRkZFUiwgMCkpOwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT52
aWV3cG9ydCgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBHTEMobV9j
b250ZXh0LCBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIHBhcmFtZXRlcnMubV9zaXplLndpZHRo
KCksIHBhcmFtZXRlcnMubV9zaXplLmhlaWdodCgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpCTEVORCkpOwogICAgIEdMQyhtX2Nv
bnRleHQsIG1fY29udGV4dC0+ZHJhd0FycmF5cyhHcmFwaGljc0NvbnRleHQzRDo6VFJJQU5HTEVf
RkFOLCAwLCA0KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAppbmRleCBiMzg1ZjQ1ZTU0M2E3NDM2ZTU1
NzgwMzIyYmExZDJiMTRlMjc3YWU1Li43OTllZjQzNDI0NDFkYjgyMGYxYTM2NDE2MTljNzExZmU1
ODZlOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9UZXh0dXJlQ29waWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oCkBAIC0zOCwxMCArMzgsMjAgQEAgY2xhc3MgSW50
U2l6ZTsKIAogY2xhc3MgVGV4dHVyZUNvcGllciB7CiBwdWJsaWM6Ci0gICAgLy8gQ29weSB0aGUg
YmFzZSBsZXZlbCBjb250ZW50cyBvZiB8c291cmNlVGV4dHVyZUlkfCB0byB8ZGVzdFRleHR1cmVJ
ZHwuIEJvdGggdGV4dHVyZSBvYmplY3RzCisgICAgc3RydWN0IFBhcmFtZXRlcnMgeworICAgICAg
ICBQYXJhbWV0ZXJzKHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIHVuc2lnbmVkIGRlc3RUZXh0dXJl
LCBJbnRTaXplIHNpemUpCisgICAgICAgICAgICA6IG1fc291cmNlVGV4dHVyZShzb3VyY2VUZXh0
dXJlKQorICAgICAgICAgICAgLCBtX2Rlc3RUZXh0dXJlKGRlc3RUZXh0dXJlKQorICAgICAgICAg
ICAgLCBtX3NpemUoc2l6ZSkgeyB9CisKKyAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VUZXh0dXJl
OworICAgICAgICB1bnNpZ25lZCBtX2Rlc3RUZXh0dXJlOworICAgICAgICBJbnRTaXplIG1fc2l6
ZTsKKyAgICB9OworICAgIC8vIENvcHkgdGhlIGJhc2UgbGV2ZWwgY29udGVudHMgb2YgfHNvdXJj
ZVRleHR1cmV8IHRvIHxkZXN0VGV4dHVyZXwuIEJvdGggdGV4dHVyZSBvYmplY3RzCiAgICAgLy8g
bXVzdCBiZSBjb21wbGV0ZSBhbmQgaGF2ZSBhIGJhc2UgbGV2ZWwgb2YgfHNpemV8IGRpbWVuc2lv
bnMuIFRoZSBjb2xvciBmb3JtYXRzIGRvIG5vdCBuZWVkCi0gICAgLy8gdG8gbWF0Y2gsIGJ1dCB8
ZGVzdFRleHR1cmVJZHwgbXVzdCBoYXZlIGEgcmVuZGVyYWJsZSBmb3JtYXQuCi0gICAgdmlydHVh
bCB2b2lkIGNvcHlUZXh0dXJlKHVuc2lnbmVkIHNvdXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVz
dFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpID0gMDsKKyAgICAvLyB0byBtYXRjaCwgYnV0IHxk
ZXN0VGV4dHVyZXwgbXVzdCBoYXZlIGEgcmVuZGVyYWJsZSBmb3JtYXQuCisgICAgdmlydHVhbCB2
b2lkIGNvcHlUZXh0dXJlKFBhcmFtZXRlcnMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZmx1c2go
KSA9IDA7CiAKIHByb3RlY3RlZDoKQEAgLTU5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIH0KICAg
ICB2aXJ0dWFsIH5BY2NlbGVyYXRlZFRleHR1cmVDb3BpZXIoKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0
dXJlSWQsIGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoUGFy
YW1ldGVycyk7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoKCk7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVV
cGxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZVVwbG9hZGVyLmgKaW5kZXggOTI4NzBjYjVhNWJmZDkwZWFmYzI4NzNkNzBjYzBjZjEwZDFi
ZTEwYi4uNzVhZWEzNWQ5OWFiNDQyOWI1MWNlYzY4MWRkNzgzYzJjNjVmZWU3OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZVVwbG9hZGVyLmgKQEAgLTMxLDEyICszMSwyMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFRleHR1cmVVcGxvYWRlciB7CiBwdWJsaWM6CisgICAgc3RydWN0IFBhcmFtZXRlcnMg
eworICAgICAgICBQYXJhbWV0ZXJzKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIEludFJlY3Qgc291cmNlUmVjdCwgSW50UmVjdCBkZXN0UmVjdCkKKyAgICAgICAgICAgIDog
bV90ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAsIG1fc291cmNlUmVjdChzb3VyY2VSZWN0
KQorICAgICAgICAgICAgLCBtX2Rlc3RSZWN0KGRlc3RSZWN0KSB7IH0KKworICAgICAgICBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgICAgIEludFJlY3QgbV9z
b3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CisgICAgfTsKKwogICAgIHZp
cnR1YWwgflRleHR1cmVVcGxvYWRlcigpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGlzQnVzeSgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBlbmRVcGxvYWRzKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJ
bnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBQYXJhbWV0ZXJzKSA9
IDA7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApp
bmRleCAyODFlMDhmZjA0OTg3ODEyOGE4NDMyNzA5ZWZmZTY5NjkxYjgwZDJmLi4yZWE2ZWExNjUz
MWM4YmRhYjY3MDZlNGQwNmVhYzIzOGQwMDlhZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5jcHAKQEAgLTEyMCw5ICsxMjAsOSBAQCB2b2lkIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6ZW5kVXBsb2FkcygpCiAgICAgbV9wZW5kaW5nUXVlcmllcy5hcHBlbmQo
bV9hdmFpbGFibGVRdWVyaWVzLnRha2VGaXJzdCgpKTsKIH0KIAotdm9pZCBUaHJvdHRsZWRUZXh0
dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBjb25zdCBJbnRS
ZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QgZGVzdFJlY3QpCit2b2lkIFRocm90dGxlZFRl
eHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIsIFBhcmFtZXRlcnMgdXBsb2FkKQogewotICAgIHRleHR1cmUtPnVwZGF0ZVJlY3Qo
cmVzb3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIHVwbG9hZC5tX3Rl
eHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgdXBsb2FkLm1fc291cmNlUmVjdCwg
dXBsb2FkLm1fZGVzdFJlY3QpOwogfQogCiB2b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6
cHJvY2Vzc1F1ZXJpZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaApp
bmRleCBmOGM0M2RjMmQ0MzAzOWYyZmQyNzhjZmE3YzcxN2NhYTI5MGJhNGM5Li4zNjE0NjhmYzgy
ZWY1M2VlY2JhNDg0NGNlYzIxYzQwNTYyOGI2MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRU
ZXh0dXJlVXBsb2FkZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGlzQnVzeSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBD
Q1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0IHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QgZGVzdFJlY3QpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKEND
UmVzb3VyY2VQcm92aWRlciosIFBhcmFtZXRlcnMpIE9WRVJSSURFOwogCiBwcml2YXRlOgogICAg
IGNsYXNzIFF1ZXJ5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDY4NzQw
ZWY1MDczNzM2MWIwZDFjNjNhMjg1OGU2ZDc1ZjYyZWRjMzQuLjJkMDI5M2E0NjU5YzE4NDBhYmFm
MGIwZGFlNjg0MzIyN2ViOGZiNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApA
QCAtNTA3LDkgKzUwNyw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlcyhi
b29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGluCiAgICAgICAgICAgICAg
ICAgQ1JBU0goKTsKIAogICAgICAgICAgICAgaWYgKHRpbGUtPnBhcnRpYWxVcGRhdGUpCi0gICAg
ICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRQYXJ0aWFsVXBkYXRlKHRpbGUtPnRleHR1cmUoKSwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kUGFy
dGlhbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnModGlsZS0+dGV4dHVyZSgpLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHVwZGF0ZXIuYXBwZW5kRnVsbFVwZGF0ZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZEZ1bGxVcGxvYWQoVGV4dHVy
ZVVwbG9hZGVyOjpQYXJhbWV0ZXJzKHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKaW5kZXggMjZiMGE3MTg2NjAyMWI2OTI3ZDcwNzE2MDYzZWM4NjEyMmVlMDNlOC4u
MTY0MjVmZmJhNjdhZjZmNjY0NDA3Y2NiOWFmZThiNzk4OWNmNmIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJj
Yy9DQ0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUg
ImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApAQCAtMjA2LDEy
ICsyMDYsMTMgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdChDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKQogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRP
bkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKLSAgICAgICAgLy8gQ0NU
ZXh0dXJlVXBkYXRlciBpcyBub24tYmxvY2tpbmcgYW5kIHdpbGwgcmV0dXJuIHdpdGhvdXQgdXBk
YXRpbmcKLSAgICAgICAgLy8gYW55IHRleHR1cmVzIGlmIHRoZSB1cGxvYWRlciBpcyBidXN5LiBU
aGlzIHNob3VsZG4ndCBiZSBhIHByb2JsZW0KLSAgICAgICAgLy8gaGVyZSBhcyB0aGUgdGhyb3R0
bGVkIHVwbG9hZGVyIGlzbid0IHVzZWQgaW4gc2luZ2xlIHRocmVhZCBtb2RlLgotICAgICAgICAv
LyBGb3IgY29ycmVjdG5lc3MsIGxvb3AgdW50aWwgbm8gbW9yZSB1cGRhdGVzIGFyZSBwZW5kaW5n
LgorICAgICAgICAvLyBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyBp
cyBub24tYmxvY2tpbmcgYW5kIHdpbGwKKyAgICAgICAgLy8gcmV0dXJuIHdpdGhvdXQgdXBkYXRp
bmcgYW55IHRleHR1cmVzIGlmIHRoZSB1cGxvYWRlciBpcyBidXN5LiBUaGlzCisgICAgICAgIC8v
IHNob3VsZG4ndCBiZSBhIHByb2JsZW0gaGVyZSBhcyB0aGUgdGhyb3R0bGVkIHVwbG9hZGVyIGlz
bid0IHVzZWQgaW4KKyAgICAgICAgLy8gc2luZ2xlIHRocmVhZCBtb2RlLiBGb3IgY29ycmVjdG5l
c3MsIGxvb3AgdW50aWwgbm8gbW9yZSB1cGRhdGVzIGFyZQorICAgICAgICAvLyBwZW5kaW5nLgog
ICAgICAgICB3aGlsZSAodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKQotICAgICAgICAgICAgdXBk
YXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRlcigpLCBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIoKSwgbV9sYXll
clRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIoKSwgbWF4UGFy
dGlhbFRleHR1cmVVcGRhdGVzKCkpOworICAgICAgICAgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlcjo6dXBkYXRlVGV4dHVyZXMobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92aWRl
cigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3BpZXIo
KSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2FkZXIo
KSwgJnVwZGF0ZXIsIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mYmIwZjM2ODU4NjBhYTUzODg0YTJjYTk0OTViZTZlM2YzNmUwNGM4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5jcHAKQEAgLTAsMCArMSwxNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1
ZGUgIlRleHR1cmVDb3BpZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlVXBsb2FkZXIuaCIKKyNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIHsKKworLy8gTnVtYmVyIG9mIHRl
eHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVhY2ggY2FsbCB0byB1cGRhdGVNb3JlVGV4dHVyZXMoKS4K
K3N0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDQ4OworCisvLyBG
bHVzaCBpbnRlcnZhbCB3aGVuIHBlcmZvcm1pbmcgdGV4dHVyZSB1cGxvYWRzLgorc3RhdGljIGNv
bnN0IGludCB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2QgPSA0OworCit9IC8vIGFub255bW91cyBu
YW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzaXplX3QgQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlcjo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkKK3sKKyAgICByZXR1cm4gdGV4
dHVyZVVwZGF0ZXNQZXJGcmFtZTsKK30KKwordm9pZCBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
Ojp1cGRhdGVUZXh0dXJlcyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIFRl
eHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlciwgQ0NUZXh0dXJl
VXBkYXRlciogdXBkYXRlciwgc2l6ZV90IGNvdW50KQoreworICAgIGlmICh1cGRhdGVyLT5mdWxs
VXBsb2FkU2l6ZSgpIHx8IHVwZGF0ZXItPnBhcnRpYWxVcGxvYWRTaXplKCkpIHsKKyAgICAgICAg
aWYgKHVwbG9hZGVyLT5pc0J1c3koKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB1
cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisKKyAgICAgICAgc2l6ZV90IGZ1bGxVcGxvYWRDb3Vu
dCA9IDA7CisgICAgICAgIHdoaWxlICh1cGRhdGVyLT5mdWxsVXBsb2FkU2l6ZSgpICYmIGZ1bGxV
cGxvYWRDb3VudCA8IGNvdW50KSB7CisgICAgICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVy
ZShyZXNvdXJjZVByb3ZpZGVyLCB1cGRhdGVyLT50YWtlRmlyc3RGdWxsVXBsb2FkKCkpOworICAg
ICAgICAgICAgZnVsbFVwbG9hZENvdW50Kys7CisgICAgICAgICAgICBpZiAoIShmdWxsVXBsb2Fk
Q291bnQgJSB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2QpKQorICAgICAgICAgICAgICAgIHJlc291
cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHVwbG9hZHMgd2l0aG91dCBh
IGZsdXNoLgorICAgICAgICBpZiAoZnVsbFVwbG9hZENvdW50ICUgdGV4dHVyZVVwbG9hZEZsdXNo
UGVyaW9kKQorICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBw
b3J0ZWQoKTsKKworICAgICAgICBib29sIG1vcmVVcGxvYWRzID0gdXBkYXRlci0+ZnVsbFVwbG9h
ZFNpemUoKTsKKworICAgICAgICBBU1NFUlQodXBkYXRlci0+cGFydGlhbFVwbG9hZFNpemUoKSA8
PSBjb3VudCk7CisgICAgICAgIC8vIFdlIG5lZWQgYW5vdGhlciB1cGRhdGUgYmF0Y2ggaWYgdGhl
IG51bWJlciBvZiB1cGRhdGVzIHJlbWFpbmluZworICAgICAgICAvLyBpbiB8Y291bnR8IGlzIGdy
ZWF0ZXIgdGhhbiB0aGUgcmVtYWluaW5nIHBhcnRpYWwgZW50cmllcy4KKyAgICAgICAgaWYgKChj
b3VudCAtIGZ1bGxVcGxvYWRDb3VudCkgPCB1cGRhdGVyLT5wYXJ0aWFsVXBsb2FkU2l6ZSgpKQor
ICAgICAgICAgICAgbW9yZVVwbG9hZHMgPSB0cnVlOworCisgICAgICAgIGlmIChtb3JlVXBsb2Fk
cykgeworICAgICAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBwYXJ0aWFsVXBsb2FkQ291bnQgPSAw
OworICAgICAgICB3aGlsZSAodXBkYXRlci0+cGFydGlhbFVwbG9hZFNpemUoKSkgeworICAgICAg
ICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUocmVzb3VyY2VQcm92aWRlciwgdXBkYXRlci0+
dGFrZUZpcnN0UGFydGlhbFVwbG9hZCgpKTsKKyAgICAgICAgICAgIHBhcnRpYWxVcGxvYWRDb3Vu
dCsrOworICAgICAgICAgICAgaWYgKCEocGFydGlhbFVwbG9hZENvdW50ICUgdGV4dHVyZVVwbG9h
ZEZsdXNoUGVyaW9kKSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5zaGFsbG93
Rmx1c2hJZlN1cHBvcnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHRo
ZXJlIGFyZSBubyBkYW5nbGluZyBwYXJ0aWFsIHVwbG9hZHMgd2l0aG91dCBhIGZsdXNoLgorICAg
ICAgICBpZiAocGFydGlhbFVwbG9hZENvdW50ICUgdGV4dHVyZVVwbG9hZEZsdXNoUGVyaW9kKQor
ICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQoKTsK
KworICAgICAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOworICAgIH0KKworICAgIHNpemVfdCBj
b3B5Q291bnQgPSAwOworICAgIHdoaWxlICh1cGRhdGVyLT5jb3B5U2l6ZSgpKSB7CisgICAgICAg
IGNvcGllci0+Y29weVRleHR1cmUodXBkYXRlci0+dGFrZUZpcnN0Q29weSgpKTsKKyAgICAgICAg
Y29weUNvdW50Kys7CisgICAgfQorCisgICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFueSB0ZXh0
dXJlIGNvcGllcywgd2UgbmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhlIGNvbXBv
c2l0b3IgY29udGV4dAorICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVhZCBwcm9j
ZWVkIGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJlIG9mIG9u
ZSBvZgorICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCisgICAgaWYgKGNvcHlDb3VudCkKKyAg
ICAgICAgY29waWVyLT5mbHVzaCgpOworfQorCitDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjpD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyKFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gdXBk
YXRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBUZXh0dXJlQ29waWVy
KiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIpCisgICAgOiBtX3VwZGF0ZXIodXBk
YXRlcikKKyAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3ZpZGVyKQorICAgICwg
bV9jb3BpZXIoY29waWVyKQorICAgICwgbV91cGxvYWRlcih1cGxvYWRlcikKK3sKK30KKworQ0NU
ZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6fkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIoKQorewor
fQorCitib29sIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6Omhhc01vcmVVcGRhdGVzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV91cGRhdGVyLT5oYXNNb3JlVXBkYXRlcygpOworfQorCit2b2lk
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZU1vcmVUZXh0dXJlcygpCit7CisgICAg
aWYgKCFtX3VwZGF0ZXItPmhhc01vcmVVcGRhdGVzKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IHVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlciwgbV9jb3BpZXIsIG1fdXBsb2FkZXIs
IG1fdXBkYXRlci5nZXQoKSwgdXBkYXRlTW9yZVRleHR1cmVzU2l6ZSgpKTsKK30KKworc2l6ZV90
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZU1vcmVUZXh0dXJlc1NpemUoKSBjb25z
dAoreworICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOworfQorCit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFhMWE3
ZTU4YTY0YTlhNjk1ZWYxM2Q0NTU2N2Q2NmQ2NzBkOTc5ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDQ1RleHR1cmVV
cGRhdGVDb250cm9sbGVyX2gKKyNkZWZpbmUgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcl9oCisK
KyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRleHR1cmVDb3BpZXI7CitjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CisKK2NsYXNzIEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI+IGNyZWF0ZShQYXNzT3duUHRyPENDVGV4dHVyZVVwZGF0
ZXI+IHVwZGF0ZXIsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4dHVy
ZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKHVwZGF0ZXIs
IHJlc291cmNlUHJvdmlkZXIsIGNvcGllciwgdXBsb2FkZXIpKTsKKyAgICB9CisgICAgc3RhdGlj
IHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKTsKKyAgICBzdGF0aWMgdm9pZCB1cGRh
dGVUZXh0dXJlcyhDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVw
bG9hZGVyKiwgQ0NUZXh0dXJlVXBkYXRlciosIHNpemVfdCBjb3VudCk7CisKKyAgICB2aXJ0dWFs
IH5DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKCk7CisKKyAgICBib29sIGhhc01vcmVVcGRhdGVz
KCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVNb3JlVGV4dHVyZXMoKTsKKworICAgIC8vIFZpcnR1
YWwgZm9yIHRlc3RpbmcuCisgICAgdmlydHVhbCBzaXplX3QgdXBkYXRlTW9yZVRleHR1cmVzU2l6
ZSgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcihQ
YXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+LCBDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJl
Q29waWVyKiwgVGV4dHVyZVVwbG9hZGVyKik7CisKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRl
cj4gbV91cGRhdGVyOworICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNvdXJjZVByb3ZpZGVy
OworICAgIFRleHR1cmVDb3BpZXIqIG1fY29waWVyOworICAgIFRleHR1cmVVcGxvYWRlciogbV91
cGxvYWRlcjsKK307CisKK30KKworI2VuZGlmIC8vIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCBjNmY0OTI5YTg2MTA2OGYx
ZTZmOTA1MGU0YzEwNDEyZTdlMzUwNWJhLi5jNTIwM2Q3ZmNlMjZjNjk3MDI5ODNiY2ZkNTA3MGEz
NWU1NjRiZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksMjAg
KzI5LDkgQEAKIAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAotI2luY2x1ZGUg
IkNDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
LSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZUNvcGll
ci5oIgotI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgotCi11c2luZyBuYW1lc3BhY2Ugc3Rk
OwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBpbnQga1VwbG9hZEZsdXNo
UGVyaW9kID0gNDsKLQogQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCi0gICAg
OiBtX2VudHJ5SW5kZXgoMCkKIHsKIH0KIApAQCAtNTAsMTE2ICszOSwzOSBAQCBDQ1RleHR1cmVV
cGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBkYXRl
cjo6YXBwZW5kVXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0b3I8
VXBkYXRlRW50cnk+JiBlbnRyaWVzKQordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmRGdWxs
VXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyB1cGxvYWQpCiB7Ci0gICAgQVNTRVJU
KHRleHR1cmUpOwotCi0gICAgVXBkYXRlRW50cnkgZW50cnk7Ci0gICAgZW50cnkudGV4dHVyZSA9
IHRleHR1cmU7Ci0gICAgZW50cnkuc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgZW50cnku
ZGVzdFJlY3QgPSBkZXN0UmVjdDsKLSAgICBlbnRyaWVzLmFwcGVuZChlbnRyeSk7CisgICAgbV9m
dWxsRW50cmllcy5hcHBlbmQodXBsb2FkKTsKIH0KIAotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjph
cHBlbmRGdWxsVXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjphcHBlbmRQYXJ0aWFsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFy
YW1ldGVycyB1cGxvYWQpCiB7Ci0gICAgYXBwZW5kVXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0LCBtX2Z1bGxFbnRyaWVzKTsKKyAgICBtX3BhcnRpYWxFbnRyaWVzLmFwcGVuZCh1
cGxvYWQpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWxVcGRhdGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6
OmFwcGVuZENvcHkoVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5KQogewotICAgIGFwcGVu
ZFVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgbV9wYXJ0aWFsRW50cmllcyk7
CisgICAgbV9jb3B5RW50cmllcy5hcHBlbmQoY29weSk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6YXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0VGV4
dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1RleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyBD
Q1RleHR1cmVVcGRhdGVyOjp0YWtlRmlyc3RGdWxsVXBsb2FkKCkKIHsKLSAgICBDb3B5RW50cnkg
Y29weTsKLSAgICBjb3B5LnNvdXJjZVRleHR1cmUgPSBzb3VyY2VUZXh0dXJlOwotICAgIGNvcHku
ZGVzdFRleHR1cmUgPSBkZXN0VGV4dHVyZTsKLSAgICBjb3B5LnNpemUgPSBzaXplOwotICAgIG1f
Y29weUVudHJpZXMuYXBwZW5kKGNvcHkpOworICAgIHJldHVybiBtX2Z1bGxFbnRyaWVzLnRha2VG
aXJzdCgpOwogfQogCi1ib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29u
c3QKK1RleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyBDQ1RleHR1cmVVcGRhdGVyOjp0YWtlRmly
c3RQYXJ0aWFsVXBsb2FkKCkKIHsKLSAgICByZXR1cm4gbV9mdWxsRW50cmllcy5zaXplKCkgfHwg
bV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCk7CisgICAgcmV0
dXJuIG1fcGFydGlhbEVudHJpZXMudGFrZUZpcnN0KCk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgVGV4dHVy
ZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyLCBzaXplX3QgY291bnQp
CitUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzIENDVGV4dHVyZVVwZGF0ZXI6OnRha2VGaXJzdENv
cHkoKQogewotICAgIHNpemVfdCBpbmRleDsKLQotICAgIGlmIChtX2Z1bGxFbnRyaWVzLnNpemUo
KSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSkgewotICAgICAgICBpZiAodXBsb2FkZXItPmlz
QnVzeSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHVwbG9hZGVyLT5iZWdpblVw
bG9hZHMoKTsKLQotICAgICAgICBpbnQgZnVsbFVwbG9hZENvdW50ID0gMDsKLSAgICAgICAgc2l6
ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2Z1bGxFbnRyaWVzLnNp
emUoKSk7Ci0gICAgICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGluZGV4IDwgbWF4SW5k
ZXg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZnVsbEVu
dHJpZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoZW50cnku
dGV4dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJl
Y3QpOwotICAgICAgICAgICAgZnVsbFVwbG9hZENvdW50Kys7Ci0gICAgICAgICAgICBpZiAoIShm
dWxsVXBsb2FkQ291bnQgJSBrVXBsb2FkRmx1c2hQZXJpb2QpKQotICAgICAgICAgICAgICAgIHJl
c291cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHVwbG9hZHMgd2l0aG91
dCBhIGZsdXNoLgotICAgICAgICBpZiAoZnVsbFVwbG9hZENvdW50ICUga1VwbG9hZEZsdXNoUGVy
aW9kKQotICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0
ZWQoKTsKLQotICAgICAgICBib29sIG1vcmVVcGxvYWRzID0gbWF4SW5kZXggPCBtX2Z1bGxFbnRy
aWVzLnNpemUoKTsKLQotICAgICAgICBBU1NFUlQobV9wYXJ0aWFsRW50cmllcy5zaXplKCkgPD0g
Y291bnQpOwotICAgICAgICAvLyBXZSBuZWVkIGFub3RoZXIgdXBkYXRlIGJhdGNoIGlmIHRoZSBu
dW1iZXIgb2YgdXBkYXRlcyByZW1haW5pbmcKLSAgICAgICAgLy8gaW4gfGNvdW50fCBpcyBncmVh
dGVyIHRoYW4gdGhlIHJlbWFpbmluZyBwYXJ0aWFsIGVudHJpZXMuCi0gICAgICAgIGlmICgoY291
bnQgLSAoaW5kZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKQot
ICAgICAgICAgICAgbW9yZVVwbG9hZHMgPSB0cnVlOwotCi0gICAgICAgIGlmIChtb3JlVXBsb2Fk
cykgewotICAgICAgICAgICAgbV9lbnRyeUluZGV4ID0gaW5kZXg7Ci0gICAgICAgICAgICB1cGxv
YWRlci0+ZW5kVXBsb2FkcygpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCk7ICsr
aW5kZXgpIHsKLSAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fcGFydGlhbEVudHJp
ZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUoZW50cnkudGV4
dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50cnkuZGVzdFJlY3Qp
OwotICAgICAgICAgICAgaWYgKCEoKGluZGV4KzEpICUga1VwbG9hZEZsdXNoUGVyaW9kKSkKLSAg
ICAgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgp
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkYW5nbGlu
ZyBwYXJ0aWFsIHVwbG9hZHMgd2l0aG91dCBhIGZsdXNoLgotICAgICAgICAvLyBOb3RlOiBXZSBk
b24ndCBuZWVkIHRvIHVzZSAoaW5kZXgrMSkgaW4gdGhpcyBjYXNlIGJlY2F1c2UgaW5kZXggd2Fz
Ci0gICAgICAgIC8vIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgdGhlIGZvciBsb29wLgotICAg
ICAgICBpZiAoaW5kZXggJSBrVXBsb2FkRmx1c2hQZXJpb2QpCi0gICAgICAgICAgICByZXNvdXJj
ZVByb3ZpZGVyLT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpOwotCi0gICAgICAgIHVwbG9hZGVy
LT5lbmRVcGxvYWRzKCk7Ci0gICAgfQotCi0gICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9j
b3B5RW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgQ29weUVudHJ5JiBjb3B5RW50
cnkgPSBtX2NvcHlFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgY29waWVyLT5jb3B5VGV4dHVyZShj
b3B5RW50cnkuc291cmNlVGV4dHVyZSwgY29weUVudHJ5LmRlc3RUZXh0dXJlLCBjb3B5RW50cnku
c2l6ZSk7Ci0gICAgfQotCi0gICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFueSB0ZXh0dXJlIGNv
cGllcywgd2UgbmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhlIGNvbXBvc2l0b3Ig
Y29udGV4dAotICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVhZCBwcm9jZWVkIGFz
IGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJlIG9mIG9uZSBvZgot
ICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCi0gICAgaWYgKG1fY29weUVudHJpZXMuc2l6ZSgp
KQotICAgICAgICBjb3BpZXItPmZsdXNoKCk7Ci0KLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQg
dG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOworICAgIHJldHVybiBtX2NvcHlF
bnRyaWVzLnRha2VGaXJzdCgpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmNsZWFyKCkK
K2Jvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAogewotICAgIG1f
ZW50cnlJbmRleCA9IDA7Ci0gICAgbV9mdWxsRW50cmllcy5jbGVhcigpOwotICAgIG1fcGFydGlh
bEVudHJpZXMuY2xlYXIoKTsKLSAgICBtX2NvcHlFbnRyaWVzLmNsZWFyKCk7CisgICAgcmV0dXJu
IG1fZnVsbEVudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpIHx8IG1fY29w
eUVudHJpZXMuc2l6ZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5k
ZXggOTcyYTFjMGVjN2U0ODEyMTM4MWQ0ZTRmZTZjOTkwNzBhOTRiODI1Ni4uOWZmZGVmNGZkZDkx
YTEwNjA4NzdmZjM5YTFjYmMyMDRkMDgxMzg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaApAQCAtMjgsNyArMjgsOSBAQAogCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVk
ZSAiVGV4dHVyZUNvcGllci5oIgorI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDM4ICs0MSwz
MCBAQCBjbGFzcyBUZXh0dXJlVXBsb2FkZXI7CiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1
YmxpYzoKICAgICBDQ1RleHR1cmVVcGRhdGVyKCk7Ci0gICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsK
KyAgICB2aXJ0dWFsIH5DQ1RleHR1cmVVcGRhdGVyKCk7CiAKLSAgICB2b2lkIGFwcGVuZEZ1bGxV
cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKLSAgICB2b2lkIGFwcGVuZFBhcnRpYWxV
cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKLSAgICB2b2lkIGFwcGVuZENvcHkodW5z
aWduZWQgc291cmNlVGV4dHVyZSwgdW5zaWduZWQgZGVzdFRleHR1cmUsIGNvbnN0IEludFNpemUm
KTsKKyAgICB2b2lkIGFwcGVuZEZ1bGxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJz
KTsKKyAgICB2b2lkIGFwcGVuZFBhcnRpYWxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0
ZXJzKTsKKyAgICB2b2lkIGFwcGVuZENvcHkoVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyk7CiAK
LSAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgLy8gVmlydHVhbCBmb3IgdGVz
dGluZy4KKyAgICB2aXJ0dWFsIFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyB0YWtlRmlyc3RG
dWxsVXBsb2FkKCk7CisgICAgdmlydHVhbCBUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMgdGFr
ZUZpcnN0UGFydGlhbFVwbG9hZCgpOworICAgIHZpcnR1YWwgVGV4dHVyZUNvcGllcjo6UGFyYW1l
dGVycyB0YWtlRmlyc3RDb3B5KCk7CiAKLSAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4KLSAg
ICB2b2lkIHVwZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVy
ZVVwbG9hZGVyKiwgc2l6ZV90IGNvdW50KTsKKyAgICAvLyBWaXJ0dWFsIGZvciB0ZXN0aW5nLgor
ICAgIHZpcnR1YWwgc2l6ZV90IGZ1bGxVcGxvYWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9mdWxs
RW50cmllcy5zaXplKCk7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBwYXJ0aWFsVXBsb2FkU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyB9CisgICAgdmlydHVhbCBz
aXplX3QgY29weVNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvcHlFbnRyaWVzLnNpemUoKTsgfQog
Ci0gICAgdm9pZCBjbGVhcigpOworICAgIGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgewotICAgICAgICBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlOwotICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Q7Ci0g
ICAgICAgIEludFJlY3QgZGVzdFJlY3Q7Ci0gICAgfTsKLQotICAgIHN0cnVjdCBDb3B5RW50cnkg
ewotICAgICAgICBJbnRTaXplIHNpemU7Ci0gICAgICAgIHVuc2lnbmVkIHNvdXJjZVRleHR1cmU7
Ci0gICAgICAgIHVuc2lnbmVkIGRlc3RUZXh0dXJlOwotICAgIH07Ci0KLSAgICBzdGF0aWMgdm9p
ZCBhcHBlbmRVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0LCBWZWN0b3I8VXBkYXRlRW50
cnk+Jik7CisgICAgc3RhdGljIHZvaWQgYXBwZW5kVXBsb2FkKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCwgRGVxdWU8VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzPiYpOwogCi0gICAgc2l6ZV90
IG1fZW50cnlJbmRleDsKLSAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZnVsbEVudHJpZXM7Ci0g
ICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX3BhcnRpYWxFbnRyaWVzOwotICAgIFZlY3RvcjxDb3B5
RW50cnk+IG1fY29weUVudHJpZXM7CisgICAgRGVxdWU8VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0
ZXJzPiBtX2Z1bGxFbnRyaWVzOworICAgIERlcXVlPFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVy
cz4gbV9wYXJ0aWFsRW50cmllczsKKyAgICBEZXF1ZTxUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJz
PiBtX2NvcHlFbnRyaWVzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRl
eCA5YTQ1NWZmYjAyYWZlNzY5Nzg1OTVjYjFlZGJhNDUzOTU0YTQ4M2M4Li40YmZmOGFjNzRhZjgw
NTk0NGVjMjJiMGQzNzA1YmZkZDMwMmYxNTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2lu
Y2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94
eS5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
QEAgLTQ2LDEwICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAK
LS8vIE51bWJlciBvZiB0ZXh0dXJlcyB0byB1cGRhdGUgd2l0aCBlYWNoIGNhbGwgdG8KLS8vIHNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKS4KLXN0YXRpYyBjb25zdCBzaXplX3Qg
dGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDQ4OwotCiAvLyBNZWFzdXJlZCBpbiBzZWNvbmRzLgog
c3RhdGljIGNvbnN0IGRvdWJsZSBjb250ZXh0UmVjcmVhdGlvblRpY2tSYXRlID0gMC4wMzsKIApA
QCAtNDQ4LDggKzQ0NCw2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQmVn
aW5GcmFtZSgpCiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcg
QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1
ZXN0LT5tb25vdG9uaWNGcmFtZUJlZ2luVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5zY3JvbGxJbmZvID0gbV9sYXll
clRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRhcygpOwotICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIpOwot
ICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT51cGRhdGVyID0gbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuZ2V0KCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVl
c3QtPmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0Q29tbWl0KCk7CiAgICAgbV9wZW5kaW5n
QmVnaW5GcmFtZVJlcXVlc3QtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzID0gbV9sYXllclRy
ZWVIb3N0SW1wbC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMoKTsKIApAQCAtNTIwLDcgKzUx
NCw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgaWYgKHJlcXVlc3Qt
PmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5l
dmljdEFsbENvbnRlbnRUZXh0dXJlcygpOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMoKnJlcXVlc3QtPnVwZGF0ZXIsIHJlcXVlc3QtPm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5
dGVzKTsKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gdXBkYXRlciA9IGFkb3B0UHRyKG5l
dyBDQ1RleHR1cmVVcGRhdGVyKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygq
KHVwZGF0ZXIuZ2V0KCkpLCByZXF1ZXN0LT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyk7CiAK
ICAgICAvLyBPbmNlIHNpbmdsZSBidWZmZXJlZCBsYXllcnMgYXJlIGNvbW1pdHRlZCwgdGhleSBj
YW5ub3QgYmUgbW9kaWZpZWQgdW50aWwKICAgICAvLyB0aGV5IGFyZSBkcmF3biBieSB0aGUgaW1w
bCB0aHJlYWQuCkBAIC01NDIsNyArNTM3LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lKCkKICAgICAgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFk
QmxvY2tlZDsKIAogICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwotICAgICAg
ICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlz
LCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Ny
b3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBDQ1Byb3h5OjppbXBsVGhy
ZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZj
b21wbGV0aW9uKSwgdXBkYXRlci5yZWxlYXNlKCkpKTsKICAgICAgICAgY29tcGxldGlvbi53YWl0
KCk7CiAgICAgfQogCkBAIC01NTAsNyArNTQ1LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlZ2luRnJhbWUoKTsKIH0KIAotdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24pCit2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21w
bGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbiwgUGFzc093blB0
cjxDQ1RleHR1cmVVcGRhdGVyPiB1cGRhdGVyKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAi
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIik7CiAgICAgQVNT
RVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CkBAIC01NjMsNiArNTU4
LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAor
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkID0gQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlcjo6Y3JlYXRlKHVwZGF0ZXIsIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigp
LT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+
dGV4dHVyZVVwbG9hZGVyKCkpOwogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkID0gY29tcGxldGlvbjsKIAogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZy
YW1lQ29tcGxldGUoKTsKQEAgLTU4MCw5ICs1NzYsOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVBYm9ydGVkT25JbXBsVGhyZWFkKCkKIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNN
b3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkKQorICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXJPbkltcGxUaHJlYWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CisgICAg
cmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkLT5oYXNN
b3JlVXBkYXRlcygpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6OmNhbkRyYXcoKQpAQCAtNTk2
LDE5ICs1OTIsMTkgQEAgYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5EcmF3KCkKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJB
Q0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3Jl
UmVzb3VyY2VzIik7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCksIHRleHR1cmVVcGRhdGVzUGVyRnJh
bWUpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRo
cmVhZCk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQt
PnVwZGF0ZU1vcmVUZXh0dXJlcygpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNT
RVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMo
KSk7CisgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhy
ZWFkKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBs
VGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQuY2xlYXIoKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1w
bFRocmVhZC5jbGVhcigpOwogCiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQo
KTsKIApAQCAtODYxLDcgKzg1Nyw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2V0RnVsbFJvb3RM
YXllckRhbWFnZU9uSW1wbFRocmVhZCgpCiAKIHNpemVfdCBDQ1RocmVhZFByb3h5OjptYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogewotICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1Bl
ckZyYW1lOworICAgIHJldHVybiBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjptYXhQYXJ0aWFs
VGV4dHVyZVVwZGF0ZXMoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRl
eHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIENDR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0UHRyLCBib29sKiByZWNyZWF0ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4
IDg2MGEyMDE3Mzg2NjRiZTc5NGViNzg5ODRjZGVmYTFjYjk2ZjhlNDUuLjRlNWY0ZWQ1YjRjN2U2
NWY5MGIzNTk2Y2M4NWVjOWVmOGZkZjQ3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAg
LTM4LDYgKzM4LDcgQEAgY2xhc3MgQ0NJbnB1dEhhbmRsZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKIGNsYXNzIENDU2NvcGVkVGhyZWFkUHJveHk7CitjbGFz
cyBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOwogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNs
YXNzIENDVGhyZWFkOwogY2xhc3MgQ0NUaHJlYWRQcm94eUNvbnRleHRSZWNyZWF0aW9uVGltZXI7
CkBAIC05OSwxMyArMTAwLDExIEBAIHByaXZhdGU6CiAgICAgc3RydWN0IEJlZ2luRnJhbWVBbmRD
b21taXRTdGF0ZSB7CiAgICAgICAgIEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSgpCiAgICAgICAg
ICAgICA6IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKDApCi0gICAgICAgICAgICAsIHVwZGF0ZXIo
MCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgZG91YmxlIG1vbm90b25pY0ZyYW1l
QmVnaW5UaW1lOwogICAgICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5m
bzsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciogdXBkYXRlcjsKICAgICAgICAgYm9vbCBjb250
ZW50c1RleHR1cmVzV2VyZURlbGV0ZWQ7CiAgICAgICAgIHNpemVfdCBtZW1vcnlBbGxvY2F0aW9u
TGltaXRCeXRlczsKICAgICB9OwpAQCAtMTI3LDcgKzEyNiw3IEBAIHByaXZhdGU6CiAgICAgICAg
IEludFJlY3QgcmVjdDsKICAgICB9OwogICAgIHZvaWQgZm9yY2VCZWdpbkZyYW1lT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBk
YXRlcj4pOwogICAgIHZvaWQgYmVnaW5GcmFtZUFib3J0ZWRPbkltcGxUaHJlYWQoKTsKICAgICB2
b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2
b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlvbk9uSW1wbFRocmVhZChJbnRTaXplIHRh
cmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlv
blNlYyk7CkBAIC0xNDUsNiArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBDQ1NjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9v
bCBmb3JjZWREcmF3KTsKICAgICB2b2lkIGZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVyc09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgc2V0TmVlZHNGb3JjZWRDb21t
aXRPbkltcGxUaHJlYWQoKTsKKyAgICB2b2lkIHRleHR1cmVVcGRhdGVPbkltcGxUaHJlYWQoKTsK
IAogICAgIC8vIEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFkIG9ubHkuCiAgICAgYm9vbCBtX2FuaW1h
dGVSZXF1ZXN0ZWQ7CkBAIC0xODMsNyArMTgzLDcgQEAgcHJpdmF0ZToKICAgICAvLyBTZXQgd2hl
biB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBsYXllcnMgdG8gYmUgZHJhd24uCiAgICAg
Q0NDb21wbGV0aW9uRXZlbnQqIG1fdGV4dHVyZUFjcXVpc2l0aW9uQ29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkOwogCi0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkOworICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZDsKIAogICAg
IC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5kRHJhd0Zy
YW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1p
dHRlZEZyYW1lT25JbXBsVGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXgg
YjUwNzE4OWRiODMzMDI1YzJmMDM0ODRkMzZiNDQ1MmZhOGVkYzI3NS4uNWMyNzJkNGJhNDUwMmE3
NDE3MGEyNDRiZmU4Y2UyYWE3ZDdiMWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBp
CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgICAgICAndGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3Bw
JywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Rlc3RDb21tb24uaCcsCi0gICAgICAgICAgICAndGVz
dHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9DQ1RleHR1
cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRM
YXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NUaWxlZExheWVyVGVzdENv
bW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllci5jcHAKaW5kZXggZDljZWEzYmIxNmI0ZDhiNTdlMjVkOTRiMWQzZmI0NGNjZTE0OWFm
My4uZmIyZDFjZThiNTE1ZWQ0N2FmYWUwODFmMzRjYjQ5Y2U1OTZhYTQxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNw
cApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29w
eSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdl
YlNpemUgc2l6ZSkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIG1fdXBkYXRlci5hcHBlbmRDb3B5
KHNvdXJjZVRleHR1cmUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgc2l6ZSk7CisgICAgICAgIG1fdXBk
YXRlci5hcHBlbmRDb3B5KFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMoc291cmNlVGV4dHVyZSwg
ZGVzdGluYXRpb25UZXh0dXJlLCBzaXplKSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGJiNWI5NmJhMGFmNzhjODE4MWNiY2Y5OTM1
OWFhZTFkMGY4OTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHAKQEAgLTAsMCArMSw1NDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkNDU2NoZWR1bGVyVGVzdENvbW1v
bi5oIgorI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJGYWtl
V2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViVGhyZWFkLmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwordXNpbmcgdGVzdGlu
Zzo6VGVzdDsKKworCituYW1lc3BhY2UgeworCitjb25zdCBpbnQga0ZsdXNoUGVyaW9kRnVsbCA9
IDQ7Citjb25zdCBpbnQga0ZsdXNoUGVyaW9kUGFydGlhbCA9IGtGbHVzaFBlcmlvZEZ1bGw7CisK
K2NsYXNzIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0OworCitjbGFzcyBXZWJHcmFwaGlj
c0NvbnRleHQzREZvclVwbG9hZFRlc3QgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNE
IHsKK3B1YmxpYzoKKyAgICBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QoQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlclRlc3QgKnRlc3QpCisgICAgICAgIDogbV90ZXN0KHRlc3QpCisg
ICAgICAgICwgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoKHRydWUpCisgICAgeyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgZmx1c2godm9pZCk7CisgICAgdmlydHVhbCB2b2lkIHNoYWxsb3dGbHVzaENIUk9N
SVVNKHZvaWQpOworICAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJm
YWNlKCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdH
QzNEZW51bSBuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG1fc3VwcG9ydFNoYWxsb3dGbHVzaCkK
KyAgICAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3NoYWxsb3dfZmx1c2gi
KTsKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygiIik7CisgICAgfQorCitwcml2YXRlOgorICAg
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0KiBtX3Rlc3Q7CisgICAgYm9vbCBtX3N1cHBv
cnRTaGFsbG93Rmx1c2g7Cit9OworCisKK2NsYXNzIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRl
c3QgOiBwdWJsaWMgRmFrZVRleHR1cmVVcGxvYWRlciB7CitwdWJsaWM6CisgICAgVGV4dHVyZVVw
bG9hZGVyRm9yVXBsb2FkVGVzdChDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCAqdGVzdCkg
OiBtX3Rlc3QodGVzdCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqLCBQYXJh
bWV0ZXJzKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyVGVzdCogbV90ZXN0OworfTsKKworY2xhc3MgVGV4dHVyZUZvclVwbG9hZFRlc3QgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CitwdWJsaWM6CisgICAgVGV4dHVyZUZv
clVwbG9hZFRlc3QoKSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUoYWRvcHRQdHI8Q0NQ
cmlvcml0aXplZFRleHR1cmU+KDApKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChD
Q1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkgeyB9Cit9OworCisKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXJUZXN0IDogcHVibGljIFRlc3QgeworcHVibGljOgorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXJUZXN0KCkKKyAgICA6IG1fdXBkYXRlcihhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRl
cikpCisgICAgLCBtX3VwbG9hZGVyKHRoaXMpCisgICAgLCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVj
dGVkKDApCisgICAgLCBtX3BhcnRpYWxDb3VudEV4cGVjdGVkKDApCisgICAgLCBtX3RvdGFsVXBs
b2FkQ291bnRFeHBlY3RlZCgwKQorICAgICwgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSgwKQor
ICAgICwgbV9udW1CZWdpblVwbG9hZHMoMCkKKyAgICAsIG1fbnVtRW5kVXBsb2FkcygwKQorICAg
ICwgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMoMCkKKyAgICAsIG1fbnVtRGFuZ2xpbmdVcGxvYWRz
KDApCisgICAgLCBtX251bVRvdGFsVXBsb2FkcygwKQorICAgICwgbV9udW1Ub3RhbEZsdXNoZXMo
MCkKKyAgICAsIG1fbnVtUHJldmlvdXNVcGxvYWRzKDApCisgICAgLCBtX251bVByZXZpb3VzRmx1
c2hlcygwKQorICAgIHsgfQorCitwdWJsaWM6CisgICAgdm9pZCBvbkZsdXNoKCkKKyAgICB7Cisg
ICAgICAgIC8vIENoZWNrIGZvciBiYWNrLXRvLWJhY2sgZmx1c2hlcy4KKyAgICAgICAgRVhQRUNU
X0VRKDAsIG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzKSA8PCAiQmFjay10by1iYWNrIGZsdXNoZXMg
ZGV0ZWN0ZWQuIjsKKworICAgICAgICAvLyBDaGVjayBmb3IgcHJlbWF0dXJlIGZsdXNoZXMKKyAg
ICAgICAgaWYgKG1fbnVtUHJldmlvdXNVcGxvYWRzICE9IG1fbWF4VXBsb2FkQ291bnRQZXJVcGRh
dGUpIHsKKyAgICAgICAgICAgIGlmIChtX251bVRvdGFsVXBsb2FkcyA8IG1fZnVsbFVwbG9hZENv
dW50RXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgRVhQRUNUX0dFKG1fbnVtRGFuZ2xpbmdVcGxv
YWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8PCAiUHJlbWF0dXJlIGZsdXNoIGRldGVjdGVkIGluIGZ1
bGwgdXBsb2Fkcy4iOworICAgICAgICAgICAgZWxzZSBpZiAobV9udW1Ub3RhbFVwbG9hZHMgPiBt
X2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkICYmIG1fbnVtVG90YWxVcGxvYWRzIDwgbV90b3RhbFVw
bG9hZENvdW50RXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgRVhQRUNUX0dFKG1fbnVtRGFuZ2xp
bmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RQYXJ0aWFsKSA8PCAiUHJlbWF0dXJlIGZsdXNoIGRldGVj
dGVkIGluIHBhcnRpYWwgdXBsb2Fkcy4iOworICAgICAgICB9CisKKyAgICAgICAgbV9udW1EYW5n
bGluZ1VwbG9hZHMgPSAwOworICAgICAgICBtX251bUNvbnNlY3V0aXZlRmx1c2hlcysrOworICAg
ICAgICBtX251bVRvdGFsRmx1c2hlcysrOworICAgICAgICBtX251bVByZXZpb3VzRmx1c2hlcysr
OworICAgIH0KKworICAgIHZvaWQgb25CZWdpblVwbG9hZHMoKQorICAgIHsKKyAgICAgICAgbV9u
dW1QcmV2aW91c0ZsdXNoZXMgPSAwOworICAgICAgICBtX251bVByZXZpb3VzVXBsb2FkcyA9IDA7
CisgICAgICAgIG1fbnVtQmVnaW5VcGxvYWRzKys7CisgICAgfQorCisgICAgdm9pZCBvblVwbG9h
ZCgpCisgICAgeworICAgICAgICAvLyBDaGVjayBmb3IgdG9vIG1hbnkgY29uc2VjdXRpdmUgdXBs
b2FkcworICAgICAgICBpZiAobV9udW1Ub3RhbFVwbG9hZHMgPCBtX2Z1bGxVcGxvYWRDb3VudEV4
cGVjdGVkKQorICAgICAgICAgICAgRVhQRUNUX0xUKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1
c2hQZXJpb2RGdWxsKSA8PCAiVG9vIG1hbnkgY29uc2VjdXRpdmUgZnVsbCB1cGxvYWRzIGRldGVj
dGVkLiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEVYUEVDVF9MVChtX251bURhbmdsaW5n
VXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFydGlhbCkgPDwgIlRvbyBtYW55IGNvbnNlY3V0aXZlIHBh
cnRpYWwgdXBsb2FkcyBkZXRlY3RlZC4iOworCisgICAgICAgIG1fbnVtQ29uc2VjdXRpdmVGbHVz
aGVzID0gMDsKKyAgICAgICAgbV9udW1EYW5nbGluZ1VwbG9hZHMrKzsKKyAgICAgICAgbV9udW1U
b3RhbFVwbG9hZHMrKzsKKyAgICAgICAgbV9udW1QcmV2aW91c1VwbG9hZHMrKzsKKyAgICB9CisK
KyAgICB2b2lkIG9uRW5kVXBsb2FkcygpCisgICAgeworICAgICAgICBFWFBFQ1RfRVEoMCwgbV9u
dW1EYW5nbGluZ1VwbG9hZHMpIDw8ICJMYXN0IHVwbG9hZCB3YXNuJ3QgZm9sbG93ZWQgYnkgYSBm
bHVzaC4iOworCisgICAgICAgIC8vIE5vdGU6IFRoZSBtX251bVRvdGFsVXBsb2FkcyAhPSBtX2Z1
bGxVcGxvYWRDb3VudEV4cGVjdGVkIGNvbXBhcmlzb24KKyAgICAgICAgLy8gYWxsb3dzIGZvciB0
aGUgcXVvdGEgbm90IHRvIGJlIGhpdCBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgdHJhc2l0aW9u
aW5nCisgICAgICAgIC8vIGZyb20gZnVsbCB1cGxvYWRzIHRvIHBhcnRpYWwgdXBsb2Fkcy4KKyAg
ICAgICAgaWYgKG1fbnVtVG90YWxVcGxvYWRzICE9IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVk
ICYmIG1fbnVtVG90YWxVcGxvYWRzICE9IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShtX21heFVwbG9hZENvdW50UGVyVXBkYXRlLCBtX251bVByZXZp
b3VzVXBsb2FkcykKKyAgICAgICAgICAgICAgICA8PCAiZW5kVXBsb2FkKCkgd2FzIGNhbGxlZCB3
aGVuIHRoZXJlIGFyZSB0ZXh0dXJlcyB0byB1cGxvYWQsIGJ1dCB0aGUgdXBsb2FkIHF1b3RhIGhh
c24ndCBiZWVuIGZpbGxlZC4iOworICAgICAgICB9CisKKyAgICAgICAgbV9udW1FbmRVcGxvYWRz
Kys7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7
CisgICAgICAgIE93blB0cjxXZWJUaHJlYWQ+IHRocmVhZDsKKyAgICAgICAgV2ViQ29tcG9zaXRv
cjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworCisgICAgICAgIG1fY29udGV4dCA9IENDR3Jh
cGhpY3NDb250ZXh0OjpjcmVhdGUzRCgKKyAgICAgICAgICAgICAgICAgICAgYWRvcHRQdHIobmV3
IFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2FkVGVzdCh0aGlzKSkpOworICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgbV9yZXNvdXJjZVByb3Zp
ZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgV2ViQ29tcG9z
aXRvcjo6c2h1dGRvd24oKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZEZ1bGxVcGxvYWRzVG9V
cGRhdGVyKGludCBjb3VudCkKKyAgICB7CisgICAgICAgIG1fZnVsbFVwbG9hZENvdW50RXhwZWN0
ZWQgKz0gY291bnQ7CisgICAgICAgIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkICs9IGNvdW50
OworCisgICAgICAgIGNvbnN0IEludFJlY3QgcmVjdCgwLCAwLCAzMDAsIDE1MCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIG1fdXBkYXRlci0+
YXBwZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMoJm1fdGV4dHVyZSwg
cmVjdCwgcmVjdCkpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1Vw
ZGF0ZXIoaW50IGNvdW50KQorICAgIHsKKyAgICAgICAgbV9wYXJ0aWFsQ291bnRFeHBlY3RlZCAr
PSBjb3VudDsKKyAgICAgICAgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQgKz0gY291bnQ7CisK
KyAgICAgICAgY29uc3QgSW50UmVjdCByZWN0KDAsIDAsIDEwMCwgMTAwKTsKKyAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgbV91cGRhdGVyLT5hcHBl
bmRQYXJ0aWFsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycygmbV90ZXh0dXJlLCBy
ZWN0LCByZWN0KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0
ZShpbnQgY291bnQpCisgICAgeworICAgICAgICBtX21heFVwbG9hZENvdW50UGVyVXBkYXRlID0g
Y291bnQ7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgLy8gQ2xhc3NlcyByZXF1aXJlZCB0byBp
bnRlcmFjdCBhbmQgdGVzdCB0aGUgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcgorICAgIE93blB0
cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0OworICAgIE93blB0cjxDQ1Jlc291cmNlUHJv
dmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4g
bV91cGRhdGVyOworICAgIFRleHR1cmVGb3JVcGxvYWRUZXN0IG1fdGV4dHVyZTsKKyAgICBGYWtl
VGV4dHVyZUNvcGllciBtX2NvcGllcjsKKyAgICBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0
IG1fdXBsb2FkZXI7CisKKyAgICAvLyBQcm9wZXJ0aWVzIC8gZXhwZWN0YXRpb25zIG9mIHRoaXMg
dGVzdAorICAgIGludCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkOworICAgIGludCBtX3BhcnRp
YWxDb3VudEV4cGVjdGVkOworICAgIGludCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZDsKKyAg
ICBpbnQgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZTsKKworICAgIC8vIER5bmFtaWMgcHJvcGVy
dGllcyBvZiB0aGlzIHRlc3QKKyAgICBpbnQgbV9udW1CZWdpblVwbG9hZHM7CisgICAgaW50IG1f
bnVtRW5kVXBsb2FkczsKKyAgICBpbnQgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXM7CisgICAgaW50
IG1fbnVtRGFuZ2xpbmdVcGxvYWRzOworICAgIGludCBtX251bVRvdGFsVXBsb2FkczsKKyAgICBp
bnQgbV9udW1Ub3RhbEZsdXNoZXM7CisgICAgaW50IG1fbnVtUHJldmlvdXNVcGxvYWRzOworICAg
IGludCBtX251bVByZXZpb3VzRmx1c2hlczsKK307CisKK3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0
M0RGb3JVcGxvYWRUZXN0OjpmbHVzaCh2b2lkKQoreworICAgIG1fdGVzdC0+b25GbHVzaCgpOwor
fQorCit2b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2FkVGVzdDo6c2hhbGxvd0ZsdXNo
Q0hST01JVU0odm9pZCkKK3sKKyAgICBtX3Rlc3QtPm9uRmx1c2goKTsKK30KKwordm9pZCBUZXh0
dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0OjpiZWdpblVwbG9hZHMoKQoreworICAgIG1fdGVzdC0+
b25CZWdpblVwbG9hZHMoKTsKK30KKwordm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0
OjplbmRVcGxvYWRzKCkKK3sKKyAgICBtX3Rlc3QtPm9uRW5kVXBsb2FkcygpOworfQorCit2b2lk
IFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6OnVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NS
ZXNvdXJjZVByb3ZpZGVyKiwgUGFyYW1ldGVycykKK3sKKyAgICBtX3Rlc3QtPm9uVXBsb2FkKCk7
Cit9CisKKworLy8gWkVSTyBVUExPQURTIFRFU1RTCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlclRlc3QsIFplcm9VcGxvYWRzKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRh
dGVyKDApOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDApOworICAgIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5n
ZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBs
b2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBFWFBFQ1RfRVEoMCwgbV9udW1CZWdpblVwbG9hZHMp
OworICAgIEVYUEVDVF9FUSgwLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgwLCBt
X251bVByZXZpb3VzRmx1c2hlcyk7CisgICAgRVhQRUNUX0VRKDAsIG1fbnVtUHJldmlvdXNVcGxv
YWRzKTsKK30KKworCisvLyBPTkUgVVBMT0FEIFRFU1RTCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlclRlc3QsIE9uZUZ1bGxVcGxvYWQpCit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNU
b1VwZGF0ZXIoMSk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7CisgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9j
b3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4
cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQ
RUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlv
dXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQor
CitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE9uZVBhcnRpYWxVcGxvYWQp
Cit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMCk7CisgICAgYXBwZW5kUGFydGlh
bFVwbG9hZHNUb1VwZGF0ZXIoMSk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9y
ZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIu
Z2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBt
X251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Cisg
ICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoMSwg
bV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlclRlc3QsIE9uZUZ1bGxPbmVQYXJ0aWFsVXBsb2FkKQoreworICAgIGFwcGVuZEZ1bGxVcGxv
YWRzVG9VcGRhdGVyKDEpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDEpOwor
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVw
ZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291
bnRFeHBlY3RlZCk7CisKKyAgICAvLyBXZSBleHBlY3QgdGhlIGZ1bGwgdXBsb2FkcyB0byBiZSBm
b2xsb3dlZCBieSBhIGZsdXNoCisgICAgLy8gYmVmb3JlIHRoZSBwYXJ0aWFsIHVwbG9hZHMgYmVn
aW4uCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEo
MSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9udW1QcmV2aW91c0ZsdXNo
ZXMpOworICAgIEVYUEVDVF9FUSgyLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisKKworLy8g
Tk8gUkVNQUlOREVSIFRFU1RTCisvLyBUaGlzIGNsYXNzIG9mIHRlc3RzIHVwbG9hZCBhIG51bWJl
ciBvZiB0ZXh0dXJlcyB0aGF0IGlzIGEgbXVsdGlwbGUgb2YgdGhlIGZsdXNoIHBlcmlvZC4KK2Nv
bnN0IGludCBmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgPSA3OworY29uc3QgaW50IGZ1bGxOb1Jl
bWFpbmRlckNvdW50ID0gZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICoga0ZsdXNoUGVyaW9kRnVs
bDsKKworY29uc3QgaW50IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciA9IDExOworY29uc3Qg
aW50IHBhcnRpYWxOb1JlbWFpbmRlckNvdW50ID0gcGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVy
ICoga0ZsdXNoUGVyaW9kUGFydGlhbDsKKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXJUZXN0LCBNYW55RnVsbFVwbG9hZHNOb1JlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBs
b2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7CisgICAgYXBwZW5kUGFydGlhbFVw
bG9hZHNUb1VwZGF0ZXIoMCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNv
dXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0
KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251
bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAg
RVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMp
OworICAgIEVYUEVDVF9FUShmdWxsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9h
ZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE1hbnlQYXJ0
aWFsVXBsb2Fkc05vUmVtYWluZGVyKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVy
KDApOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxOb1JlbWFpbmRl
ckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgbV90b3Rh
bFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxv
YWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEo
cGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisgICAg
RVhQRUNUX0VRKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7
Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFueUZ1bGxNYW55
UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBk
YXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1Vw
ZGF0ZXIocGFydGlhbE5vUmVtYWluZGVyQ291bnQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRl
eHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwg
bV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBFWFBF
Q1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVw
bG9hZHMpOworICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFs
VXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1Rf
RVEoZnVsbE5vUmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCwgbV9udW1Q
cmV2aW91c1VwbG9hZHMpOworfQorCisKKy8vIE1JTi9NQVggUkVNQUlOREVSIFRFU1RTCisvLyBU
aGlzIGNsYXNzIG9mIHRlc3RzIG1peCBhbmQgbWF0Y2ggdXBsb2FkaW5nIDEgbW9yZSBhbmQgMSBs
ZXNzIHRleHR1cmUKKy8vIHRoYW4gYSBtdWx0aXBsZSBvZiB0aGUgZmx1c2ggcGVyaW9kLgorCitj
b25zdCBpbnQgZnVsbE1pblJlbWFpbmRlckNvdW50ID0gZnVsbE5vUmVtYWluZGVyQ291bnQgKyAx
OworY29uc3QgaW50IGZ1bGxNYXhSZW1haW5kZXJDb3VudCA9IGZ1bGxOb1JlbWFpbmRlckNvdW50
IC0gMTsKK2NvbnN0IGludCBwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQgPSBwYXJ0aWFsTm9SZW1h
aW5kZXJDb3VudCArIDE7Citjb25zdCBpbnQgcGFydGlhbE1heFJlbWFpbmRlckNvdW50ID0gcGFy
dGlhbE5vUmVtYWluZGVyQ291bnQgLSAxOworCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbE1pblJlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRG
dWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBh
cnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCk7CisgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVj
dGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNU
X0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11
bHRpcGxlciArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciArIDIsIG1fbnVtUHJldmlvdXNG
bHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbE1pblJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1p
blJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisKK1RFU1RfRihDQ1Rl
eHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFueUZ1bGxBbmRQYXJ0aWFsVXBsb2Fkc01heFJl
bWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWlu
ZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhS
ZW1haW5kZXJDb3VudCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCks
IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJl
Z2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQ
RUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRp
cGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUShmdWxsTWF4UmVtYWlu
ZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRz
KTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBNYW55RnVsbE1p
blJlbWFpbmRlck1hbnlQYXJ0aWFsTWF4UmVtYWluZGVyKQoreworICAgIGFwcGVuZEZ1bGxVcGxv
YWRzVG9VcGRhdGVyKGZ1bGxNaW5SZW1haW5kZXJDb3VudCk7CisgICAgYXBwZW5kUGFydGlhbFVw
bG9hZHNUb1VwZGF0ZXIocGFydGlhbE1heFJlbWFpbmRlckNvdW50KTsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
Ojp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1f
dXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwor
CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwg
bV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxl
cisxKSArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMp
OworICAgIEVYUEVDVF9FUShmdWxsTWluUmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWlu
ZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVw
ZGF0ZUNvbnRyb2xsZXJUZXN0LCBNYW55RnVsbE1heFJlbWFpbmRlck1hbnlQYXJ0aWFsTWluUmVt
YWluZGVyKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNYXhSZW1haW5k
ZXJDb3VudCk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE1pblJl
bWFpbmRlckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
KyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNl
UHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwg
bV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVn
aW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBF
Q1RfRVEoZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICsgKHBhcnRpYWxVcGxvYWRGbHVzaE11bHRp
cGxlcisxKSwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUShmdWxsTWF4UmVt
YWluZGVyQ291bnQgKyBwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxv
YWRzKTsKK30KKworCisvLyBNVUxUSVBMRSBVUERBVEUgVEVTVFMKKy8vIFRoZXNlIHRlc3RzIGF0
dGVtcHQgdG8gdXBsb2FkIHRvbyBtYW55IHRleHR1cmVzIGF0IG9uY2UsIHJlcXVpcmluZworLy8g
bXVsdGlwbGUgY2FsbHMgdG8gdXBkYXRlKCkuCisKK2ludCBleHBlY3RlZEZsdXNoZXMoaW50IHVw
bG9hZHMsIGludCBmbHVzaFBlcmlvZCkKK3sKKyAgICByZXR1cm4gKHVwbG9hZHMgKyBmbHVzaFBl
cmlvZCAtIDEpIC8gZmx1c2hQZXJpb2Q7Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250
cm9sbGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKK3sKKyAg
ICBjb25zdCBpbnQga01heFVwbG9hZHNQZXJVcGRhdGUgPSA0MDsKKyAgICBjb25zdCBpbnQga0Z1
bGxVcGxvYWRzID0gMTAwOworICAgIGNvbnN0IGludCBrUGFydGlhbFVwbG9hZHMgPSAyMDsKKwor
ICAgIGludCBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IDA7CisgICAgaW50IGV4cGVjdGVkUHJl
dmlvdXNVcGxvYWRzID0gMDsKKworICAgIHNldE1heFVwbG9hZENvdW50UGVyVXBkYXRlKGtNYXhV
cGxvYWRzUGVyVXBkYXRlKTsKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihrRnVsbFVw
bG9hZHMpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQYXJ0aWFsVXBsb2Fk
cyk7CisKKyAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCisgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBk
YXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9h
ZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKworICAgIEVYUEVD
VF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBs
b2Fkcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhr
TWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7CisgICAgRVhQRUNUX0VRKGV4
cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisKKyAgICBleHBl
Y3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOworICAgIEVYUEVDVF9F
UShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOworCisgICAg
Ly8gU2Vjb25kIHVwZGF0ZSAoNDAgZnVsbCkKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
Ojp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1f
dXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwga01heFVwbG9hZHNQZXJVcGRhdGUpOworCisgICAg
RVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9udW1F
bmRVcGxvYWRzKTsKKworICAgIGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzID0gZXhwZWN0ZWRGbHVz
aGVzKGtNYXhVcGxvYWRzUGVyVXBkYXRlLCBrRmx1c2hQZXJpb2RGdWxsKTsKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKworICAg
IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0ga01heFVwbG9hZHNQZXJVcGRhdGU7CisgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7CisK
KyAgICAvLyBUaGlyZCB1cGRhdGUgKDIwIGZ1bGwsIDIwIHBhcnRpYWwpCisgICAgQ0NUZXh0dXJl
VXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
LCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIGtNYXhVcGxvYWRzUGVy
VXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgzLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQ
RUNUX0VRKDMsIG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hl
cyA9IGV4cGVjdGVkRmx1c2hlcyhrRnVsbFVwbG9hZHMta01heFVwbG9hZHNQZXJVcGRhdGUqMiwg
a0ZsdXNoUGVyaW9kRnVsbCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRGbHVzaGVzKGtQYXJ0aWFsVXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFydGlhbCk7CisgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisK
KyAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IChrRnVsbFVwbG9hZHMta01heFVwbG9hZHNQ
ZXJVcGRhdGUqMikra1BhcnRpYWxVcGxvYWRzOworICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZp
b3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOworCisgICAgLy8gRmluYWwgc2FuaXR5
IGNoZWNrcworICAgIEVYUEVDVF9FUShrRnVsbFVwbG9hZHMgKyBrUGFydGlhbFVwbG9hZHMsIG1f
bnVtVG90YWxVcGxvYWRzKTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJU
ZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUFsbFBhcnRpYWwpCit7CisgICAgY29uc3QgaW50
IGtNYXhVcGxvYWRzUGVyVXBkYXRlID0gNDA7CisgICAgY29uc3QgaW50IGtGdWxsVXBsb2FkcyA9
IDcwOworICAgIGNvbnN0IGludCBrUGFydGlhbFVwbG9hZHMgPSAzMDsKKworICAgIGludCBleHBl
Y3RlZFByZXZpb3VzRmx1c2hlcyA9IDA7CisgICAgaW50IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRz
ID0gMDsKKworICAgIHNldE1heFVwbG9hZENvdW50UGVyVXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBk
YXRlKTsKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihrRnVsbFVwbG9hZHMpOworICAg
IGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQYXJ0aWFsVXBsb2Fkcyk7CisKKyAgICAv
LyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0
ZXIuZ2V0KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251
bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAg
ICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1Bl
clVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlv
dXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3Vz
VXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOworICAgIEVYUEVDVF9FUShleHBlY3RlZFBy
ZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOworCisgICAgLy8gU2Vjb25kIHVw
ZGF0ZSAoMzAgZnVsbCwgb3B0aW9uYWxseSAxMCBwYXJ0aWFsKQorICAgIENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0
ZSk7CisKKyAgICBFWFBFQ1RfRVEoMiwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9F
USgyLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9MRShtX251bVByZXZpb3VzVXBsb2Fk
cywga01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIC8vIEJlIGxlbmllbnQgb24gdGhlIGV4YWN0
IG51bWJlciBvZiBmbHVzaGVzIGhlcmUsIGFzIHRoZSBudW1iZXIgb2YgZmx1c2hlcworICAgIC8v
IHdpbGwgZGVwZW5kIG9uIHdoZXRoZXIgc29tZSBwYXJ0aWFsIHVwbG9hZHMgd2VyZSBwZXJmb3Jt
ZWQuCisgICAgLy8gb25GbHVzaCgpLCBvblVwbG9hZCgpLCBhbmQgb25FbmRVcGxvYWQoKSB3aWxs
IGRvIGJhc2ljIGZsdXNoIGNoZWNrcyBmb3IgdXMgYW55d2F5LgorCisgICAgLy8gVGhpcmQgdXBk
YXRlICgzMCBwYXJ0aWFsIE9SIDIwIHBhcnRpYWwgaWYgMTAgcGFydGlhbCB1cGxvYWRlZCBpbiBz
ZWNvbmQgdXBkYXRlKQorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1
cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91
cGRhdGVyLmdldCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisKKyAgICBFWFBFQ1RfRVEoMywg
bV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwor
ICAgIEVYUEVDVF9MRShtX251bVByZXZpb3VzVXBsb2Fkcywga01heFVwbG9hZHNQZXJVcGRhdGUp
OworICAgIC8vIEJlIGxlbmllbnQgb24gdGhlIGV4YWN0IG51bWJlciBvZiBmbHVzaGVzIGhlcmUg
YXMgd2VsbC4KKworICAgIC8vIEZpbmFsIHNhbml0eSBjaGVja3MKKyAgICBFWFBFQ1RfRVEoa0Z1
bGxVcGxvYWRzICsga1BhcnRpYWxVcGxvYWRzLCBtX251bVRvdGFsVXBsb2Fkcyk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
VGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NU
ZXh0dXJlVXBkYXRlclRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmIz
NWMwNDhjYWIwMjFmMGY5MmNmNDQ4YjZlMmJlNTM2NDE4MTA4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgImNjL0NDVGV4
dHVyZVVwZGF0ZXIuaCIKLQotI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21tb24uaCIKLSNp
bmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
Ci0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVz
dC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwot
dXNpbmcgdGVzdGluZzo6VGVzdDsKLQotCi1uYW1lc3BhY2UgewotCi1jb25zdCBpbnQga0ZsdXNo
UGVyaW9kRnVsbCA9IDQ7Ci1jb25zdCBpbnQga0ZsdXNoUGVyaW9kUGFydGlhbCA9IGtGbHVzaFBl
cmlvZEZ1bGw7Ci0KLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXJUZXN0OwotCi1jbGFzcyBXZWJHcmFw
aGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4
dDNEIHsKLXB1YmxpYzoKLSAgICBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QoQ0NU
ZXh0dXJlVXBkYXRlclRlc3QgKnRlc3QpCi0gICAgICAgIDogbV90ZXN0KHRlc3QpCi0gICAgICAg
ICwgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoKHRydWUpCi0gICAgeyB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgZmx1c2godm9pZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNoYWxsb3dGbHVzaENIUk9NSVVNKHZv
aWQpOwotICAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCkg
eyByZXR1cm4gMDsgfQotCi0gICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdHQzNEZW51
bSBuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKG1fc3VwcG9ydFNoYWxsb3dGbHVzaCkKLSAgICAg
ICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVNX3NoYWxsb3dfZmx1c2giKTsKLSAg
ICAgICAgcmV0dXJuIFdlYlN0cmluZygiIik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENDVGV4
dHVyZVVwZGF0ZXJUZXN0KiBtX3Rlc3Q7Ci0gICAgYm9vbCBtX3N1cHBvcnRTaGFsbG93Rmx1c2g7
Ci19OwotCi0KLWNsYXNzIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QgOiBwdWJsaWMgRmFr
ZVRleHR1cmVVcGxvYWRlciB7Ci1wdWJsaWM6Ci0gICAgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2Fk
VGVzdChDQ1RleHR1cmVVcGRhdGVyVGVzdCAqdGVzdCkgOiBtX3Rlc3QodGVzdCkgeyB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IGVuZFVwbG9hZHMoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShX
ZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qgc291cmNlUmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RS
ZWN0KSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVyVGVzdCogbV90
ZXN0OwotfTsKLQotCi1jbGFzcyBUZXh0dXJlRm9yVXBsb2FkVGVzdCA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKLXB1YmxpYzoKLSAgICBUZXh0dXJlRm9yVXBsb2FkVGVz
dCgpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZShhZG9wdFB0cjxDQ1ByaW9yaXRpemVk
VGV4dHVyZT4oMCkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQ
cm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KSB7IH0KLX07Ci0KLQotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlclRlc3QgOiBwdWJsaWMgVGVz
dCB7Ci1wdWJsaWM6Ci0gICAgQ0NUZXh0dXJlVXBkYXRlclRlc3QoKQotICAgIDogbV91cGxvYWRl
cih0aGlzKQotICAgICwgbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCgwKQotICAgICwgbV9wYXJ0
aWFsQ291bnRFeHBlY3RlZCgwKQotICAgICwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQoMCkK
LSAgICAsIG1fbWF4VXBsb2FkQ291bnRQZXJVcGRhdGUoMCkKLSAgICAsIG1fbnVtQmVnaW5VcGxv
YWRzKDApCi0gICAgLCBtX251bUVuZFVwbG9hZHMoMCkKLSAgICAsIG1fbnVtQ29uc2VjdXRpdmVG
bHVzaGVzKDApCi0gICAgLCBtX251bURhbmdsaW5nVXBsb2FkcygwKQotICAgICwgbV9udW1Ub3Rh
bFVwbG9hZHMoMCkKLSAgICAsIG1fbnVtVG90YWxGbHVzaGVzKDApCi0gICAgLCBtX251bVByZXZp
b3VzVXBsb2FkcygwKQotICAgICwgbV9udW1QcmV2aW91c0ZsdXNoZXMoMCkKLSAgICB7IH0KLQot
cHVibGljOgotICAgIHZvaWQgb25GbHVzaCgpCi0gICAgewotICAgICAgICAvLyBDaGVjayBmb3Ig
YmFjay10by1iYWNrIGZsdXNoZXMuCi0gICAgICAgIEVYUEVDVF9FUSgwLCBtX251bUNvbnNlY3V0
aXZlRmx1c2hlcykgPDwgIkJhY2stdG8tYmFjayBmbHVzaGVzIGRldGVjdGVkLiI7Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgZm9yIHByZW1hdHVyZSBmbHVzaGVzCi0gICAgICAgIGlmIChtX251bVByZXZp
b3VzVXBsb2FkcyAhPSBtX21heFVwbG9hZENvdW50UGVyVXBkYXRlKSB7Ci0gICAgICAgICAgICBp
ZiAobV9udW1Ub3RhbFVwbG9hZHMgPCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKQotICAgICAg
ICAgICAgICAgIEVYUEVDVF9HRShtX251bURhbmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVyaW9kRnVs
bCkgPDwgIlByZW1hdHVyZSBmbHVzaCBkZXRlY3RlZCBpbiBmdWxsIHVwbG9hZHMuIjsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKG1fbnVtVG90YWxVcGxvYWRzID4gbV9mdWxsVXBsb2FkQ291bnRFeHBl
Y3RlZCAmJiBtX251bVRvdGFsVXBsb2FkcyA8IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKQot
ICAgICAgICAgICAgICAgIEVYUEVDVF9HRShtX251bURhbmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVy
aW9kUGFydGlhbCkgPDwgIlByZW1hdHVyZSBmbHVzaCBkZXRlY3RlZCBpbiBwYXJ0aWFsIHVwbG9h
ZHMuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbnVtRGFuZ2xpbmdVcGxvYWRzID0gMDsKLSAg
ICAgICAgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMrKzsKLSAgICAgICAgbV9udW1Ub3RhbEZsdXNo
ZXMrKzsKLSAgICAgICAgbV9udW1QcmV2aW91c0ZsdXNoZXMrKzsKLSAgICB9Ci0KLSAgICB2b2lk
IG9uQmVnaW5VcGxvYWRzKCkKLSAgICB7Ci0gICAgICAgIG1fbnVtUHJldmlvdXNGbHVzaGVzID0g
MDsKLSAgICAgICAgbV9udW1QcmV2aW91c1VwbG9hZHMgPSAwOwotICAgICAgICBtX251bUJlZ2lu
VXBsb2FkcysrOwotICAgIH0KLQotICAgIHZvaWQgb25VcGxvYWQoKQotICAgIHsKLSAgICAgICAg
Ly8gQ2hlY2sgZm9yIHRvbyBtYW55IGNvbnNlY3V0aXZlIHVwbG9hZHMKLSAgICAgICAgaWYgKG1f
bnVtVG90YWxVcGxvYWRzIDwgbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCkKLSAgICAgICAgICAg
IEVYUEVDVF9MVChtX251bURhbmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVyaW9kRnVsbCkgPDwgIlRv
byBtYW55IGNvbnNlY3V0aXZlIGZ1bGwgdXBsb2FkcyBkZXRlY3RlZC4iOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBFWFBFQ1RfTFQobV9udW1EYW5nbGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlv
ZFBhcnRpYWwpIDw8ICJUb28gbWFueSBjb25zZWN1dGl2ZSBwYXJ0aWFsIHVwbG9hZHMgZGV0ZWN0
ZWQuIjsKLQotICAgICAgICBtX251bUNvbnNlY3V0aXZlRmx1c2hlcyA9IDA7Ci0gICAgICAgIG1f
bnVtRGFuZ2xpbmdVcGxvYWRzKys7Ci0gICAgICAgIG1fbnVtVG90YWxVcGxvYWRzKys7Ci0gICAg
ICAgIG1fbnVtUHJldmlvdXNVcGxvYWRzKys7Ci0gICAgfQotCi0gICAgdm9pZCBvbkVuZFVwbG9h
ZHMoKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKDAsIG1fbnVtRGFuZ2xpbmdVcGxvYWRzKSA8
PCAiTGFzdCB1cGxvYWQgd2Fzbid0IGZvbGxvd2VkIGJ5IGEgZmx1c2guIjsKLQotICAgICAgICAv
LyBOb3RlOiBUaGUgbV9udW1Ub3RhbFVwbG9hZHMgIT0gbV9mdWxsVXBsb2FkQ291bnRFeHBlY3Rl
ZCBjb21wYXJpc29uCi0gICAgICAgIC8vIGFsbG93cyBmb3IgdGhlIHF1b3RhIG5vdCB0byBiZSBo
aXQgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIHRyYXNpdGlvbmluZwotICAgICAgICAvLyBmcm9t
IGZ1bGwgdXBsb2FkcyB0byBwYXJ0aWFsIHVwbG9hZHMuCi0gICAgICAgIGlmIChtX251bVRvdGFs
VXBsb2FkcyAhPSBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCAmJiBtX251bVRvdGFsVXBsb2Fk
cyAhPSBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEo
bV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSwgbV9udW1QcmV2aW91c1VwbG9hZHMpCi0gICAgICAg
ICAgICAgICAgPDwgImVuZFVwbG9hZCgpIHdhcyBjYWxsZWQgd2hlbiB0aGVyZSBhcmUgdGV4dHVy
ZXMgdG8gdXBsb2FkLCBidXQgdGhlIHVwbG9hZCBxdW90YSBoYXNuJ3QgYmVlbiBmaWxsZWQuIjsK
LSAgICAgICAgfQotCi0gICAgICAgIG1fbnVtRW5kVXBsb2FkcysrOwotICAgIH0KLQotcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBPd25QdHI8V2Vi
VGhyZWFkPiB0aHJlYWQ7Ci0gICAgICAgIFdlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUodGhyZWFk
LmdldCgpKTsKLQotICAgICAgICBtX2NvbnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRl
M0QoCi0gICAgICAgICAgICAgICAgICAgIGFkb3B0UHRyKG5ldyBXZWJHcmFwaGljc0NvbnRleHQz
REZvclVwbG9hZFRlc3QodGhpcykpKTsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
IGltcGxUaHJlYWQ7Ci0gICAgICAgIG1fcmVzb3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92
aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIFdlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihpbnQgY291bnQpCi0g
ICAgewotICAgICAgICBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkICs9IGNvdW50OwotICAgICAg
ICBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCArPSBjb3VudDsKLQotICAgICAgICBjb25zdCBJ
bnRSZWN0IHJlY3QoMCwgMCwgMzAwLCAxNTApOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGNvdW50OyBpKyspCi0gICAgICAgICAgICBtX3VwZGF0ZXIuYXBwZW5kRnVsbFVwZGF0ZSgmbV90
ZXh0dXJlLCByZWN0LCByZWN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGFwcGVuZFBhcnRpYWxVcGxv
YWRzVG9VcGRhdGVyKGludCBjb3VudCkKLSAgICB7Ci0gICAgICAgIG1fcGFydGlhbENvdW50RXhw
ZWN0ZWQgKz0gY291bnQ7Ci0gICAgICAgIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkICs9IGNv
dW50OwotCi0gICAgICAgIGNvbnN0IEludFJlY3QgcmVjdCgwLCAwLCAxMDAsIDEwMCk7Ci0gICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAgICAgICAgIG1fdXBkYXRl
ci5hcHBlbmRQYXJ0aWFsVXBkYXRlKCZtX3RleHR1cmUsIHJlY3QsIHJlY3QpOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0TWF4VXBsb2FkQ291bnRQZXJVcGRhdGUoaW50IGNvdW50KQotICAgIHsKLSAg
ICAgICAgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSA9IGNvdW50OwotICAgIH0KLQotcHJvdGVj
dGVkOgotICAgIC8vIENsYXNzZXMgcmVxdWlyZWQgdG8gaW50ZXJhY3QgYW5kIHRlc3QgdGhlIEND
VGV4dHVyZVVwZGF0ZXIKLSAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsK
LSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jlc291cmNlUHJvdmlkZXI7Ci0gICAg
Q0NUZXh0dXJlVXBkYXRlciBtX3VwZGF0ZXI7Ci0gICAgVGV4dHVyZUZvclVwbG9hZFRlc3QgbV90
ZXh0dXJlOwotICAgIEZha2VUZXh0dXJlQ29waWVyIG1fY29waWVyOwotICAgIFRleHR1cmVVcGxv
YWRlckZvclVwbG9hZFRlc3QgbV91cGxvYWRlcjsKLQotICAgIC8vIFByb3BlcnRpZXMgLyBleHBl
Y3RhdGlvbnMgb2YgdGhpcyB0ZXN0Ci0gICAgaW50IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQ7
Ci0gICAgaW50IG1fcGFydGlhbENvdW50RXhwZWN0ZWQ7Ci0gICAgaW50IG1fdG90YWxVcGxvYWRD
b3VudEV4cGVjdGVkOwotICAgIGludCBtX21heFVwbG9hZENvdW50UGVyVXBkYXRlOwotCi0gICAg
Ly8gRHluYW1pYyBwcm9wZXJ0aWVzIG9mIHRoaXMgdGVzdAotICAgIGludCBtX251bUJlZ2luVXBs
b2FkczsKLSAgICBpbnQgbV9udW1FbmRVcGxvYWRzOwotICAgIGludCBtX251bUNvbnNlY3V0aXZl
Rmx1c2hlczsKLSAgICBpbnQgbV9udW1EYW5nbGluZ1VwbG9hZHM7Ci0gICAgaW50IG1fbnVtVG90
YWxVcGxvYWRzOwotICAgIGludCBtX251bVRvdGFsRmx1c2hlczsKLSAgICBpbnQgbV9udW1QcmV2
aW91c1VwbG9hZHM7Ci0gICAgaW50IG1fbnVtUHJldmlvdXNGbHVzaGVzOwotfTsKLQotCi12b2lk
IFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2FkVGVzdDo6Zmx1c2godm9pZCkKLXsKLSAgICBt
X3Rlc3QtPm9uRmx1c2goKTsKLX0KLQotdm9pZCBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9h
ZFRlc3Q6OnNoYWxsb3dGbHVzaENIUk9NSVVNKHZvaWQpCi17Ci0gICAgbV90ZXN0LT5vbkZsdXNo
KCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6YmVnaW5VcGxvYWRz
KCkKLXsKLSAgICBtX3Rlc3QtPm9uQmVnaW5VcGxvYWRzKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVVw
bG9hZGVyRm9yVXBsb2FkVGVzdDo6ZW5kVXBsb2FkcygpCi17Ci0gICAgbV90ZXN0LT5vbkVuZFVw
bG9hZHMoKTsKLX0KLQotdm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0Ojp1cGxvYWRU
ZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6
Q0NSZXNvdXJjZVByb3ZpZGVyKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCBkZXN0UmVjdCkKLXsKLSAgICBtX3Rlc3QtPm9uVXBsb2FkKCk7Ci19Ci0KLQotLy8g
WkVSTyBVUExPQURTIFRFU1RTCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFplcm9VcGxv
YWRzKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOwotICAgIGFwcGVuZFBh
cnRpYWxVcGxvYWRzVG9VcGRhdGVyKDApOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291
bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgbV9udW1CZWdpblVwbG9hZHMpOwotICAg
IEVYUEVDVF9FUSgwLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgwLCBtX251bVBy
ZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKDAsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsK
LX0KLQotCi0vLyBPTkUgVVBMT0FEIFRFU1RTCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3Qs
IE9uZUZ1bGxVcGxvYWQpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMSk7Ci0g
ICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJv
dmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4
cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQ
RUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlv
dXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQot
Ci1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE9uZVBhcnRpYWxVcGxvYWQpCi17Ci0gICAg
YXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgYXBwZW5kUGFydGlhbFVwbG9hZHNU
b1VwZGF0ZXIoMSk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0g
ICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwg
Jm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9F
USgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fk
cyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRl
clRlc3QsIE9uZUZ1bGxPbmVQYXJ0aWFsVXBsb2FkKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRz
VG9VcGRhdGVyKDEpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRh
dGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3Rv
dGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICAvLyBXZSBleHBlY3QgdGhlIGZ1bGwgdXBs
b2FkcyB0byBiZSBmb2xsb3dlZCBieSBhIGZsdXNoCi0gICAgLy8gYmVmb3JlIHRoZSBwYXJ0aWFs
IHVwbG9hZHMgYmVnaW4uCi0gICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1Q
cmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUSgyLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7
Ci19Ci0KLQotLy8gTk8gUkVNQUlOREVSIFRFU1RTCi0vLyBUaGlzIGNsYXNzIG9mIHRlc3RzIHVw
bG9hZCBhIG51bWJlciBvZiB0ZXh0dXJlcyB0aGF0IGlzIGEgbXVsdGlwbGUgb2YgdGhlIGZsdXNo
IHBlcmlvZC4KLWNvbnN0IGludCBmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgPSA3OwotY29uc3Qg
aW50IGZ1bGxOb1JlbWFpbmRlckNvdW50ID0gZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICoga0Zs
dXNoUGVyaW9kRnVsbDsKLQotY29uc3QgaW50IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciA9
IDExOwotY29uc3QgaW50IHBhcnRpYWxOb1JlbWFpbmRlckNvdW50ID0gcGFydGlhbFVwbG9hZEZs
dXNoTXVsdGlwbGVyICoga0ZsdXNoUGVyaW9kUGFydGlhbDsKLQotVEVTVF9GKENDVGV4dHVyZVVw
ZGF0ZXJUZXN0LCBNYW55RnVsbFVwbG9hZHNOb1JlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxs
VXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7Ci0gICAgYXBwZW5kUGFydGlh
bFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZt
X2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAg
IEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVt
RW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9u
dW1QcmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUShmdWxsTm9SZW1haW5kZXJDb3VudCwg
bV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3Qs
IE1hbnlQYXJ0aWFsVXBsb2Fkc05vUmVtYWluZGVyKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRz
VG9VcGRhdGVyKDApOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxO
b1JlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29w
aWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwotCi0gICAgRVhQ
RUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRV
cGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEocGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyLCBtX251
bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50
LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVz
dCwgTWFueUZ1bGxNYW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRG
dWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7Ci0gICAgYXBwZW5kUGFy
dGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE5vUmVtYWluZGVyQ291bnQpOwotICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9y
ZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBs
b2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMp
OwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUShmdWxs
VXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVt
UHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbE5vUmVtYWluZGVyQ291bnQgKyBw
YXJ0aWFsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi0KLS8v
IE1JTi9NQVggUkVNQUlOREVSIFRFU1RTCi0vLyBUaGlzIGNsYXNzIG9mIHRlc3RzIG1peCBhbmQg
bWF0Y2ggdXBsb2FkaW5nIDEgbW9yZSBhbmQgMSBsZXNzIHRleHR1cmUKLS8vIHRoYW4gYSBtdWx0
aXBsZSBvZiB0aGUgZmx1c2ggcGVyaW9kLgotCi1jb25zdCBpbnQgZnVsbE1pblJlbWFpbmRlckNv
dW50ID0gZnVsbE5vUmVtYWluZGVyQ291bnQgKyAxOwotY29uc3QgaW50IGZ1bGxNYXhSZW1haW5k
ZXJDb3VudCA9IGZ1bGxOb1JlbWFpbmRlckNvdW50IC0gMTsKLWNvbnN0IGludCBwYXJ0aWFsTWlu
UmVtYWluZGVyQ291bnQgPSBwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCArIDE7Ci1jb25zdCBpbnQg
cGFydGlhbE1heFJlbWFpbmRlckNvdW50ID0gcGFydGlhbE5vUmVtYWluZGVyQ291bnQgLSAxOwot
Ci1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbE1pblJlbWFp
bmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVy
Q291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1h
aW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0g
ICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwg
Jm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9F
USgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fk
cyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciArIHBhcnRpYWxVcGxv
YWRGbHVzaE11bHRpcGxlciArIDIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1Rf
RVEoZnVsbE1pblJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1pblJlbWFpbmRlckNvdW50LCBtX251
bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFu
eUZ1bGxBbmRQYXJ0aWFsVXBsb2Fkc01heFJlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBs
b2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxV
cGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRD
b3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0g
ICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxv
YWRGbHVzaE11bHRpcGxlciArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2
aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUShmdWxsTWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0
aWFsTWF4UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotVEVTVF9G
KENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbE1pblJlbWFpbmRlck1hbnlQYXJ0aWFsTWF4
UmVtYWluZGVyKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNaW5SZW1h
aW5kZXJDb3VudCk7Ci0gICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE1h
eFJlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29w
aWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwotCi0gICAgRVhQ
RUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRV
cGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlcisxKSArIHBh
cnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAgIEVY
UEVDVF9FUShmdWxsTWluUmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQs
IG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0
LCBNYW55RnVsbE1heFJlbWFpbmRlck1hbnlQYXJ0aWFsTWluUmVtYWluZGVyKQotewotICAgIGFw
cGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNYXhSZW1haW5kZXJDb3VudCk7Ci0gICAgYXBw
ZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE1pblJlbWFpbmRlckNvdW50KTsKLSAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBk
YXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90
b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwotCi0gICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5V
cGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1Rf
RVEoZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICsgKHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxl
cisxKSwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUShmdWxsTWF4UmVtYWlu
ZGVyQ291bnQgKyBwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRz
KTsKLX0KLQotCi0vLyBNVUxUSVBMRSBVUERBVEUgVEVTVFMKLS8vIFRoZXNlIHRlc3RzIGF0dGVt
cHQgdG8gdXBsb2FkIHRvbyBtYW55IHRleHR1cmVzIGF0IG9uY2UsIHJlcXVpcmluZwotLy8gbXVs
dGlwbGUgY2FsbHMgdG8gdXBkYXRlKCkuCi0KLWludCBleHBlY3RlZEZsdXNoZXMoaW50IHVwbG9h
ZHMsIGludCBmbHVzaFBlcmlvZCkKLXsKLSAgICByZXR1cm4gKHVwbG9hZHMgKyBmbHVzaFBlcmlv
ZCAtIDEpIC8gZmx1c2hQZXJpb2Q7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwg
VHJpcGxlVXBkYXRlRmluYWxVcGRhdGVGdWxsQW5kUGFydGlhbCkKLXsKLSAgICBjb25zdCBpbnQg
a01heFVwbG9hZHNQZXJVcGRhdGUgPSA0MDsKLSAgICBjb25zdCBpbnQga0Z1bGxVcGxvYWRzID0g
MTAwOwotICAgIGNvbnN0IGludCBrUGFydGlhbFVwbG9hZHMgPSAyMDsKLQotICAgIGludCBleHBl
Y3RlZFByZXZpb3VzRmx1c2hlcyA9IDA7Ci0gICAgaW50IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRz
ID0gMDsKLQotICAgIHNldE1heFVwbG9hZENvdW50UGVyVXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBk
YXRlKTsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihrRnVsbFVwbG9hZHMpOwotICAg
IGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQYXJ0aWFsVXBsb2Fkcyk7Ci0KLSAgICAv
LyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCks
ICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLQotICAgIEVY
UEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5k
VXBsb2Fkcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hl
cyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7Ci0gICAgRVhQRUNUX0VR
KGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0KLSAgICBl
eHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOwotICAgIEVYUEVD
VF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotCi0g
ICAgLy8gU2Vjb25kIHVwZGF0ZSAoNDAgZnVsbCkKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVz
b3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQ
ZXJVcGRhdGUpOwotCi0gICAgRVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBF
WFBFQ1RfRVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKLQotICAgIGV4cGVjdGVkUHJldmlvdXNGbHVz
aGVzID0gZXhwZWN0ZWRGbHVzaGVzKGtNYXhVcGxvYWRzUGVyVXBkYXRlLCBrRmx1c2hQZXJpb2RG
dWxsKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMsIG1fbnVtUHJldmlv
dXNGbHVzaGVzKTsKLQotICAgIGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0ga01heFVwbG9hZHNQ
ZXJVcGRhdGU7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBtX251bVBy
ZXZpb3VzVXBsb2Fkcyk7Ci0KLSAgICAvLyBUaGlyZCB1cGRhdGUgKDIwIGZ1bGwsIDIwIHBhcnRp
YWwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2Nv
cGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLQotICAgIEVYUEVDVF9F
USgzLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDMsIG1fbnVtRW5kVXBsb2Fk
cyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrRnVs
bFVwbG9hZHMta01heFVwbG9hZHNQZXJVcGRhdGUqMiwga0ZsdXNoUGVyaW9kRnVsbCkgKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRGbHVzaGVzKGtQYXJ0aWFsVXBsb2Fk
cywga0ZsdXNoUGVyaW9kUGFydGlhbCk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNG
bHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzVXBs
b2FkcyA9IChrRnVsbFVwbG9hZHMta01heFVwbG9hZHNQZXJVcGRhdGUqMikra1BhcnRpYWxVcGxv
YWRzOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91
c1VwbG9hZHMpOwotCi0gICAgLy8gRmluYWwgc2FuaXR5IGNoZWNrcwotICAgIEVYUEVDVF9FUShr
RnVsbFVwbG9hZHMgKyBrUGFydGlhbFVwbG9hZHMsIG1fbnVtVG90YWxVcGxvYWRzKTsKLX0KLQot
VEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUFsbFBh
cnRpYWwpCi17Ci0gICAgY29uc3QgaW50IGtNYXhVcGxvYWRzUGVyVXBkYXRlID0gNDA7Ci0gICAg
Y29uc3QgaW50IGtGdWxsVXBsb2FkcyA9IDcwOwotICAgIGNvbnN0IGludCBrUGFydGlhbFVwbG9h
ZHMgPSAzMDsKLQotICAgIGludCBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IDA7Ci0gICAgaW50
IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0gMDsKLQotICAgIHNldE1heFVwbG9hZENvdW50UGVy
VXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBk
YXRlcihrRnVsbFVwbG9hZHMpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQ
YXJ0aWFsVXBsb2Fkcyk7Ci0KLSAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZSht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxv
YWRzUGVyVXBkYXRlKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0g
ICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3Vz
Rmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVy
aW9kRnVsbCk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVBy
ZXZpb3VzRmx1c2hlcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxv
YWRzUGVyVXBkYXRlOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9u
dW1QcmV2aW91c1VwbG9hZHMpOwotCi0gICAgLy8gU2Vjb25kIHVwZGF0ZSAoMzAgZnVsbCwgb3B0
aW9uYWxseSAxMCBwYXJ0aWFsKQotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3Zp
ZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7
Ci0KLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgy
LCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9MRShtX251bVByZXZpb3VzVXBsb2Fkcywg
a01heFVwbG9hZHNQZXJVcGRhdGUpOwotICAgIC8vIEJlIGxlbmllbnQgb24gdGhlIGV4YWN0IG51
bWJlciBvZiBmbHVzaGVzIGhlcmUsIGFzIHRoZSBudW1iZXIgb2YgZmx1c2hlcwotICAgIC8vIHdp
bGwgZGVwZW5kIG9uIHdoZXRoZXIgc29tZSBwYXJ0aWFsIHVwbG9hZHMgd2VyZSBwZXJmb3JtZWQu
Ci0gICAgLy8gb25GbHVzaCgpLCBvblVwbG9hZCgpLCBhbmQgb25FbmRVcGxvYWQoKSB3aWxsIGRv
IGJhc2ljIGZsdXNoIGNoZWNrcyBmb3IgdXMgYW55d2F5LgotCi0gICAgLy8gVGhpcmQgdXBkYXRl
ICgzMCBwYXJ0aWFsIE9SIDIwIHBhcnRpYWwgaWYgMTAgcGFydGlhbCB1cGxvYWRlZCBpbiBzZWNv
bmQgdXBkYXRlKQotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
LCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBF
WFBFQ1RfRVEoMywgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgzLCBtX251bUVu
ZFVwbG9hZHMpOwotICAgIEVYUEVDVF9MRShtX251bVByZXZpb3VzVXBsb2Fkcywga01heFVwbG9h
ZHNQZXJVcGRhdGUpOwotICAgIC8vIEJlIGxlbmllbnQgb24gdGhlIGV4YWN0IG51bWJlciBvZiBm
bHVzaGVzIGhlcmUgYXMgd2VsbC4KLQotICAgIC8vIEZpbmFsIHNhbml0eSBjaGVja3MKLSAgICBF
WFBFQ1RfRVEoa0Z1bGxVcGxvYWRzICsga1BhcnRpYWxVcGxvYWRzLCBtX251bVRvdGFsVXBsb2Fk
cyk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKaW5kZXggZGUxZWI2NmM2MWI2NDQx
Y2Q1NjI1MDAwMGM4ZDRhNjIwYjhjOGZjNy4uMGI3Y2IwZmQ5YTgxZmEyMWVmMWYzMTA5Mzc4NDY3
OTVkOTZlZGE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKQEAgLTE1Myw3ICsxNTMsNyBAQCBwcm90ZWN0ZWQ6CiAK
IGNsYXNzIEZha2VUZXh0dXJlQ29waWVyIDogcHVibGljIFdlYkNvcmU6OlRleHR1cmVDb3BpZXIg
ewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZSh1bnNpZ25lZCwgdW5zaWdu
ZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29weVRl
eHR1cmUoUGFyYW1ldGVycykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgeyB9CiB9Owog
CkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRU
ZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIFdl
YkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7
IHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJl
Y3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBQYXJhbWV0ZXJzIHVwbG9hZCkgeyB1cGxvYWQu
bV90ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHVwbG9hZC5tX3NvdXJjZVJl
Y3QsIHVwbG9hZC5tX2Rlc3RSZWN0KTsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAppbmRleCA3NzZlMjNiZmQyNjMw
NjAxYTE4ZWNiMDVhMWI1NWRhODhhZmQxMGU0Li40NTVlZTY5MTk4MjVjOWM1OWQ4OGJiZjdkNmU2
NDI4YWI3ZjBiNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rl
eHR1cmVDb3BpZXJUZXN0LmNwcApAQCAtNzYsNSArNzYsNSBAQCBURVNUKFRleHR1cmVDb3BpZXJU
ZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgaW50IGRlc3RUZXh0dXJlSWQgPSAyOwogICAg
IEludFNpemUgc2l6ZSgyNTYsIDEyOCk7CiAgICAgT3duUHRyPEFjY2VsZXJhdGVkVGV4dHVyZUNv
cGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y3JlYXRlKG1vY2tDb250ZXh0
LmdldCgpLCBmYWxzZSkpOwotICAgIGNvcGllci0+Y29weVRleHR1cmUoc291cmNlVGV4dHVyZUlk
LCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKKyAgICBjb3BpZXItPmNvcHlUZXh0dXJlKFRleHR1cmVD
b3BpZXI6OlBhcmFtZXRlcnMoc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVy
Q2hyb21pdW1UZXN0LmNwcAppbmRleCBlMzlmZTdlNTY5YzdlZDJhZGRkNWFjYzEyYTQzOGEyMTE4
MDUzOTMwLi5kN2ZkNzdlMmJmYjVkMGU4NDVjNTJjZDk2NWZiZmU3ZTU1NTAwYzRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYy9DQ092ZXJkcmF3TWV0cmlj
cy5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIKICNpbmNsdWRlICJjYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQKKyNpbmNs
dWRlICJjYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIApAQCAt
ODksNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVzKGludCBjb3Vu
dCA9IDUwMCkKICAgICB7Ci0gICAgICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3Zp
ZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBjb3VudCk7CisgICAgICAgIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5n
ZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgJm1fdXBkYXRlciwgY291bnQpOwogICAgIH0K
IHB1YmxpYzoKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+IG1fY29udGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155564</attachid>
            <date>2012-07-31 09:19:11 -0700</date>
            <delta_ts>2012-08-06 09:28:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92596-20120731121854.patch</filename>
            <type>text/plain</type>
            <size>88704</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzOTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzIwODUwZjdiNWZhYWEx
MWRkNzhhNDkwNDQ2MmJmMDBlMWIzNzFkMi4uODkxMzQ3OWFiMDY2NjUwZmMxYjRkYmI0MTY2MjNj
NTBlYTE1YjQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA3LTMxICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBS
ZWZhY3RvciBDQ1RleHR1cmVVcGRhdGVyIGludG8gQ0NUZXh0dXJlVXBkYXRlciBhbmQgQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyNTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIENDVGV4dHVyZVVwZGF0ZXIgaW50ZXJmYWNlIGlzIHVzZWQgYnkgdGhl
IG1haW4gdGhyZWFkIHRvIHF1ZXVlCisgICAgICAgIHRleHR1cmUgdXBkYXRlcy4gVGhlIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXIgY29uc3RydWN0b3IgdGFrZXMgYQorICAgICAgICBDQ1RleHR1
cmVVcGRhdGVyIGFuZCBjb250YWlucyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gcGVyZm9ybSB0ZXh0
dXJlCisgICAgICAgIHVwbG9hZHMgYW5kIHRleHR1cmUgY29waWVzLiBUaGlzIGNsYXNzIGlzIG9u
bHkgdXNlZCBieSB0aGUgaW1wbCB0aHJlYWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnM6OlBhcmFtZXRlcnMpOgorICAgICAgICAoUGFyYW1l
dGVycyk6CisgICAgICAgIChUZXh0dXJlQ29waWVyKToKKyAgICAgICAgKEFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZVVwbG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRl
cnM6OlBhcmFtZXRlcnMpOgorICAgICAgICAoUGFyYW1ldGVycyk6CisgICAgICAgIChUZXh0dXJl
VXBsb2FkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJl
VXBsb2FkZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oOgorICAgICAgICAoVGhyb3R0bGVkVGV4
dHVyZVVwbG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVh
ZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjptYXhQYXJ0
aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBk
YXRlQ29udHJvbGxlcjo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp+Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjpoYXNNb3Jl
VXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1
cGRhdGVNb3JlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcjo6dXBkYXRlTW9yZVRleHR1cmVzU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVu
ZEZ1bGxVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5k
UGFydGlhbFVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjphcHBl
bmRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnRha2VGaXJzdEZ1
bGxVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dGFrZUZpcnN0
UGFydGlhbFVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp0YWtl
Rmlyc3RDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVV
cGRhdGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmZ1bGxVcGxvYWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OnBhcnRpYWxVcGxvYWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGV4dHVyZVVwZGF0ZXI6OmNvcHlTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhy
ZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6
QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlOjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUpOgorICAg
ICAgICAoQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkp
OgorCiAyMDEyLTA3LTI4ICBNaW4gUWluICA8cWlubWluQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBBZGQgYW4gb3ZlcmxheSBwbGF5IGJ1dHRvbiB0byBtZWRpYSBjb250cm9scyBvbiBhbmRyb2lk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDBiOGFhOWY0MGZiMWE0M2MzMmNhODdlODIy
YTMzNjkyNWM2MTliNjMuLjQ0OGFmNWIzOGFkNDQ4OGQ3MzI2NTY3MDc1Yjk5ZWI2MjZlZjBiYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDctMzEg
IERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21p
dW1dIFJlZmFjdG9yIENDVGV4dHVyZVVwZGF0ZXIgaW50byBDQ1RleHR1cmVVcGRhdGVyIGFuZCBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTI1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5jcHA6CisgICAgICAgICogdGVzdHMvQ0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlclRlc3QuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RleHR1cmVVcGRhdGVyVGVzdC5jcHAuCisgICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkZha2VUZXh0dXJlQ29waWVyOjpjb3B5
VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6RmFrZVRleHR1cmVVcGxvYWRlcjo6dXBs
b2FkVGV4dHVyZSk6CisgICAgICAgICogdGVzdHMvVGV4dHVyZUNvcGllclRlc3QuY3BwOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6
CisKIDIwMTItMDctMjggIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIFNpZ2guICBKdXN0IGRpc2FibGUgYWxsIHRoZSBBdXRvUmVzaXplIHRlc3RzIGFmdGVy
IHRoZSBmaXJzdCB0aHJlZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzZWM4NGY0YjUyNjhhOGMyYzQx
MDZiMGExNDZjNWY4MGY5Y2UxM2ZhLi5hZjdiMGFlYjdmZjAzMzEyY2M1ZjY3NzFiYWNhNzUzZWQ3
YWE5NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MzgzLDYgKzgzODMsOCBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZURyYXdRdWFkLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVy
SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZUxheWVySW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmlu
ZGV4IGM0ZjEzOGFiNzFjNmJiYTUwMGE1ZGIwNzQ4Y2FlMzQxYTMzMTk4YTQuLmJjNzExNWM3NzM3
Yzg0MjRkYzdmZWZlNTc1MDUwNzdjMzBmZjA3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNCdXN5KCkgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5VcGxvYWRzKCkgT1ZFUlJJREUgeyB9CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMo
KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVj
dCkgT1ZFUlJJREUgeyB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDUmVz
b3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgUGFyYW1ldGVycyB1cGxvYWQpIE9WRVJS
SURFIHsgdXBsb2FkLnRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgdXBsb2Fk
LnNvdXJjZVJlY3QsIHVwbG9hZC5kZXN0UmVjdCk7IH0KIAogcHJvdGVjdGVkOgogICAgIFVudGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uY3BwCmluZGV4IDA2YzYwNzlmZTVlYjJmNzRhNDM5OTc3MGUyYzY0YThkNWEyYmEwZWEu
LjQ2NTViNjM1NTUzOTBmYTY5Y2JmMWVlZDZkZTg1NGI5MTU4ODE3MTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBTY3Jv
bGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHBhaW50
ZXIsIExheWVyVGV4dHUKICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChyZWN0LCBzdGF0cyk7CiAK
ICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KCksIHJlY3Quc2l6ZSgpKTsKLSAgICB1cGRh
dGVyLmFwcGVuZEZ1bGxVcGRhdGUodGV4dHVyZSwgcmVjdCwgZGVzdFJlY3QpOworICAgIHVwZGF0
ZXIuYXBwZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnModGV4dHVyZSwg
cmVjdCwgZGVzdFJlY3QpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCmluZGV4IDBiNTk1
OTdhNWVlODA5MDA3YTI0ODQxYjVkNWY3ZTlhZjljOTQ0ZmEuLmZiYjdjZmZkNWI4OWFiMGJjYjZk
ODY4ZjY5NDk1NmYxY2EyNTU4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCkBAIC02NiwxMyAr
NjYsMTMgQEAgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjp+QWNjZWxlcmF0ZWRUZXh0dXJlQ29w
aWVyKCkKICAgICAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZl
cihtX2ZibykpOwogfQogCi12b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1
cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25z
dCBJbnRTaXplJiBzaXplKQordm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0
dXJlKFBhcmFtZXRlcnMgcGFyYW1ldGVycykKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIlRl
eHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlIik7CiAKICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9l
cyBub3QgcmVzdG9yZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZy
YW1lYnVmZmVyLCBidWZmZXIgb3IgYmxlbmQgZW5hYmxlLgogICAgIEdMQyhtX2NvbnRleHQsIG1f
Y29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwg
bV9mYm8pKTsKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNP
TE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZGVzdFRleHR1
cmVJZCwgMCkpOworICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0
dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6
Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBwYXJhbWV0
ZXJzLmRlc3RUZXh0dXJlLCAwKSk7CiAKICNpZiBPUyhBTkRST0lEKQogICAgIC8vIENsZWFyIGRl
c3RpbmF0aW9uIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb24gdGlsaW5nIEdQVXMuCkBAIC04MCw3
ICs4MCw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSh1bnNp
Z25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlCiAgICAgR0xDKG1fY29udGV4dCwgbV9j
b250ZXh0LT5jbGVhcihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCkpOwogI2Vu
ZGlmCiAKLSAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBzb3VyY2VUZXh0dXJlSWQpKTsKKyAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBwYXJhbWV0ZXJzLnNvdXJjZVRleHR1cmUpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNU
KSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklM
VEVSLCBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VU
ZXh0dXJlSWQsIHVuc2lnbmVkIGRlCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKICAgICBHTEMobV9jb250
ZXh0LCBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZF
UiwgMCkpOwogCi0gICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPnZpZXdwb3J0KDAsIDAsIHBhcmFtZXRlcnMuc2l6ZS53aWR0aCgpLCBwYXJhbWV0ZXJzLnNp
emUuaGVpZ2h0KCkpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3Jh
cGhpY3NDb250ZXh0M0Q6OkJMRU5EKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5k
cmF3QXJyYXlzKEdyYXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIDAsIDQpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVy
ZUNvcGllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4
dHVyZUNvcGllci5oCmluZGV4IGIzODVmNDVlNTQzYTc0MzZlNTU3ODAzMjJiYTFkMmIxNGUyNzdh
ZTUuLjczYTY2ZjZlZjBiZmI4NGRlMTljOGMwZTljMTI4ZjY4NGYwOGI3YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJl
Q29waWVyLmgKQEAgLTM4LDEwICszOCwyMCBAQCBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBUZXh0
dXJlQ29waWVyIHsKIHB1YmxpYzoKLSAgICAvLyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRz
IG9mIHxzb3VyY2VUZXh0dXJlSWR8IHRvIHxkZXN0VGV4dHVyZUlkfC4gQm90aCB0ZXh0dXJlIG9i
amVjdHMKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBhcmFtZXRlcnModW5zaWdu
ZWQgX3NvdXJjZVRleHR1cmUsIHVuc2lnbmVkIF9kZXN0VGV4dHVyZSwgSW50U2l6ZSBfc2l6ZSkK
KyAgICAgICAgICAgIDogc291cmNlVGV4dHVyZShfc291cmNlVGV4dHVyZSkKKyAgICAgICAgICAg
ICwgZGVzdFRleHR1cmUoX2Rlc3RUZXh0dXJlKQorICAgICAgICAgICAgLCBzaXplKF9zaXplKSB7
IH0KKworICAgICAgICB1bnNpZ25lZCBzb3VyY2VUZXh0dXJlOworICAgICAgICB1bnNpZ25lZCBk
ZXN0VGV4dHVyZTsKKyAgICAgICAgSW50U2l6ZSBzaXplOworICAgIH07CisgICAgLy8gQ29weSB0
aGUgYmFzZSBsZXZlbCBjb250ZW50cyBvZiB8c291cmNlVGV4dHVyZXwgdG8gfGRlc3RUZXh0dXJl
fC4gQm90aCB0ZXh0dXJlIG9iamVjdHMKICAgICAvLyBtdXN0IGJlIGNvbXBsZXRlIGFuZCBoYXZl
IGEgYmFzZSBsZXZlbCBvZiB8c2l6ZXwgZGltZW5zaW9ucy4gVGhlIGNvbG9yIGZvcm1hdHMgZG8g
bm90IG5lZWQKLSAgICAvLyB0byBtYXRjaCwgYnV0IHxkZXN0VGV4dHVyZUlkfCBtdXN0IGhhdmUg
YSByZW5kZXJhYmxlIGZvcm1hdC4KLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUodW5zaWdu
ZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXpl
JikgPSAwOworICAgIC8vIHRvIG1hdGNoLCBidXQgfGRlc3RUZXh0dXJlfCBtdXN0IGhhdmUgYSBy
ZW5kZXJhYmxlIGZvcm1hdC4KKyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoUGFyYW1ldGVy
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpID0gMDsKIAogcHJvdGVjdGVkOgpAQCAt
NTksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkFjY2VsZXJhdGVkVGV4
dHVyZUNvcGllcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKHVuc2lnbmVkIHNv
dXJjZVRleHR1cmVJZCwgdW5zaWduZWQgZGVzdFRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZShQYXJhbWV0ZXJzKTsKICAgICB2aXJ0dWFsIHZv
aWQgZmx1c2goKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZVVwbG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAppbmRleCA5Mjg3
MGNiNWE1YmZkOTBlYWZjMjg3M2Q3MGNjMGNmMTBkMWJlMTBiLi40ZTdhYzFhZWM3OThmMjI3YWUx
ZGZhMTBmNTQ4NmM2YTgwZGJkNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaApAQCAtMzEsMTIg
KzMxLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZVVwbG9hZGVyIHsK
IHB1YmxpYzoKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBhcmFtZXRlcnMoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogX3RleHR1cmUsIEludFJlY3QgX3NvdXJjZVJlY3Qs
IEludFJlY3QgX2Rlc3RSZWN0KQorICAgICAgICAgICAgOiB0ZXh0dXJlKF90ZXh0dXJlKQorICAg
ICAgICAgICAgLCBzb3VyY2VSZWN0KF9zb3VyY2VSZWN0KQorICAgICAgICAgICAgLCBkZXN0UmVj
dChfZGVzdFJlY3QpIHsgfQorCisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IHRleHR1cmU7CisgICAgICAgIEludFJlY3Qgc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBk
ZXN0UmVjdDsKKyAgICB9OworCiAgICAgdmlydHVhbCB+VGV4dHVyZVVwbG9hZGVyKCkgeyB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVw
bG9hZHMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSA9IDA7Ci0gICAgdmly
dHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIEND
UmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCBkZXN0UmVjdCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKENDUmVzb3Vy
Y2VQcm92aWRlciosIFBhcmFtZXRlcnMpID0gMDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJv
dHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCmluZGV4IDI4MWUwOGZmMDQ5ODc4MTI4YTg0MzI3MDll
ZmZlNjk2OTFiODBkMmYuLjkzZGExODljNWJjYTMzZGVlOWQwYjQ3NDFjOTcwMzM0NmNjNjc3NmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ro
cm90dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcApAQCAtMTIwLDkg
KzEyMCw5IEBAIHZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjplbmRVcGxvYWRzKCkKICAg
ICBtX3BlbmRpbmdRdWVyaWVzLmFwcGVuZChtX2F2YWlsYWJsZVF1ZXJpZXMudGFrZUZpcnN0KCkp
OwogfQogCi12b2lkIFRocm90dGxlZFRleHR1cmVVcGxvYWRlcjo6dXBsb2FkVGV4dHVyZShMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJl
c291cmNlUHJvdmlkZXIsIGNvbnN0IEludFJlY3Qgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCBk
ZXN0UmVjdCkKK3ZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgUGFyYW1ldGVycyB1cGxvYWQpCiB7
Ci0gICAgdGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVByb3ZpZGVyLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CisgICAgdXBsb2FkLnRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRl
ciwgdXBsb2FkLnNvdXJjZVJlY3QsIHVwbG9hZC5kZXN0UmVjdCk7CiB9CiAKIHZvaWQgVGhyb3R0
bGVkVGV4dHVyZVVwbG9hZGVyOjpwcm9jZXNzUXVlcmllcygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5oCmluZGV4IGY4YzQzZGMyZDQzMDM5ZjJmZDI3OGNmYTdjNzE3Y2Fh
MjkwYmE0YzkuLjM2MTQ2OGZjODJlZjUzZWVjYmE0ODQ0Y2VjMjFjNDA1NjI4YjYwNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxl
ZFRleHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oCkBAIC01MSw3ICs1MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRz
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosIENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3Qgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHVwbG9hZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgUGFyYW1ldGVycykgT1ZFUlJJ
REU7CiAKIHByaXZhdGU6CiAgICAgY2xhc3MgUXVlcnkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggNjg3NDBlZjUwNzM3MzYxYjBkMWM2M2EyODU4ZTZkNzVmNjJlZGMzNC4u
MmQwMjkzYTQ2NTljMTg0MGFiYWYwYjBkYWU2ODQzMjI3ZWI4ZmI0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCkBAIC01MDcsOSArNTA3LDkgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnVwZGF0ZVRpbGVzKGJvb2wgaWRsZSwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdo
dCwgaW4KICAgICAgICAgICAgICAgICBDUkFTSCgpOwogCiAgICAgICAgICAgICBpZiAodGlsZS0+
cGFydGlhbFVwZGF0ZSkKLSAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZFBhcnRpYWxVcGRh
dGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICAg
ICAgdXBkYXRlci5hcHBlbmRQYXJ0aWFsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVy
cyh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRGdWxsVXBkYXRlKHRpbGUtPnRleHR1
cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBw
ZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnModGlsZS0+dGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCAyNmIwYTcxODY2MDIxYjY5MjdkNzA3
MTYwNjNlYzg2MTIyZWUwM2U4Li4xNjQyNWZmYmE2N2FmNmY2NjQ0MDdjY2I5YWZlOGI3OTg5Y2Y2
YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzAsNyAr
MzAsNyBAQAogI2luY2x1ZGUgImNjL0NDRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0dyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUg
ImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVDb250
cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCkBAIC0yMDYsMTIgKzIwNiwxMyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmRvQ29tbWl0KENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiAKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgp
KTsKIAotICAgICAgICAvLyBDQ1RleHR1cmVVcGRhdGVyIGlzIG5vbi1ibG9ja2luZyBhbmQgd2ls
bCByZXR1cm4gd2l0aG91dCB1cGRhdGluZwotICAgICAgICAvLyBhbnkgdGV4dHVyZXMgaWYgdGhl
IHVwbG9hZGVyIGlzIGJ1c3kuIFRoaXMgc2hvdWxkbid0IGJlIGEgcHJvYmxlbQotICAgICAgICAv
LyBoZXJlIGFzIHRoZSB0aHJvdHRsZWQgdXBsb2FkZXIgaXNuJ3QgdXNlZCBpbiBzaW5nbGUgdGhy
ZWFkIG1vZGUuCi0gICAgICAgIC8vIEZvciBjb3JyZWN0bmVzcywgbG9vcCB1bnRpbCBubyBtb3Jl
IHVwZGF0ZXMgYXJlIHBlbmRpbmcuCisgICAgICAgIC8vIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXI6OnVwZGF0ZVRleHR1cmVzIGlzIG5vbi1ibG9ja2luZyBhbmQgd2lsbAorICAgICAgICAvLyBy
ZXR1cm4gd2l0aG91dCB1cGRhdGluZyBhbnkgdGV4dHVyZXMgaWYgdGhlIHVwbG9hZGVyIGlzIGJ1
c3kuIFRoaXMKKyAgICAgICAgLy8gc2hvdWxkbid0IGJlIGEgcHJvYmxlbSBoZXJlIGFzIHRoZSB0
aHJvdHRsZWQgdXBsb2FkZXIgaXNuJ3QgdXNlZCBpbgorICAgICAgICAvLyBzaW5nbGUgdGhyZWFk
IG1vZGUuIEZvciBjb3JyZWN0bmVzcywgbG9vcCB1bnRpbCBubyBtb3JlIHVwZGF0ZXMgYXJlCisg
ICAgICAgIC8vIHBlbmRpbmcuCiAgICAgICAgIHdoaWxlICh1cGRhdGVyLmhhc01vcmVVcGRhdGVz
KCkpCi0gICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNv
dXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4
dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1
cmVVcGxvYWRlcigpLCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSk7CisgICAgICAgICAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX2xheWVyVHJlZUhvc3RJ
bXBsLT5yZXNvdXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVy
ZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVy
KCktPnRleHR1cmVVcGxvYWRlcigpLCAmdXBkYXRlciwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVz
KCkpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFk
KG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiYjBmMzY4NTg2MGFhNTM4ODRh
MmNhOTQ5NWJlNmUzZjM2ZTA0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmNw
cApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCisjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgorI2luY2x1ZGUgIlRleHR1
cmVVcGxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorCituYW1lc3BhY2Ug
eworCisvLyBOdW1iZXIgb2YgdGV4dHVyZXMgdG8gdXBkYXRlIHdpdGggZWFjaCBjYWxsIHRvIHVw
ZGF0ZU1vcmVUZXh0dXJlcygpLgorc3RhdGljIGNvbnN0IHNpemVfdCB0ZXh0dXJlVXBkYXRlc1Bl
ckZyYW1lID0gNDg7CisKKy8vIEZsdXNoIGludGVydmFsIHdoZW4gcGVyZm9ybWluZyB0ZXh0dXJl
IHVwbG9hZHMuCitzdGF0aWMgY29uc3QgaW50IHRleHR1cmVVcGxvYWRGbHVzaFBlcmlvZCA9IDQ7
CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3Np
emVfdCBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMo
KQoreworICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOworfQorCit2b2lkIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIq
IHVwbG9hZGVyLCBDQ1RleHR1cmVVcGRhdGVyKiB1cGRhdGVyLCBzaXplX3QgY291bnQpCit7Cisg
ICAgaWYgKHVwZGF0ZXItPmZ1bGxVcGxvYWRTaXplKCkgfHwgdXBkYXRlci0+cGFydGlhbFVwbG9h
ZFNpemUoKSkgeworICAgICAgICBpZiAodXBsb2FkZXItPmlzQnVzeSgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHVwbG9hZGVyLT5iZWdpblVwbG9hZHMoKTsKKworICAgICAgICBz
aXplX3QgZnVsbFVwbG9hZENvdW50ID0gMDsKKyAgICAgICAgd2hpbGUgKHVwZGF0ZXItPmZ1bGxV
cGxvYWRTaXplKCkgJiYgZnVsbFVwbG9hZENvdW50IDwgY291bnQpIHsKKyAgICAgICAgICAgIHVw
bG9hZGVyLT51cGxvYWRUZXh0dXJlKHJlc291cmNlUHJvdmlkZXIsIHVwZGF0ZXItPnRha2VGaXJz
dEZ1bGxVcGxvYWQoKSk7CisgICAgICAgICAgICBmdWxsVXBsb2FkQ291bnQrKzsKKyAgICAgICAg
ICAgIGlmICghKGZ1bGxVcGxvYWRDb3VudCAlIHRleHR1cmVVcGxvYWRGbHVzaFBlcmlvZCkpCisg
ICAgICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0ZWQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFuZ2xp
bmcgdXBsb2FkcyB3aXRob3V0IGEgZmx1c2guCisgICAgICAgIGlmIChmdWxsVXBsb2FkQ291bnQg
JSB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2QpCisgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVy
LT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpOworCisgICAgICAgIGJvb2wgbW9yZVVwbG9hZHMg
PSB1cGRhdGVyLT5mdWxsVXBsb2FkU2l6ZSgpOworCisgICAgICAgIEFTU0VSVCh1cGRhdGVyLT5w
YXJ0aWFsVXBsb2FkU2l6ZSgpIDw9IGNvdW50KTsKKyAgICAgICAgLy8gV2UgbmVlZCBhbm90aGVy
IHVwZGF0ZSBiYXRjaCBpZiB0aGUgbnVtYmVyIG9mIHVwZGF0ZXMgcmVtYWluaW5nCisgICAgICAg
IC8vIGluIHxjb3VudHwgaXMgZ3JlYXRlciB0aGFuIHRoZSByZW1haW5pbmcgcGFydGlhbCBlbnRy
aWVzLgorICAgICAgICBpZiAoKGNvdW50IC0gZnVsbFVwbG9hZENvdW50KSA8IHVwZGF0ZXItPnBh
cnRpYWxVcGxvYWRTaXplKCkpCisgICAgICAgICAgICBtb3JlVXBsb2FkcyA9IHRydWU7CisKKyAg
ICAgICAgaWYgKG1vcmVVcGxvYWRzKSB7CisgICAgICAgICAgICB1cGxvYWRlci0+ZW5kVXBsb2Fk
cygpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IHBh
cnRpYWxVcGxvYWRDb3VudCA9IDA7CisgICAgICAgIHdoaWxlICh1cGRhdGVyLT5wYXJ0aWFsVXBs
b2FkU2l6ZSgpKSB7CisgICAgICAgICAgICB1cGxvYWRlci0+dXBsb2FkVGV4dHVyZShyZXNvdXJj
ZVByb3ZpZGVyLCB1cGRhdGVyLT50YWtlRmlyc3RQYXJ0aWFsVXBsb2FkKCkpOworICAgICAgICAg
ICAgcGFydGlhbFVwbG9hZENvdW50Kys7CisgICAgICAgICAgICBpZiAoIShwYXJ0aWFsVXBsb2Fk
Q291bnQgJSB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2QpKQorICAgICAgICAgICAgICAgIHJlc291
cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7CisgICAgICAgIH0KKworICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBhcnRpYWwgdXBsb2FkcyB3
aXRob3V0IGEgZmx1c2guCisgICAgICAgIGlmIChwYXJ0aWFsVXBsb2FkQ291bnQgJSB0ZXh0dXJl
VXBsb2FkRmx1c2hQZXJpb2QpCisgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5zaGFsbG93
Rmx1c2hJZlN1cHBvcnRlZCgpOworCisgICAgICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7Cisg
ICAgfQorCisgICAgc2l6ZV90IGNvcHlDb3VudCA9IDA7CisgICAgd2hpbGUgKHVwZGF0ZXItPmNv
cHlTaXplKCkpIHsKKyAgICAgICAgY29waWVyLT5jb3B5VGV4dHVyZSh1cGRhdGVyLT50YWtlRmly
c3RDb3B5KCkpOworICAgICAgICBjb3B5Q291bnQrKzsKKyAgICB9CisKKyAgICAvLyBJZiB3ZSd2
ZSBwZXJmb3JtZWQgYW55IHRleHR1cmUgY29waWVzLCB3ZSBuZWVkIHRvIGluc2VydCBhIGZsdXNo
IGhlcmUgaW50byB0aGUgY29tcG9zaXRvciBjb250ZXh0CisgICAgLy8gYmVmb3JlIGxldHRpbmcg
dGhlIG1haW4gdGhyZWFkIHByb2NlZWQgYXMgaXQgbWF5IG1ha2UgZHJhdyBjYWxscyB0byB0aGUg
c291cmNlIHRleHR1cmUgb2Ygb25lIG9mCisgICAgLy8gb3VyIGNvcHkgb3BlcmF0aW9ucy4KKyAg
ICBpZiAoY29weUNvdW50KQorICAgICAgICBjb3BpZXItPmZsdXNoKCk7Cit9CisKK0NDVGV4dHVy
ZVVwZGF0ZUNvbnRyb2xsZXI6OkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIoUGFzc093blB0cjxD
Q1RleHR1cmVVcGRhdGVyPiB1cGRhdGVyLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRlcikK
KyAgICA6IG1fdXBkYXRlcih1cGRhdGVyKQorICAgICwgbV9yZXNvdXJjZVByb3ZpZGVyKHJlc291
cmNlUHJvdmlkZXIpCisgICAgLCBtX2NvcGllcihjb3BpZXIpCisgICAgLCBtX3VwbG9hZGVyKHVw
bG9hZGVyKQoreworfQorCitDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp+Q0NUZXh0dXJlVXBk
YXRlQ29udHJvbGxlcigpCit7Cit9CisKK2Jvb2wgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6
aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX3VwZGF0ZXItPmhhc01vcmVV
cGRhdGVzKCk7Cit9CisKK3ZvaWQgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlTW9y
ZVRleHR1cmVzKCkKK3sKKyAgICBpZiAoIW1fdXBkYXRlci0+aGFzTW9yZVVwZGF0ZXMoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLCBt
X2NvcGllciwgbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCB1cGRhdGVNb3JlVGV4dHVyZXNT
aXplKCkpOworfQorCitzaXplX3QgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlTW9y
ZVRleHR1cmVzU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRleHR1cmVVcGRhdGVzUGVyRnJh
bWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi44MWExYTdlNThhNjRhOWE2OTVlZjEzZDQ1NTY3ZDY2ZDY3MGQ5NzlkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJfaAorI2RlZmluZSBDQ1RleHR1cmVV
cGRhdGVDb250cm9sbGVyX2gKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZUNvcGllcjsKK2NsYXNzIFRleHR1cmVV
cGxvYWRlcjsKKworY2xhc3MgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcik7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcj4gY3JlYXRlKFBhc3NP
d25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gdXBkYXRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBs
b2FkZXIpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXIodXBkYXRlciwgcmVzb3VyY2VQcm92aWRlciwgY29waWVyLCB1cGxvYWRlcikp
OworICAgIH0KKyAgICBzdGF0aWMgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpOwor
ICAgIHN0YXRpYyB2b2lkIHVwZGF0ZVRleHR1cmVzKENDUmVzb3VyY2VQcm92aWRlciosIFRleHR1
cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqLCBDQ1RleHR1cmVVcGRhdGVyKiwgc2l6ZV90IGNv
dW50KTsKKworICAgIHZpcnR1YWwgfkNDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIoKTsKKworICAg
IGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZU1vcmVUZXh0dXJl
cygpOworCisgICAgLy8gVmlydHVhbCBmb3IgdGVzdGluZy4KKyAgICB2aXJ0dWFsIHNpemVfdCB1
cGRhdGVNb3JlVGV4dHVyZXNTaXplKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBDQ1RleHR1
cmVVcGRhdGVDb250cm9sbGVyKFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4sIENDUmVzb3Vy
Y2VQcm92aWRlciosIFRleHR1cmVDb3BpZXIqLCBUZXh0dXJlVXBsb2FkZXIqKTsKKworICAgIE93
blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX3VwZGF0ZXI7CisgICAgQ0NSZXNvdXJjZVByb3ZpZGVy
KiBtX3Jlc291cmNlUHJvdmlkZXI7CisgICAgVGV4dHVyZUNvcGllciogbV9jb3BpZXI7CisgICAg
VGV4dHVyZVVwbG9hZGVyKiBtX3VwbG9hZGVyOworfTsKKworfQorCisjZW5kaWYgLy8gQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmlu
ZGV4IGM2ZjQ5MjlhODYxMDY4ZjFlNmY5MDUwZTRjMTA0MTJlN2UzNTA1YmEuLmM1MjAzZDdmY2Uy
NmM2OTcwMjk4M2JjZmQ1MDcwYTM1ZTU2NGJmMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC0yOSwyMCArMjksOSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBk
YXRlci5oIgogCi0jaW5jbHVkZSAiQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKLSNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKLSNp
bmNsdWRlICJUZXh0dXJlQ29waWVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZVVwbG9hZGVyLmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNv
bnN0IGludCBrVXBsb2FkRmx1c2hQZXJpb2QgPSA0OwotCiBDQ1RleHR1cmVVcGRhdGVyOjpDQ1Rl
eHR1cmVVcGRhdGVyKCkKLSAgICA6IG1fZW50cnlJbmRleCgwKQogewogfQogCkBAIC01MCwxMTYg
KzM5LDM5IEBAIENDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAot
dm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmRVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QsIFZlY3RvcjxVcGRhdGVFbnRyeT4mIGVudHJpZXMpCit2b2lkIENDVGV4dHVy
ZVVwZGF0ZXI6OmFwcGVuZEZ1bGxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHVw
bG9hZCkKIHsKLSAgICBBU1NFUlQodGV4dHVyZSk7Ci0KLSAgICBVcGRhdGVFbnRyeSBlbnRyeTsK
LSAgICBlbnRyeS50ZXh0dXJlID0gdGV4dHVyZTsKLSAgICBlbnRyeS5zb3VyY2VSZWN0ID0gc291
cmNlUmVjdDsKLSAgICBlbnRyeS5kZXN0UmVjdCA9IGRlc3RSZWN0OwotICAgIGVudHJpZXMuYXBw
ZW5kKGVudHJ5KTsKKyAgICBtX2Z1bGxFbnRyaWVzLmFwcGVuZCh1cGxvYWQpOwogfQogCi12b2lk
IENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZEZ1bGxVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit2b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBhcnRpYWxVcGxvYWQo
VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHVwbG9hZCkKIHsKLSAgICBhcHBlbmRVcGRhdGUo
dGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QsIG1fZnVsbEVudHJpZXMpOworICAgIG1fcGFy
dGlhbEVudHJpZXMuYXBwZW5kKHVwbG9hZCk7CiB9CiAKLXZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6
YXBwZW5kUGFydGlhbFVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3Zv
aWQgQ0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kQ29weShUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJz
IGNvcHkpCiB7Ci0gICAgYXBwZW5kVXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0
LCBtX3BhcnRpYWxFbnRyaWVzKTsKKyAgICBtX2NvcHlFbnRyaWVzLmFwcGVuZChjb3B5KTsKIH0K
IAotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1
cmUsIHVuc2lnbmVkIGRlc3RUZXh0dXJlLCBjb25zdCBJbnRTaXplJiBzaXplKQorVGV4dHVyZVVw
bG9hZGVyOjpQYXJhbWV0ZXJzIENDVGV4dHVyZVVwZGF0ZXI6OnRha2VGaXJzdEZ1bGxVcGxvYWQo
KQogewotICAgIENvcHlFbnRyeSBjb3B5OwotICAgIGNvcHkuc291cmNlVGV4dHVyZSA9IHNvdXJj
ZVRleHR1cmU7Ci0gICAgY29weS5kZXN0VGV4dHVyZSA9IGRlc3RUZXh0dXJlOwotICAgIGNvcHku
c2l6ZSA9IHNpemU7Ci0gICAgbV9jb3B5RW50cmllcy5hcHBlbmQoY29weSk7CisgICAgcmV0dXJu
IG1fZnVsbEVudHJpZXMudGFrZUZpcnN0KCk7CiB9CiAKLWJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6
aGFzTW9yZVVwZGF0ZXMoKSBjb25zdAorVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIENDVGV4
dHVyZVVwZGF0ZXI6OnRha2VGaXJzdFBhcnRpYWxVcGxvYWQoKQogewotICAgIHJldHVybiBtX2Z1
bGxFbnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSB8fCBtX2NvcHlFbnRy
aWVzLnNpemUoKTsKKyAgICByZXR1cm4gbV9wYXJ0aWFsRW50cmllcy50YWtlRmlyc3QoKTsKIH0K
IAotdm9pZCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNv
dXJjZVByb3ZpZGVyLCBUZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBs
b2FkZXIsIHNpemVfdCBjb3VudCkKK1RleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgQ0NUZXh0dXJl
VXBkYXRlcjo6dGFrZUZpcnN0Q29weSgpCiB7Ci0gICAgc2l6ZV90IGluZGV4OwotCi0gICAgaWYg
KG1fZnVsbEVudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpKSB7Ci0gICAg
ICAgIGlmICh1cGxvYWRlci0+aXNCdXN5KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdXBsb2FkZXItPmJlZ2luVXBsb2FkcygpOwotCi0gICAgICAgIGludCBmdWxsVXBsb2FkQ291
bnQgPSAwOwotICAgICAgICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291
bnQsIG1fZnVsbEVudHJpZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChpbmRleCA9IG1fZW50cnlJ
bmRleDsgaW5kZXggPCBtYXhJbmRleDsgKytpbmRleCkgewotICAgICAgICAgICAgVXBkYXRlRW50
cnkmIGVudHJ5ID0gbV9mdWxsRW50cmllc1tpbmRleF07Ci0gICAgICAgICAgICB1cGxvYWRlci0+
dXBsb2FkVGV4dHVyZShlbnRyeS50ZXh0dXJlLCByZXNvdXJjZVByb3ZpZGVyLCBlbnRyeS5zb3Vy
Y2VSZWN0LCBlbnRyeS5kZXN0UmVjdCk7Ci0gICAgICAgICAgICBmdWxsVXBsb2FkQ291bnQrKzsK
LSAgICAgICAgICAgIGlmICghKGZ1bGxVcGxvYWRDb3VudCAlIGtVcGxvYWRGbHVzaFBlcmlvZCkp
Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZTdXBwb3J0
ZWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gZGFu
Z2xpbmcgdXBsb2FkcyB3aXRob3V0IGEgZmx1c2guCi0gICAgICAgIGlmIChmdWxsVXBsb2FkQ291
bnQgJSBrVXBsb2FkRmx1c2hQZXJpb2QpCi0gICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5z
aGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpOwotCi0gICAgICAgIGJvb2wgbW9yZVVwbG9hZHMgPSBt
YXhJbmRleCA8IG1fZnVsbEVudHJpZXMuc2l6ZSgpOwotCi0gICAgICAgIEFTU0VSVChtX3BhcnRp
YWxFbnRyaWVzLnNpemUoKSA8PSBjb3VudCk7Ci0gICAgICAgIC8vIFdlIG5lZWQgYW5vdGhlciB1
cGRhdGUgYmF0Y2ggaWYgdGhlIG51bWJlciBvZiB1cGRhdGVzIHJlbWFpbmluZwotICAgICAgICAv
LyBpbiB8Y291bnR8IGlzIGdyZWF0ZXIgdGhhbiB0aGUgcmVtYWluaW5nIHBhcnRpYWwgZW50cmll
cy4KLSAgICAgICAgaWYgKChjb3VudCAtIChpbmRleCAtIG1fZW50cnlJbmRleCkpIDwgbV9wYXJ0
aWFsRW50cmllcy5zaXplKCkpCi0gICAgICAgICAgICBtb3JlVXBsb2FkcyA9IHRydWU7Ci0KLSAg
ICAgICAgaWYgKG1vcmVVcGxvYWRzKSB7Ci0gICAgICAgICAgICBtX2VudHJ5SW5kZXggPSBpbmRl
eDsKLSAgICAgICAgICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBtX3BhcnRp
YWxFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICAgICAgVXBkYXRlRW50cnkmIGVu
dHJ5ID0gbV9wYXJ0aWFsRW50cmllc1tpbmRleF07Ci0gICAgICAgICAgICB1cGxvYWRlci0+dXBs
b2FkVGV4dHVyZShlbnRyeS50ZXh0dXJlLCByZXNvdXJjZVByb3ZpZGVyLCBlbnRyeS5zb3VyY2VS
ZWN0LCBlbnRyeS5kZXN0UmVjdCk7Ci0gICAgICAgICAgICBpZiAoISgoaW5kZXgrMSkgJSBrVXBs
b2FkRmx1c2hQZXJpb2QpKQotICAgICAgICAgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnNoYWxs
b3dGbHVzaElmU3VwcG9ydGVkKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlcmUgYXJlIG5vIGRhbmdsaW5nIHBhcnRpYWwgdXBsb2FkcyB3aXRob3V0IGEgZmx1c2guCi0g
ICAgICAgIC8vIE5vdGU6IFdlIGRvbid0IG5lZWQgdG8gdXNlIChpbmRleCsxKSBpbiB0aGlzIGNh
c2UgYmVjYXVzZSBpbmRleCB3YXMKLSAgICAgICAgLy8gaW5jcmVtZW50ZWQgYXQgdGhlIGVuZCBv
ZiB0aGUgZm9yIGxvb3AuCi0gICAgICAgIGlmIChpbmRleCAlIGtVcGxvYWRGbHVzaFBlcmlvZCkK
LSAgICAgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7
Ci0KLSAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKLSAgICB9Ci0KLSAgICBmb3IgKGlu
ZGV4ID0gMDsgaW5kZXggPCBtX2NvcHlFbnRyaWVzLnNpemUoKTsgKytpbmRleCkgewotICAgICAg
ICBDb3B5RW50cnkmIGNvcHlFbnRyeSA9IG1fY29weUVudHJpZXNbaW5kZXhdOwotICAgICAgICBj
b3BpZXItPmNvcHlUZXh0dXJlKGNvcHlFbnRyeS5zb3VyY2VUZXh0dXJlLCBjb3B5RW50cnkuZGVz
dFRleHR1cmUsIGNvcHlFbnRyeS5zaXplKTsKLSAgICB9Ci0KLSAgICAvLyBJZiB3ZSd2ZSBwZXJm
b3JtZWQgYW55IHRleHR1cmUgY29waWVzLCB3ZSBuZWVkIHRvIGluc2VydCBhIGZsdXNoIGhlcmUg
aW50byB0aGUgY29tcG9zaXRvciBjb250ZXh0Ci0gICAgLy8gYmVmb3JlIGxldHRpbmcgdGhlIG1h
aW4gdGhyZWFkIHByb2NlZWQgYXMgaXQgbWF5IG1ha2UgZHJhdyBjYWxscyB0byB0aGUgc291cmNl
IHRleHR1cmUgb2Ygb25lIG9mCi0gICAgLy8gb3VyIGNvcHkgb3BlcmF0aW9ucy4KLSAgICBpZiAo
bV9jb3B5RW50cmllcy5zaXplKCkpCi0gICAgICAgIGNvcGllci0+Zmx1c2goKTsKLQotICAgIC8v
IElmIG5vIGVudHJpZXMgbGVmdCB0byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7
CisgICAgcmV0dXJuIG1fY29weUVudHJpZXMudGFrZUZpcnN0KCk7CiB9CiAKLXZvaWQgQ0NUZXh0
dXJlVXBkYXRlcjo6Y2xlYXIoKQorYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRl
cygpIGNvbnN0CiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKLSAgICBtX2Z1bGxFbnRyaWVzLmNs
ZWFyKCk7Ci0gICAgbV9wYXJ0aWFsRW50cmllcy5jbGVhcigpOwotICAgIG1fY29weUVudHJpZXMu
Y2xlYXIoKTsKKyAgICByZXR1cm4gbV9mdWxsRW50cmllcy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50
cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXplKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5NzJhMWMwZWM3ZTQ4MTIxMzgxZDRlNGZlNmM5OTA3MGE5
NGI4MjU2Li5hOGFkNGQyYjYwMzk3MDE4ODZhZTllM2NmOGRkNjY0MDA0MDNmNjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0yNiw1MSArMjYsMzUgQEAKICNpZm5kZWYgQ0NU
ZXh0dXJlVXBkYXRlcl9oCiAjZGVmaW5lIENDVGV4dHVyZVVwZGF0ZXJfaAogCi0jaW5jbHVkZSAi
SW50UmVjdC5oIgotI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSAiVGV4dHVyZUNvcGllci5oIgorI2luY2x1ZGUgIlRleHR1
cmVVcGxvYWRlci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIENDUmVzb3VyY2VQcm92aWRlcjsKLWNsYXNzIFRleHR1cmVDb3BpZXI7Ci1j
bGFzcyBUZXh0dXJlVXBsb2FkZXI7Ci0KIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXIgewogcHVibGlj
OgogICAgIENDVGV4dHVyZVVwZGF0ZXIoKTsKLSAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOworICAg
IHZpcnR1YWwgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAotICAgIHZvaWQgYXBwZW5kRnVsbFVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwotICAgIHZvaWQgYXBwZW5kUGFydGlhbFVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwotICAgIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25l
ZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0VGV4dHVyZSwgY29uc3QgSW50U2l6ZSYpOwor
ICAgIHZvaWQgYXBwZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMpOwor
ICAgIHZvaWQgYXBwZW5kUGFydGlhbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMp
OworICAgIHZvaWQgYXBwZW5kQ29weShUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzKTsKIAotICAg
IGJvb2wgaGFzTW9yZVVwZGF0ZXMoKSBjb25zdDsKKyAgICBUZXh0dXJlVXBsb2FkZXI6OlBhcmFt
ZXRlcnMgdGFrZUZpcnN0RnVsbFVwbG9hZCgpOworICAgIFRleHR1cmVVcGxvYWRlcjo6UGFyYW1l
dGVycyB0YWtlRmlyc3RQYXJ0aWFsVXBsb2FkKCk7CisgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1l
dGVycyB0YWtlRmlyc3RDb3B5KCk7CiAKLSAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4KLSAg
ICB2b2lkIHVwZGF0ZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVy
ZVVwbG9hZGVyKiwgc2l6ZV90IGNvdW50KTsKKyAgICBzaXplX3QgZnVsbFVwbG9hZFNpemUoKSBj
b25zdCB7IHJldHVybiBtX2Z1bGxFbnRyaWVzLnNpemUoKTsgfQorICAgIHNpemVfdCBwYXJ0aWFs
VXBsb2FkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFydGlhbEVudHJpZXMuc2l6ZSgpOyB9Cisg
ICAgc2l6ZV90IGNvcHlTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb3B5RW50cmllcy5zaXplKCk7
IH0KIAotICAgIHZvaWQgY2xlYXIoKTsKKyAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKLSAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZTsKLSAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0
OwotICAgICAgICBJbnRSZWN0IGRlc3RSZWN0OwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQ29weUVu
dHJ5IHsKLSAgICAgICAgSW50U2l6ZSBzaXplOwotICAgICAgICB1bnNpZ25lZCBzb3VyY2VUZXh0
dXJlOwotICAgICAgICB1bnNpZ25lZCBkZXN0VGV4dHVyZTsKLSAgICB9OwotCi0gICAgc3RhdGlj
IHZvaWQgYXBwZW5kVXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCwgVmVjdG9yPFVwZGF0
ZUVudHJ5PiYpOwotCi0gICAgc2l6ZV90IG1fZW50cnlJbmRleDsKLSAgICBWZWN0b3I8VXBkYXRl
RW50cnk+IG1fZnVsbEVudHJpZXM7Ci0gICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX3BhcnRpYWxF
bnRyaWVzOwotICAgIFZlY3RvcjxDb3B5RW50cnk+IG1fY29weUVudHJpZXM7CisgICAgRGVxdWU8
VGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzPiBtX2Z1bGxFbnRyaWVzOworICAgIERlcXVlPFRl
eHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycz4gbV9wYXJ0aWFsRW50cmllczsKKyAgICBEZXF1ZTxU
ZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzPiBtX2NvcHlFbnRyaWVzOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCA5YTQ1NWZmYjAyYWZlNzY5Nzg1OTVjYjFlZGJhNDUz
OTU0YTQ4M2M4Li40YmZmOGFjNzRhZjgwNTk0NGVjMjJiMGQzNzA1YmZkZDMwMmYxNTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgImNj
L0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTY29wZWRUaHJlYWRQcm94eS5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQ2LDEwICs0Niw2IEBAIHVzaW5nIG5hbWVzcGFj
ZSBXVEY7CiAKIG5hbWVzcGFjZSB7CiAKLS8vIE51bWJlciBvZiB0ZXh0dXJlcyB0byB1cGRhdGUg
d2l0aCBlYWNoIGNhbGwgdG8KLS8vIHNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMo
KS4KLXN0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9IDQ4OwotCiAv
LyBNZWFzdXJlZCBpbiBzZWNvbmRzLgogc3RhdGljIGNvbnN0IGRvdWJsZSBjb250ZXh0UmVjcmVh
dGlvblRpY2tSYXRlID0gMC4wMzsKIApAQCAtNDQ4LDggKzQ0NCw2IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQmVnaW5GcmFtZSgpCiAgICAgbV9wZW5kaW5nQmVnaW5GcmFt
ZVJlcXVlc3QgPSBhZG9wdFB0cihuZXcgQmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKCkpOwogICAg
IG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5tb25vdG9uaWNGcmFtZUJlZ2luVGltZSA9IG1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1
ZXN0LT5zY3JvbGxJbmZvID0gbV9sYXllclRyZWVIb3N0SW1wbC0+cHJvY2Vzc1Njcm9sbERlbHRh
cygpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIo
bmV3IENDVGV4dHVyZVVwZGF0ZXIpOwotICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT51
cGRhdGVyID0gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuZ2V0KCk7CiAgICAg
bV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCA9
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZXNXZXJlUHVyZ2VkU2luY2VMYXN0
Q29tbWl0KCk7CiAgICAgbV9wZW5kaW5nQmVnaW5GcmFtZVJlcXVlc3QtPm1lbW9yeUFsbG9jYXRp
b25MaW1pdEJ5dGVzID0gbV9sYXllclRyZWVIb3N0SW1wbC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0
Qnl0ZXMoKTsKIApAQCAtNTIwLDcgKzUxNCw4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZSgpCiAgICAgaWYgKHJlcXVlc3QtPmNvbnRlbnRzVGV4dHVyZXNXZXJlRGVsZXRlZCkKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT5ldmljdEFsbENvbnRlbnRUZXh0dXJlcygpOwogCi0gICAg
bV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKnJlcXVlc3QtPnVwZGF0ZXIsIHJlcXVlc3Qt
Pm1lbW9yeUFsbG9jYXRpb25MaW1pdEJ5dGVzKTsKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRl
cj4gdXBkYXRlciA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygqKHVwZGF0ZXIuZ2V0KCkpLCByZXF1ZXN0LT5tZW1vcnlB
bGxvY2F0aW9uTGltaXRCeXRlcyk7CiAKICAgICAvLyBPbmNlIHNpbmdsZSBidWZmZXJlZCBsYXll
cnMgYXJlIGNvbW1pdHRlZCwgdGhleSBjYW5ub3QgYmUgbW9kaWZpZWQgdW50aWwKICAgICAvLyB0
aGV5IGFyZSBkcmF3biBieSB0aGUgaW1wbCB0aHJlYWQuCkBAIC01NDIsNyArNTM3LDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICAgICAgRGVidWdTY29wZWRTZXRNYWlu
VGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKIAogICAgICAgICBDQ0NvbXBsZXRpb25F
dmVudCBjb21wbGV0aW9uOwotICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBs
ZXRlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwor
ICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkLCBB
bGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSwgdXBkYXRlci5yZWxlYXNlKCkpKTsK
ICAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CiAgICAgfQogCkBAIC01NTAsNyArNTQ1LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lKCkKICAgICBtX2xheWVyVHJlZUhvc3QtPmRp
ZEJlZ2luRnJhbWUoKTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxl
dGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbiwgUGFzc093blB0cjxDQ1RleHR1cmVVcGRhdGVyPiB1cGRhdGVyKQogewog
ICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkIik7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1w
bFRocmVhZCk7CkBAIC01NjMsNiArNTU4LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9s
bGVyT25JbXBsVGhyZWFkID0gQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6Y3JlYXRlKHVwZGF0
ZXIsIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlkZXIoKSwgbV9sYXllclRyZWVI
b3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVyKCksIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVyKCkpOwogICAgIG1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAogICAgIG1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUoKTsKQEAgLTU4MCw5ICs1NzYsOSBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBYm9ydGVkT25JbXBsVGhyZWFkKCkKIAog
Ym9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQorICAgIGlmICghbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQt
Pmhhc01vcmVVcGRhdGVzKCk7CisgICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250
cm9sbGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOwogfQogCiBib29sIENDVGhyZWFk
UHJveHk6OmNhbkRyYXcoKQpAQCAtNTk2LDE5ICs1OTIsMTkgQEAgYm9vbCBDQ1RocmVhZFByb3h5
OjpjYW5EcmF3KCkKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzIik7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnJlc291cmNlUHJvdmlk
ZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlQ29waWVy
KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZVVwbG9hZGVy
KCksIHRleHR1cmVVcGRhdGVzUGVyRnJhbWUpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZCk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQtPnVwZGF0ZU1vcmVUZXh0dXJlcygpOwogfQogCiB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiKTsKICAgICBB
U1NFUlQoaXNJbXBsVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVV
cGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1
cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBB
U1NFUlQobV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZC5jbGVhcigpOwogCiAgICAgbV9sYXllclRy
ZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIApAQCAtODYxLDcgKzg1Nyw3IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2V0RnVsbFJvb3RMYXllckRhbWFnZU9uSW1wbFRocmVhZCgpCiAKIHNpemVf
dCBDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKSBjb25zdAogewotICAg
IHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOworICAgIHJldHVybiBDQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyOjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKTsKIH0KIAogdm9pZCBDQ1Ro
cmVhZFByb3h5OjpyZWNyZWF0ZUNvbnRleHRPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24sIENDR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0UHRyLCBib29sKiByZWNyZWF0
ZVN1Y2NlZWRlZCwgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyogY2FwYWJpbGl0aWVzKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDg2MGEyMDE3Mzg2NjRiZTc5NGViNzg5ODRjZGVmYTFj
Yjk2ZjhlNDUuLjRlNWY0ZWQ1YjRjN2U2NWY5MGIzNTk2Y2M4NWVjOWVmOGZkZjQ3OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgQ0NJbnB1dEhhbmRs
ZXI7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7CiBjbGFzcyBDQ1NjaGVkdWxlcjsKIGNsYXNzIEND
U2NvcGVkVGhyZWFkUHJveHk7CitjbGFzcyBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOwogY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIENDVGhyZWFkOwogY2xhc3MgQ0NUaHJlYWRQcm94
eUNvbnRleHRSZWNyZWF0aW9uVGltZXI7CkBAIC05OSwxMyArMTAwLDExIEBAIHByaXZhdGU6CiAg
ICAgc3RydWN0IEJlZ2luRnJhbWVBbmRDb21taXRTdGF0ZSB7CiAgICAgICAgIEJlZ2luRnJhbWVB
bmRDb21taXRTdGF0ZSgpCiAgICAgICAgICAgICA6IG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lKDAp
Ci0gICAgICAgICAgICAsIHVwZGF0ZXIoMCkKICAgICAgICAgewogICAgICAgICB9CiAKICAgICAg
ICAgZG91YmxlIG1vbm90b25pY0ZyYW1lQmVnaW5UaW1lOwogICAgICAgICBPd25QdHI8Q0NTY3Jv
bGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbzsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciogdXBk
YXRlcjsKICAgICAgICAgYm9vbCBjb250ZW50c1RleHR1cmVzV2VyZURlbGV0ZWQ7CiAgICAgICAg
IHNpemVfdCBtZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlczsKICAgICB9OwpAQCAtMTI3LDcgKzEy
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgcmVjdDsKICAgICB9OwogICAgIHZvaWQg
Zm9yY2VCZWdpbkZyYW1lT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Ci0gICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAg
ICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCos
IFBhc3NPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4pOwogICAgIHZvaWQgYmVnaW5GcmFtZUFib3J0
ZWRPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChS
ZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lkIHJlcXVlc3RTdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bk9uSW1wbFRocmVhZChJbnRTaXplIHRhcmdldFBvc2l0aW9uLCBib29sIHVzZUFuY2hvciwgZmxv
YXQgc2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYyk7CkBAIC0xNDUsNiArMTQ0LDcgQEAgcHJpdmF0
ZToKICAgICBDQ1NjaGVkdWxlZEFjdGlvbkRyYXdBbmRTd2FwUmVzdWx0IHNjaGVkdWxlZEFjdGlv
bkRyYXdBbmRTd2FwSW50ZXJuYWwoYm9vbCBmb3JjZWREcmF3KTsKICAgICB2b2lkIGZvcmNlU2Vy
aWFsaXplT25Td2FwQnVmZmVyc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAg
IHZvaWQgc2V0TmVlZHNGb3JjZWRDb21taXRPbkltcGxUaHJlYWQoKTsKKyAgICB2b2lkIHRleHR1
cmVVcGRhdGVPbkltcGxUaHJlYWQoKTsKIAogICAgIC8vIEFjY2Vzc2VkIG9uIG1haW4gdGhyZWFk
IG9ubHkuCiAgICAgYm9vbCBtX2FuaW1hdGVSZXF1ZXN0ZWQ7CkBAIC0xODMsNyArMTgzLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBs
YXllcnMgdG8gYmUgZHJhd24uCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fdGV4dHVyZUFjcXVp
c2l0aW9uQ29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOwogCi0gICAgT3duUHRyPENDVGV4dHVy
ZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOworICAgIE93blB0
cjxDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJv
bGxlck9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxk
IHBvc3QgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29s
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYjUwNzE4OWRiODMzMDI1YzJmMDM0ODRkMzZiNDQ1MmZh
OGVkYzI3NS4uNWMyNzJkNGJhNDUwMmE3NDE3MGEyNDRiZmU4Y2UyYWE3ZDdiMWJmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgICAgICAn
dGVzdHMvQ0NTY29wZWRUZXh0dXJlVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDU29s
aWRDb2xvckxheWVySW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Rlc3RDb21t
b24uaCcsCi0gICAgICAgICAgICAndGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwJywKKyAg
ICAgICAgICAgICd0ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRMYXllckltcGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAn
dGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1vbi5oJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1Rp
bGVkTGF5ZXJUZXN0Q29tbW9uLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKaW5kZXggZDljZWEzYmIxNmI0ZDhi
NTdlMjVkOTRiMWQzZmI0NGNjZTE0OWFmMy4uZmIyZDFjZThiNTE1ZWQ0N2FmYWUwODFmMzRjYjQ5
Y2U1OTZhYTQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25l
ZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKICAgICB7Ci0gICAg
ICAgIG1fdXBkYXRlci5hcHBlbmRDb3B5KHNvdXJjZVRleHR1cmUsIGRlc3RpbmF0aW9uVGV4dHVy
ZSwgc2l6ZSk7CisgICAgICAgIG1fdXBkYXRlci5hcHBlbmRDb3B5KFRleHR1cmVDb3BpZXI6OlBh
cmFtZXRlcnMoc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBzaXplKSk7CiAgICAg
fQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZGJi
NWI5NmJhMGFmNzhjODE4MWNiY2Y5OTM1OWFhZTFkMGY4OTIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVz
dC5jcHAKQEAgLTAsMCArMSw1NDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCIKKworI2luY2x1
ZGUgIkNDU2NoZWR1bGVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RD
b21tb24uaCIKKyNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgi
CisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCisKKyNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdFRlc3RzOwordXNpbmcgdGVzdGluZzo6VGVzdDsKKworCituYW1lc3BhY2UgeworCitjb25z
dCBpbnQga0ZsdXNoUGVyaW9kRnVsbCA9IDQ7Citjb25zdCBpbnQga0ZsdXNoUGVyaW9kUGFydGlh
bCA9IGtGbHVzaFBlcmlvZEZ1bGw7CisKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJU
ZXN0OworCitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QgOiBwdWJsaWMg
RmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1YmxpYzoKKyAgICBXZWJHcmFwaGljc0NvbnRl
eHQzREZvclVwbG9hZFRlc3QoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QgKnRlc3QpCisg
ICAgICAgIDogbV90ZXN0KHRlc3QpCisgICAgICAgICwgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoKHRy
dWUpCisgICAgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2godm9pZCk7CisgICAgdmlydHVh
bCB2b2lkIHNoYWxsb3dGbHVzaENIUk9NSVVNKHZvaWQpOworICAgIHZpcnR1YWwgR3JHTEludGVy
ZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCkgeyByZXR1cm4gMDsgfQorCisgICAgdmlydHVh
bCBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdHQzNEZW51bSBuYW1lKQorICAgIHsKKyAgICAgICAgaWYg
KG1fc3VwcG9ydFNoYWxsb3dGbHVzaCkKKyAgICAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdM
X0NIUk9NSVVNX3NoYWxsb3dfZmx1c2giKTsKKyAgICAgICAgcmV0dXJuIFdlYlN0cmluZygiIik7
CisgICAgfQorCitwcml2YXRlOgorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0KiBt
X3Rlc3Q7CisgICAgYm9vbCBtX3N1cHBvcnRTaGFsbG93Rmx1c2g7Cit9OworCisKK2NsYXNzIFRl
eHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QgOiBwdWJsaWMgRmFrZVRleHR1cmVVcGxvYWRlciB7
CitwdWJsaWM6CisgICAgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdChDQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyVGVzdCAqdGVzdCkgOiBtX3Rlc3QodGVzdCkgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9h
ZHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpD
Q1Jlc291cmNlUHJvdmlkZXIqLCBQYXJhbWV0ZXJzKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAg
ICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCogbV90ZXN0OworfTsKKworY2xhc3MgVGV4
dHVyZUZvclVwbG9hZFRlc3QgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CitwdWJsaWM6CisgICAgVGV4dHVyZUZvclVwbG9hZFRlc3QoKSA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUoYWRvcHRQdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+KDApKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgeyB9Cit9OworCisKK2NsYXNz
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0IDogcHVibGljIFRlc3QgeworcHVibGljOgor
ICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0KCkKKyAgICA6IG1fdXBkYXRlcihhZG9w
dFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcikpCisgICAgLCBtX3VwbG9hZGVyKHRoaXMpCisgICAg
LCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKDApCisgICAgLCBtX3BhcnRpYWxDb3VudEV4cGVj
dGVkKDApCisgICAgLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCgwKQorICAgICwgbV9tYXhV
cGxvYWRDb3VudFBlclVwZGF0ZSgwKQorICAgICwgbV9udW1CZWdpblVwbG9hZHMoMCkKKyAgICAs
IG1fbnVtRW5kVXBsb2FkcygwKQorICAgICwgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMoMCkKKyAg
ICAsIG1fbnVtRGFuZ2xpbmdVcGxvYWRzKDApCisgICAgLCBtX251bVRvdGFsVXBsb2FkcygwKQor
ICAgICwgbV9udW1Ub3RhbEZsdXNoZXMoMCkKKyAgICAsIG1fbnVtUHJldmlvdXNVcGxvYWRzKDAp
CisgICAgLCBtX251bVByZXZpb3VzRmx1c2hlcygwKQorICAgIHsgfQorCitwdWJsaWM6CisgICAg
dm9pZCBvbkZsdXNoKCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIGZvciBiYWNrLXRvLWJhY2sg
Zmx1c2hlcy4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzKSA8
PCAiQmFjay10by1iYWNrIGZsdXNoZXMgZGV0ZWN0ZWQuIjsKKworICAgICAgICAvLyBDaGVjayBm
b3IgcHJlbWF0dXJlIGZsdXNoZXMKKyAgICAgICAgaWYgKG1fbnVtUHJldmlvdXNVcGxvYWRzICE9
IG1fbWF4VXBsb2FkQ291bnRQZXJVcGRhdGUpIHsKKyAgICAgICAgICAgIGlmIChtX251bVRvdGFs
VXBsb2FkcyA8IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgRVhQ
RUNUX0dFKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8PCAiUHJlbWF0
dXJlIGZsdXNoIGRldGVjdGVkIGluIGZ1bGwgdXBsb2Fkcy4iOworICAgICAgICAgICAgZWxzZSBp
ZiAobV9udW1Ub3RhbFVwbG9hZHMgPiBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkICYmIG1fbnVt
VG90YWxVcGxvYWRzIDwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpCisgICAgICAgICAgICAg
ICAgRVhQRUNUX0dFKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RQYXJ0aWFsKSA8
PCAiUHJlbWF0dXJlIGZsdXNoIGRldGVjdGVkIGluIHBhcnRpYWwgdXBsb2Fkcy4iOworICAgICAg
ICB9CisKKyAgICAgICAgbV9udW1EYW5nbGluZ1VwbG9hZHMgPSAwOworICAgICAgICBtX251bUNv
bnNlY3V0aXZlRmx1c2hlcysrOworICAgICAgICBtX251bVRvdGFsRmx1c2hlcysrOworICAgICAg
ICBtX251bVByZXZpb3VzRmx1c2hlcysrOworICAgIH0KKworICAgIHZvaWQgb25CZWdpblVwbG9h
ZHMoKQorICAgIHsKKyAgICAgICAgbV9udW1QcmV2aW91c0ZsdXNoZXMgPSAwOworICAgICAgICBt
X251bVByZXZpb3VzVXBsb2FkcyA9IDA7CisgICAgICAgIG1fbnVtQmVnaW5VcGxvYWRzKys7Cisg
ICAgfQorCisgICAgdm9pZCBvblVwbG9hZCgpCisgICAgeworICAgICAgICAvLyBDaGVjayBmb3Ig
dG9vIG1hbnkgY29uc2VjdXRpdmUgdXBsb2FkcworICAgICAgICBpZiAobV9udW1Ub3RhbFVwbG9h
ZHMgPCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKQorICAgICAgICAgICAgRVhQRUNUX0xUKG1f
bnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8PCAiVG9vIG1hbnkgY29uc2Vj
dXRpdmUgZnVsbCB1cGxvYWRzIGRldGVjdGVkLiI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IEVYUEVDVF9MVChtX251bURhbmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFydGlhbCkgPDwg
IlRvbyBtYW55IGNvbnNlY3V0aXZlIHBhcnRpYWwgdXBsb2FkcyBkZXRlY3RlZC4iOworCisgICAg
ICAgIG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzID0gMDsKKyAgICAgICAgbV9udW1EYW5nbGluZ1Vw
bG9hZHMrKzsKKyAgICAgICAgbV9udW1Ub3RhbFVwbG9hZHMrKzsKKyAgICAgICAgbV9udW1QcmV2
aW91c1VwbG9hZHMrKzsKKyAgICB9CisKKyAgICB2b2lkIG9uRW5kVXBsb2FkcygpCisgICAgewor
ICAgICAgICBFWFBFQ1RfRVEoMCwgbV9udW1EYW5nbGluZ1VwbG9hZHMpIDw8ICJMYXN0IHVwbG9h
ZCB3YXNuJ3QgZm9sbG93ZWQgYnkgYSBmbHVzaC4iOworCisgICAgICAgIC8vIE5vdGU6IFRoZSBt
X251bVRvdGFsVXBsb2FkcyAhPSBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkIGNvbXBhcmlzb24K
KyAgICAgICAgLy8gYWxsb3dzIGZvciB0aGUgcXVvdGEgbm90IHRvIGJlIGhpdCBpbiB0aGUgY2Fz
ZSB3aGVyZSB3ZSBhcmUgdHJhc2l0aW9uaW5nCisgICAgICAgIC8vIGZyb20gZnVsbCB1cGxvYWRz
IHRvIHBhcnRpYWwgdXBsb2Fkcy4KKyAgICAgICAgaWYgKG1fbnVtVG90YWxVcGxvYWRzICE9IG1f
dG90YWxVcGxvYWRDb3VudEV4cGVjdGVkICYmIG1fbnVtVG90YWxVcGxvYWRzICE9IG1fZnVsbFVw
bG9hZENvdW50RXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShtX21heFVwbG9hZENv
dW50UGVyVXBkYXRlLCBtX251bVByZXZpb3VzVXBsb2FkcykKKyAgICAgICAgICAgICAgICA8PCAi
ZW5kVXBsb2FkKCkgd2FzIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSB0ZXh0dXJlcyB0byB1cGxvYWQs
IGJ1dCB0aGUgdXBsb2FkIHF1b3RhIGhhc24ndCBiZWVuIGZpbGxlZC4iOworICAgICAgICB9CisK
KyAgICAgICAgbV9udW1FbmRVcGxvYWRzKys7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmly
dHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIE93blB0cjxXZWJUaHJlYWQ+IHRocmVh
ZDsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0KCkpOworCisg
ICAgICAgIG1fY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCgKKyAgICAgICAg
ICAgICAgICAgICAgYWRvcHRQdHIobmV3IFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2FkVGVz
dCh0aGlzKSkpOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsK
KyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVyOjpjcmVhdGUo
bV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQor
ICAgIHsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGludCBjb3VudCkKKyAgICB7CisgICAgICAg
IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQgKz0gY291bnQ7CisgICAgICAgIG1fdG90YWxVcGxv
YWRDb3VudEV4cGVjdGVkICs9IGNvdW50OworCisgICAgICAgIGNvbnN0IEludFJlY3QgcmVjdCgw
LCAwLCAzMDAsIDE1MCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
KyAgICAgICAgICAgIG1fdXBkYXRlci0+YXBwZW5kRnVsbFVwbG9hZChUZXh0dXJlVXBsb2FkZXI6
OlBhcmFtZXRlcnMoJm1fdGV4dHVyZSwgcmVjdCwgcmVjdCkpOworICAgIH0KKworICAgIHZvaWQg
YXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoaW50IGNvdW50KQorICAgIHsKKyAgICAgICAg
bV9wYXJ0aWFsQ291bnRFeHBlY3RlZCArPSBjb3VudDsKKyAgICAgICAgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQgKz0gY291bnQ7CisKKyAgICAgICAgY29uc3QgSW50UmVjdCByZWN0KDAsIDAs
IDEwMCwgMTAwKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAg
ICAgICAgICAgbV91cGRhdGVyLT5hcHBlbmRQYXJ0aWFsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6
UGFyYW1ldGVycygmbV90ZXh0dXJlLCByZWN0LCByZWN0KSk7CisgICAgfQorCisgICAgdm9pZCBz
ZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0ZShpbnQgY291bnQpCisgICAgeworICAgICAgICBtX21h
eFVwbG9hZENvdW50UGVyVXBkYXRlID0gY291bnQ7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
Ly8gQ2xhc3NlcyByZXF1aXJlZCB0byBpbnRlcmFjdCBhbmQgdGVzdCB0aGUgQ0NUZXh0dXJlVXBk
YXRlQ29udHJvbGxlcgorICAgIE93blB0cjxDQ0dyYXBoaWNzQ29udGV4dD4gbV9jb250ZXh0Owor
ICAgIE93blB0cjxDQ1Jlc291cmNlUHJvdmlkZXI+IG1fcmVzb3VyY2VQcm92aWRlcjsKKyAgICBP
d25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV91cGRhdGVyOworICAgIFRleHR1cmVGb3JVcGxvYWRU
ZXN0IG1fdGV4dHVyZTsKKyAgICBGYWtlVGV4dHVyZUNvcGllciBtX2NvcGllcjsKKyAgICBUZXh0
dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IG1fdXBsb2FkZXI7CisKKyAgICAvLyBQcm9wZXJ0aWVz
IC8gZXhwZWN0YXRpb25zIG9mIHRoaXMgdGVzdAorICAgIGludCBtX2Z1bGxVcGxvYWRDb3VudEV4
cGVjdGVkOworICAgIGludCBtX3BhcnRpYWxDb3VudEV4cGVjdGVkOworICAgIGludCBtX3RvdGFs
VXBsb2FkQ291bnRFeHBlY3RlZDsKKyAgICBpbnQgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZTsK
KworICAgIC8vIER5bmFtaWMgcHJvcGVydGllcyBvZiB0aGlzIHRlc3QKKyAgICBpbnQgbV9udW1C
ZWdpblVwbG9hZHM7CisgICAgaW50IG1fbnVtRW5kVXBsb2FkczsKKyAgICBpbnQgbV9udW1Db25z
ZWN1dGl2ZUZsdXNoZXM7CisgICAgaW50IG1fbnVtRGFuZ2xpbmdVcGxvYWRzOworICAgIGludCBt
X251bVRvdGFsVXBsb2FkczsKKyAgICBpbnQgbV9udW1Ub3RhbEZsdXNoZXM7CisgICAgaW50IG1f
bnVtUHJldmlvdXNVcGxvYWRzOworICAgIGludCBtX251bVByZXZpb3VzRmx1c2hlczsKK307CisK
K3ZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0OjpmbHVzaCh2b2lkKQorewor
ICAgIG1fdGVzdC0+b25GbHVzaCgpOworfQorCit2b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERm9y
VXBsb2FkVGVzdDo6c2hhbGxvd0ZsdXNoQ0hST01JVU0odm9pZCkKK3sKKyAgICBtX3Rlc3QtPm9u
Rmx1c2goKTsKK30KKwordm9pZCBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0OjpiZWdpblVw
bG9hZHMoKQoreworICAgIG1fdGVzdC0+b25CZWdpblVwbG9hZHMoKTsKK30KKwordm9pZCBUZXh0
dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0OjplbmRVcGxvYWRzKCkKK3sKKyAgICBtX3Rlc3QtPm9u
RW5kVXBsb2FkcygpOworfQorCit2b2lkIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6OnVw
bG9hZFRleHR1cmUoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwgUGFyYW1ldGVycykKK3sK
KyAgICBtX3Rlc3QtPm9uVXBsb2FkKCk7Cit9CisKKworLy8gWkVSTyBVUExPQURTIFRFU1RTCitU
RVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIFplcm9VcGxvYWRzKQoreworICAg
IGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRz
VG9VcGRhdGVyKDApOworICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1
cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91
cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBFWFBFQ1Rf
RVEoMCwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgwLCBtX251bUVuZFVwbG9h
ZHMpOworICAgIEVYUEVDVF9FUSgwLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisgICAgRVhQRUNU
X0VRKDAsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworCisvLyBPTkUgVVBMT0FEIFRFU1RT
CitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE9uZUZ1bGxVcGxvYWQpCit7
CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMSk7CisgICAgYXBwZW5kUGFydGlhbFVw
bG9hZHNUb1VwZGF0ZXIoMCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNv
dXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0
KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251
bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAg
RVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
clRlc3QsIE9uZVBhcnRpYWxVcGxvYWQpCit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0
ZXIoMCk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMSk7CisgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJv
bGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIs
ICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVk
KTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VR
KDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNGbHVz
aGVzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNU
X0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE9uZUZ1bGxPbmVQYXJ0aWFsVXBsb2Fk
KQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDEpOworICAgIGFwcGVuZFBhcnRp
YWxVcGxvYWRzVG9VcGRhdGVyKDEpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOworICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVy
LmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICAvLyBXZSBleHBlY3Qg
dGhlIGZ1bGwgdXBsb2FkcyB0byBiZSBmb2xsb3dlZCBieSBhIGZsdXNoCisgICAgLy8gYmVmb3Jl
IHRoZSBwYXJ0aWFsIHVwbG9hZHMgYmVnaW4uCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5V
cGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1Rf
RVEoMiwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUSgyLCBtX251bVByZXZp
b3VzVXBsb2Fkcyk7Cit9CisKKworLy8gTk8gUkVNQUlOREVSIFRFU1RTCisvLyBUaGlzIGNsYXNz
IG9mIHRlc3RzIHVwbG9hZCBhIG51bWJlciBvZiB0ZXh0dXJlcyB0aGF0IGlzIGEgbXVsdGlwbGUg
b2YgdGhlIGZsdXNoIHBlcmlvZC4KK2NvbnN0IGludCBmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIg
PSA3OworY29uc3QgaW50IGZ1bGxOb1JlbWFpbmRlckNvdW50ID0gZnVsbFVwbG9hZEZsdXNoTXVs
dGlwbGVyICoga0ZsdXNoUGVyaW9kRnVsbDsKKworY29uc3QgaW50IHBhcnRpYWxVcGxvYWRGbHVz
aE11bHRpcGxlciA9IDExOworY29uc3QgaW50IHBhcnRpYWxOb1JlbWFpbmRlckNvdW50ID0gcGFy
dGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyICoga0ZsdXNoUGVyaW9kUGFydGlhbDsKKworVEVTVF9G
KENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBNYW55RnVsbFVwbG9hZHNOb1JlbWFpbmRl
cikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3Vu
dCk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
cjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsK
KworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEs
IG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxl
ciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUShmdWxsTm9SZW1haW5kZXJD
b3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlclRlc3QsIE1hbnlQYXJ0aWFsVXBsb2Fkc05vUmVtYWluZGVyKQoreworICAgIGFw
cGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9V
cGRhdGVyKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVU
ZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIs
IG1fdXBkYXRlci5nZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQ
RUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRV
cGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEocGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyLCBtX251
bVByZXZpb3VzRmx1c2hlcyk7CisgICAgRVhQRUNUX0VRKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50
LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250
cm9sbGVyVGVzdCwgTWFueUZ1bGxNYW55UGFydGlhbFVwbG9hZHNOb1JlbWFpbmRlcikKK3sKKyAg
ICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJDb3VudCk7CisgICAg
YXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE5vUmVtYWluZGVyQ291bnQpOwor
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVw
ZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291
bnRFeHBlY3RlZCk7CisKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOworICAg
IEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUShmdWxsVXBsb2Fk
Rmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlv
dXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbE5vUmVtYWluZGVyQ291bnQgKyBwYXJ0aWFs
Tm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCisKKy8vIE1JTi9N
QVggUkVNQUlOREVSIFRFU1RTCisvLyBUaGlzIGNsYXNzIG9mIHRlc3RzIG1peCBhbmQgbWF0Y2gg
dXBsb2FkaW5nIDEgbW9yZSBhbmQgMSBsZXNzIHRleHR1cmUKKy8vIHRoYW4gYSBtdWx0aXBsZSBv
ZiB0aGUgZmx1c2ggcGVyaW9kLgorCitjb25zdCBpbnQgZnVsbE1pblJlbWFpbmRlckNvdW50ID0g
ZnVsbE5vUmVtYWluZGVyQ291bnQgKyAxOworY29uc3QgaW50IGZ1bGxNYXhSZW1haW5kZXJDb3Vu
dCA9IGZ1bGxOb1JlbWFpbmRlckNvdW50IC0gMTsKK2NvbnN0IGludCBwYXJ0aWFsTWluUmVtYWlu
ZGVyQ291bnQgPSBwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCArIDE7Citjb25zdCBpbnQgcGFydGlh
bE1heFJlbWFpbmRlckNvdW50ID0gcGFydGlhbE5vUmVtYWluZGVyQ291bnQgLSAxOworCitURVNU
X0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbE1pblJl
bWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWlu
ZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5S
ZW1haW5kZXJDb3VudCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCks
IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJl
Z2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQ
RUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRp
cGxlciArIDIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbE1pblJl
bWFpbmRlckNvdW50ICsgcGFydGlhbE1pblJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBs
b2Fkcyk7Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFueUZ1
bGxBbmRQYXJ0aWFsVXBsb2Fkc01heFJlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fk
c1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxv
YWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7CisgICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6
dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3Vw
bG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKwor
ICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1f
bnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciAr
IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAg
IEVYUEVDVF9FUShmdWxsTWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291
bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXJUZXN0LCBNYW55RnVsbE1pblJlbWFpbmRlck1hbnlQYXJ0aWFsTWF4UmVtYWluZGVy
KQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNaW5SZW1haW5kZXJDb3Vu
dCk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE1heFJlbWFpbmRl
ckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgbV90b3Rh
bFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxv
YWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEo
KGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlcisxKSArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxl
ciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUShmdWxsTWluUmVtYWluZGVy
Q291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsK
K30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBNYW55RnVsbE1heFJl
bWFpbmRlck1hbnlQYXJ0aWFsTWluUmVtYWluZGVyKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRz
VG9VcGRhdGVyKGZ1bGxNYXhSZW1haW5kZXJDb3VudCk7CisgICAgYXBwZW5kUGFydGlhbFVwbG9h
ZHNUb1VwZGF0ZXIocGFydGlhbE1pblJlbWFpbmRlckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1
cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBs
b2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisg
ICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICsg
KHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlcisxKSwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwor
ICAgIEVYUEVDVF9FUShmdWxsTWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWluUmVtYWluZGVy
Q291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworCisvLyBNVUxUSVBMRSBVUERBVEUg
VEVTVFMKKy8vIFRoZXNlIHRlc3RzIGF0dGVtcHQgdG8gdXBsb2FkIHRvbyBtYW55IHRleHR1cmVz
IGF0IG9uY2UsIHJlcXVpcmluZworLy8gbXVsdGlwbGUgY2FsbHMgdG8gdXBkYXRlKCkuCisKK2lu
dCBleHBlY3RlZEZsdXNoZXMoaW50IHVwbG9hZHMsIGludCBmbHVzaFBlcmlvZCkKK3sKKyAgICBy
ZXR1cm4gKHVwbG9hZHMgKyBmbHVzaFBlcmlvZCAtIDEpIC8gZmx1c2hQZXJpb2Q7Cit9CisKK1RF
U1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRh
dGVGdWxsQW5kUGFydGlhbCkKK3sKKyAgICBjb25zdCBpbnQga01heFVwbG9hZHNQZXJVcGRhdGUg
PSA0MDsKKyAgICBjb25zdCBpbnQga0Z1bGxVcGxvYWRzID0gMTAwOworICAgIGNvbnN0IGludCBr
UGFydGlhbFVwbG9hZHMgPSAyMDsKKworICAgIGludCBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9
IDA7CisgICAgaW50IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0gMDsKKworICAgIHNldE1heFVw
bG9hZENvdW50UGVyVXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBhcHBlbmRGdWxs
VXBsb2Fkc1RvVXBkYXRlcihrRnVsbFVwbG9hZHMpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRz
VG9VcGRhdGVyKGtQYXJ0aWFsVXBsb2Fkcyk7CisKKyAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1
bGwpCisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdl
dCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIGtNYXhVcGxvYWRz
UGVyVXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAg
RVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzRmx1
c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9k
RnVsbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZp
b3VzRmx1c2hlcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRz
UGVyVXBkYXRlOworICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1Q
cmV2aW91c1VwbG9hZHMpOworCisgICAgLy8gU2Vjb25kIHVwZGF0ZSAoNDAgZnVsbCkKKyAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwga01heFVw
bG9hZHNQZXJVcGRhdGUpOworCisgICAgRVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsK
KyAgICBFWFBFQ1RfRVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKKworICAgIGV4cGVjdGVkUHJldmlv
dXNGbHVzaGVzID0gZXhwZWN0ZWRGbHVzaGVzKGtNYXhVcGxvYWRzUGVyVXBkYXRlLCBrRmx1c2hQ
ZXJpb2RGdWxsKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMsIG1fbnVt
UHJldmlvdXNGbHVzaGVzKTsKKworICAgIGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0ga01heFVw
bG9hZHNQZXJVcGRhdGU7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzLCBt
X251bVByZXZpb3VzVXBsb2Fkcyk7CisKKyAgICAvLyBUaGlyZCB1cGRhdGUgKDIwIGZ1bGwsIDIw
IHBhcnRpYWwpCisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0
ZXIuZ2V0KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgzLCBtX251
bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDMsIG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAg
ICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrRnVsbFVwbG9hZHMt
a01heFVwbG9hZHNQZXJVcGRhdGUqMiwga0ZsdXNoUGVyaW9kRnVsbCkgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRGbHVzaGVzKGtQYXJ0aWFsVXBsb2Fkcywga0ZsdXNo
UGVyaW9kUGFydGlhbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBt
X251bVByZXZpb3VzRmx1c2hlcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IChr
RnVsbFVwbG9hZHMta01heFVwbG9hZHNQZXJVcGRhdGUqMikra1BhcnRpYWxVcGxvYWRzOworICAg
IEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMp
OworCisgICAgLy8gRmluYWwgc2FuaXR5IGNoZWNrcworICAgIEVYUEVDVF9FUShrRnVsbFVwbG9h
ZHMgKyBrUGFydGlhbFVwbG9hZHMsIG1fbnVtVG90YWxVcGxvYWRzKTsKK30KKworVEVTVF9GKEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBUcmlwbGVVcGRhdGVGaW5hbFVwZGF0ZUFsbFBh
cnRpYWwpCit7CisgICAgY29uc3QgaW50IGtNYXhVcGxvYWRzUGVyVXBkYXRlID0gNDA7CisgICAg
Y29uc3QgaW50IGtGdWxsVXBsb2FkcyA9IDcwOworICAgIGNvbnN0IGludCBrUGFydGlhbFVwbG9h
ZHMgPSAzMDsKKworICAgIGludCBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IDA7CisgICAgaW50
IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0gMDsKKworICAgIHNldE1heFVwbG9hZENvdW50UGVy
VXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBk
YXRlcihrRnVsbFVwbG9hZHMpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQ
YXJ0aWFsVXBsb2Fkcyk7CisKKyAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCisgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3Bp
ZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsK
KworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEs
IG1fbnVtRW5kVXBsb2Fkcyk7CisKKyAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVj
dGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7CisgICAg
RVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7
CisKKyAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOwor
ICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9h
ZHMpOworCisgICAgLy8gU2Vjb25kIHVwZGF0ZSAoMzAgZnVsbCwgb3B0aW9uYWxseSAxMCBwYXJ0
aWFsKQorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVz
b3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdl
dCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisKKyAgICBFWFBFQ1RfRVEoMiwgbV9udW1CZWdp
blVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgyLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVD
VF9MRShtX251bVByZXZpb3VzVXBsb2Fkcywga01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIC8v
IEJlIGxlbmllbnQgb24gdGhlIGV4YWN0IG51bWJlciBvZiBmbHVzaGVzIGhlcmUsIGFzIHRoZSBu
dW1iZXIgb2YgZmx1c2hlcworICAgIC8vIHdpbGwgZGVwZW5kIG9uIHdoZXRoZXIgc29tZSBwYXJ0
aWFsIHVwbG9hZHMgd2VyZSBwZXJmb3JtZWQuCisgICAgLy8gb25GbHVzaCgpLCBvblVwbG9hZCgp
LCBhbmQgb25FbmRVcGxvYWQoKSB3aWxsIGRvIGJhc2ljIGZsdXNoIGNoZWNrcyBmb3IgdXMgYW55
d2F5LgorCisgICAgLy8gVGhpcmQgdXBkYXRlICgzMCBwYXJ0aWFsIE9SIDIwIHBhcnRpYWwgaWYg
MTAgcGFydGlhbCB1cGxvYWRlZCBpbiBzZWNvbmQgdXBkYXRlKQorICAgIENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0
ZSk7CisKKyAgICBFWFBFQ1RfRVEoMywgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9F
USgzLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9MRShtX251bVByZXZpb3VzVXBsb2Fk
cywga01heFVwbG9hZHNQZXJVcGRhdGUpOworICAgIC8vIEJlIGxlbmllbnQgb24gdGhlIGV4YWN0
IG51bWJlciBvZiBmbHVzaGVzIGhlcmUgYXMgd2VsbC4KKworICAgIC8vIEZpbmFsIHNhbml0eSBj
aGVja3MKKyAgICBFWFBFQ1RfRVEoa0Z1bGxVcGxvYWRzICsga1BhcnRpYWxVcGxvYWRzLCBtX251
bVRvdGFsVXBsb2Fkcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiZmIzNWMwNDhjYWIwMjFmMGY5MmNmNDQ4YjZlMmJlNTM2NDE4
MTA4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUZXh0dXJlVXBkYXRlclRlc3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNTUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLQotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKLQotI2luY2x1ZGUgIkNDVGls
ZWRMYXllclRlc3RDb21tb24uaCIKLSNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJD
b21wb3NpdG9yLmgiCi0jaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3Ig
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCi0jaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgi
Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotdXNpbmcg
bmFtZXNwYWNlIFdlYktpdFRlc3RzOwotdXNpbmcgdGVzdGluZzo6VGVzdDsKLQotCi1uYW1lc3Bh
Y2UgewotCi1jb25zdCBpbnQga0ZsdXNoUGVyaW9kRnVsbCA9IDQ7Ci1jb25zdCBpbnQga0ZsdXNo
UGVyaW9kUGFydGlhbCA9IGtGbHVzaFBlcmlvZEZ1bGw7Ci0KLWNsYXNzIENDVGV4dHVyZVVwZGF0
ZXJUZXN0OwotCi1jbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QgOiBwdWJs
aWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKLXB1YmxpYzoKLSAgICBXZWJHcmFwaGljc0Nv
bnRleHQzREZvclVwbG9hZFRlc3QoQ0NUZXh0dXJlVXBkYXRlclRlc3QgKnRlc3QpCi0gICAgICAg
IDogbV90ZXN0KHRlc3QpCi0gICAgICAgICwgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoKHRydWUpCi0g
ICAgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZmx1c2godm9pZCk7Ci0gICAgdmlydHVhbCB2b2lk
IHNoYWxsb3dGbHVzaENIUk9NSVVNKHZvaWQpOwotICAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSog
b25DcmVhdGVHckdMSW50ZXJmYWNlKCkgeyByZXR1cm4gMDsgfQotCi0gICAgdmlydHVhbCBXZWJT
dHJpbmcgZ2V0U3RyaW5nKFdHQzNEZW51bSBuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKG1fc3Vw
cG9ydFNoYWxsb3dGbHVzaCkKLSAgICAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9N
SVVNX3NoYWxsb3dfZmx1c2giKTsKLSAgICAgICAgcmV0dXJuIFdlYlN0cmluZygiIik7Ci0gICAg
fQotCi1wcml2YXRlOgotICAgIENDVGV4dHVyZVVwZGF0ZXJUZXN0KiBtX3Rlc3Q7Ci0gICAgYm9v
bCBtX3N1cHBvcnRTaGFsbG93Rmx1c2g7Ci19OwotCi0KLWNsYXNzIFRleHR1cmVVcGxvYWRlckZv
clVwbG9hZFRlc3QgOiBwdWJsaWMgRmFrZVRleHR1cmVVcGxvYWRlciB7Ci1wdWJsaWM6Ci0gICAg
VGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdChDQ1RleHR1cmVVcGRhdGVyVGVzdCAqdGVzdCkg
OiBtX3Rlc3QodGVzdCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpDQ1Jlc291cmNl
UHJvdmlkZXIqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6
OkludFJlY3Qgc291cmNlUmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICBD
Q1RleHR1cmVVcGRhdGVyVGVzdCogbV90ZXN0OwotfTsKLQotCi1jbGFzcyBUZXh0dXJlRm9yVXBs
b2FkVGVzdCA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKLXB1YmxpYzoK
LSAgICBUZXh0dXJlRm9yVXBsb2FkVGVzdCgpIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZShhZG9wdFB0cjxDQ1ByaW9yaXRpemVkVGV4dHVyZT4oMCkpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KENDUmVzb3VyY2VQcm92aWRlciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSB7IH0KLX07Ci0KLQotY2xhc3MgQ0NUZXh0dXJl
VXBkYXRlclRlc3QgOiBwdWJsaWMgVGVzdCB7Ci1wdWJsaWM6Ci0gICAgQ0NUZXh0dXJlVXBkYXRl
clRlc3QoKQotICAgIDogbV91cGxvYWRlcih0aGlzKQotICAgICwgbV9mdWxsVXBsb2FkQ291bnRF
eHBlY3RlZCgwKQotICAgICwgbV9wYXJ0aWFsQ291bnRFeHBlY3RlZCgwKQotICAgICwgbV90b3Rh
bFVwbG9hZENvdW50RXhwZWN0ZWQoMCkKLSAgICAsIG1fbWF4VXBsb2FkQ291bnRQZXJVcGRhdGUo
MCkKLSAgICAsIG1fbnVtQmVnaW5VcGxvYWRzKDApCi0gICAgLCBtX251bUVuZFVwbG9hZHMoMCkK
LSAgICAsIG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzKDApCi0gICAgLCBtX251bURhbmdsaW5nVXBs
b2FkcygwKQotICAgICwgbV9udW1Ub3RhbFVwbG9hZHMoMCkKLSAgICAsIG1fbnVtVG90YWxGbHVz
aGVzKDApCi0gICAgLCBtX251bVByZXZpb3VzVXBsb2FkcygwKQotICAgICwgbV9udW1QcmV2aW91
c0ZsdXNoZXMoMCkKLSAgICB7IH0KLQotcHVibGljOgotICAgIHZvaWQgb25GbHVzaCgpCi0gICAg
ewotICAgICAgICAvLyBDaGVjayBmb3IgYmFjay10by1iYWNrIGZsdXNoZXMuCi0gICAgICAgIEVY
UEVDVF9FUSgwLCBtX251bUNvbnNlY3V0aXZlRmx1c2hlcykgPDwgIkJhY2stdG8tYmFjayBmbHVz
aGVzIGRldGVjdGVkLiI7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZm9yIHByZW1hdHVyZSBmbHVzaGVz
Ci0gICAgICAgIGlmIChtX251bVByZXZpb3VzVXBsb2FkcyAhPSBtX21heFVwbG9hZENvdW50UGVy
VXBkYXRlKSB7Ci0gICAgICAgICAgICBpZiAobV9udW1Ub3RhbFVwbG9hZHMgPCBtX2Z1bGxVcGxv
YWRDb3VudEV4cGVjdGVkKQotICAgICAgICAgICAgICAgIEVYUEVDVF9HRShtX251bURhbmdsaW5n
VXBsb2Fkcywga0ZsdXNoUGVyaW9kRnVsbCkgPDwgIlByZW1hdHVyZSBmbHVzaCBkZXRlY3RlZCBp
biBmdWxsIHVwbG9hZHMuIjsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1fbnVtVG90YWxVcGxvYWRz
ID4gbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCAmJiBtX251bVRvdGFsVXBsb2FkcyA8IG1fdG90
YWxVcGxvYWRDb3VudEV4cGVjdGVkKQotICAgICAgICAgICAgICAgIEVYUEVDVF9HRShtX251bURh
bmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFydGlhbCkgPDwgIlByZW1hdHVyZSBmbHVzaCBk
ZXRlY3RlZCBpbiBwYXJ0aWFsIHVwbG9hZHMuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbnVt
RGFuZ2xpbmdVcGxvYWRzID0gMDsKLSAgICAgICAgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMrKzsK
LSAgICAgICAgbV9udW1Ub3RhbEZsdXNoZXMrKzsKLSAgICAgICAgbV9udW1QcmV2aW91c0ZsdXNo
ZXMrKzsKLSAgICB9Ci0KLSAgICB2b2lkIG9uQmVnaW5VcGxvYWRzKCkKLSAgICB7Ci0gICAgICAg
IG1fbnVtUHJldmlvdXNGbHVzaGVzID0gMDsKLSAgICAgICAgbV9udW1QcmV2aW91c1VwbG9hZHMg
PSAwOwotICAgICAgICBtX251bUJlZ2luVXBsb2FkcysrOwotICAgIH0KLQotICAgIHZvaWQgb25V
cGxvYWQoKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgZm9yIHRvbyBtYW55IGNvbnNlY3V0aXZl
IHVwbG9hZHMKLSAgICAgICAgaWYgKG1fbnVtVG90YWxVcGxvYWRzIDwgbV9mdWxsVXBsb2FkQ291
bnRFeHBlY3RlZCkKLSAgICAgICAgICAgIEVYUEVDVF9MVChtX251bURhbmdsaW5nVXBsb2Fkcywg
a0ZsdXNoUGVyaW9kRnVsbCkgPDwgIlRvbyBtYW55IGNvbnNlY3V0aXZlIGZ1bGwgdXBsb2FkcyBk
ZXRlY3RlZC4iOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBFWFBFQ1RfTFQobV9udW1EYW5n
bGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZFBhcnRpYWwpIDw8ICJUb28gbWFueSBjb25zZWN1dGl2
ZSBwYXJ0aWFsIHVwbG9hZHMgZGV0ZWN0ZWQuIjsKLQotICAgICAgICBtX251bUNvbnNlY3V0aXZl
Rmx1c2hlcyA9IDA7Ci0gICAgICAgIG1fbnVtRGFuZ2xpbmdVcGxvYWRzKys7Ci0gICAgICAgIG1f
bnVtVG90YWxVcGxvYWRzKys7Ci0gICAgICAgIG1fbnVtUHJldmlvdXNVcGxvYWRzKys7Ci0gICAg
fQotCi0gICAgdm9pZCBvbkVuZFVwbG9hZHMoKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKDAs
IG1fbnVtRGFuZ2xpbmdVcGxvYWRzKSA8PCAiTGFzdCB1cGxvYWQgd2Fzbid0IGZvbGxvd2VkIGJ5
IGEgZmx1c2guIjsKLQotICAgICAgICAvLyBOb3RlOiBUaGUgbV9udW1Ub3RhbFVwbG9hZHMgIT0g
bV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCBjb21wYXJpc29uCi0gICAgICAgIC8vIGFsbG93cyBm
b3IgdGhlIHF1b3RhIG5vdCB0byBiZSBoaXQgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIHRyYXNp
dGlvbmluZwotICAgICAgICAvLyBmcm9tIGZ1bGwgdXBsb2FkcyB0byBwYXJ0aWFsIHVwbG9hZHMu
Ci0gICAgICAgIGlmIChtX251bVRvdGFsVXBsb2FkcyAhPSBtX3RvdGFsVXBsb2FkQ291bnRFeHBl
Y3RlZCAmJiBtX251bVRvdGFsVXBsb2FkcyAhPSBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKSB7
Ci0gICAgICAgICAgICBFWFBFQ1RfRVEobV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSwgbV9udW1Q
cmV2aW91c1VwbG9hZHMpCi0gICAgICAgICAgICAgICAgPDwgImVuZFVwbG9hZCgpIHdhcyBjYWxs
ZWQgd2hlbiB0aGVyZSBhcmUgdGV4dHVyZXMgdG8gdXBsb2FkLCBidXQgdGhlIHVwbG9hZCBxdW90
YSBoYXNuJ3QgYmVlbiBmaWxsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1fbnVtRW5kVXBs
b2FkcysrOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0g
ICAgewotICAgICAgICBPd25QdHI8V2ViVGhyZWFkPiB0aHJlYWQ7Ci0gICAgICAgIFdlYkNvbXBv
c2l0b3I6OmluaXRpYWxpemUodGhyZWFkLmdldCgpKTsKLQotICAgICAgICBtX2NvbnRleHQgPSBD
Q0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoCi0gICAgICAgICAgICAgICAgICAgIGFkb3B0UHRy
KG5ldyBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QodGhpcykpKTsKLSAgICAgICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIG1fcmVzb3VyY2VQ
cm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIFdlYkNv
bXBvc2l0b3I6OnNodXRkb3duKCk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRGdWxsVXBsb2Fk
c1RvVXBkYXRlcihpbnQgY291bnQpCi0gICAgewotICAgICAgICBtX2Z1bGxVcGxvYWRDb3VudEV4
cGVjdGVkICs9IGNvdW50OwotICAgICAgICBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCArPSBj
b3VudDsKLQotICAgICAgICBjb25zdCBJbnRSZWN0IHJlY3QoMCwgMCwgMzAwLCAxNTApOwotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgICAgICBtX3VwZGF0
ZXIuYXBwZW5kRnVsbFVwZGF0ZSgmbV90ZXh0dXJlLCByZWN0LCByZWN0KTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGludCBjb3VudCkKLSAgICB7Ci0g
ICAgICAgIG1fcGFydGlhbENvdW50RXhwZWN0ZWQgKz0gY291bnQ7Ci0gICAgICAgIG1fdG90YWxV
cGxvYWRDb3VudEV4cGVjdGVkICs9IGNvdW50OwotCi0gICAgICAgIGNvbnN0IEludFJlY3QgcmVj
dCgwLCAwLCAxMDAsIDEwMCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkr
KykKLSAgICAgICAgICAgIG1fdXBkYXRlci5hcHBlbmRQYXJ0aWFsVXBkYXRlKCZtX3RleHR1cmUs
IHJlY3QsIHJlY3QpOwotICAgIH0KLQotICAgIHZvaWQgc2V0TWF4VXBsb2FkQ291bnRQZXJVcGRh
dGUoaW50IGNvdW50KQotICAgIHsKLSAgICAgICAgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSA9
IGNvdW50OwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIC8vIENsYXNzZXMgcmVxdWlyZWQgdG8g
aW50ZXJhY3QgYW5kIHRlc3QgdGhlIENDVGV4dHVyZVVwZGF0ZXIKLSAgICBPd25QdHI8Q0NHcmFw
aGljc0NvbnRleHQ+IG1fY29udGV4dDsKLSAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBt
X3Jlc291cmNlUHJvdmlkZXI7Ci0gICAgQ0NUZXh0dXJlVXBkYXRlciBtX3VwZGF0ZXI7Ci0gICAg
VGV4dHVyZUZvclVwbG9hZFRlc3QgbV90ZXh0dXJlOwotICAgIEZha2VUZXh0dXJlQ29waWVyIG1f
Y29waWVyOwotICAgIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QgbV91cGxvYWRlcjsKLQot
ICAgIC8vIFByb3BlcnRpZXMgLyBleHBlY3RhdGlvbnMgb2YgdGhpcyB0ZXN0Ci0gICAgaW50IG1f
ZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQ7Ci0gICAgaW50IG1fcGFydGlhbENvdW50RXhwZWN0ZWQ7
Ci0gICAgaW50IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkOwotICAgIGludCBtX21heFVwbG9h
ZENvdW50UGVyVXBkYXRlOwotCi0gICAgLy8gRHluYW1pYyBwcm9wZXJ0aWVzIG9mIHRoaXMgdGVz
dAotICAgIGludCBtX251bUJlZ2luVXBsb2FkczsKLSAgICBpbnQgbV9udW1FbmRVcGxvYWRzOwot
ICAgIGludCBtX251bUNvbnNlY3V0aXZlRmx1c2hlczsKLSAgICBpbnQgbV9udW1EYW5nbGluZ1Vw
bG9hZHM7Ci0gICAgaW50IG1fbnVtVG90YWxVcGxvYWRzOwotICAgIGludCBtX251bVRvdGFsRmx1
c2hlczsKLSAgICBpbnQgbV9udW1QcmV2aW91c1VwbG9hZHM7Ci0gICAgaW50IG1fbnVtUHJldmlv
dXNGbHVzaGVzOwotfTsKLQotCi12b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2FkVGVz
dDo6Zmx1c2godm9pZCkKLXsKLSAgICBtX3Rlc3QtPm9uRmx1c2goKTsKLX0KLQotdm9pZCBXZWJH
cmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3Q6OnNoYWxsb3dGbHVzaENIUk9NSVVNKHZvaWQp
Ci17Ci0gICAgbV90ZXN0LT5vbkZsdXNoKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVVwbG9hZGVyRm9y
VXBsb2FkVGVzdDo6YmVnaW5VcGxvYWRzKCkKLXsKLSAgICBtX3Rlc3QtPm9uQmVnaW5VcGxvYWRz
KCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6ZW5kVXBsb2Fkcygp
Ci17Ci0gICAgbV90ZXN0LT5vbkVuZFVwbG9hZHMoKTsKLX0KLQotdm9pZCBUZXh0dXJlVXBsb2Fk
ZXJGb3JVcGxvYWRUZXN0Ojp1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0IHNvdXJjZVJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkKLXsKLSAgICBtX3Rlc3Qt
Pm9uVXBsb2FkKCk7Ci19Ci0KLQotLy8gWkVSTyBVUExPQURTIFRFU1RTCi1URVNUX0YoQ0NUZXh0
dXJlVXBkYXRlclRlc3QsIFplcm9VcGxvYWRzKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9V
cGRhdGVyKDApOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDApOwotICAgIG1f
dXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3Vw
bG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwg
bV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgwLCBtX251bUVuZFVwbG9hZHMpOwot
ICAgIEVYUEVDVF9FUSgwLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKDAs
IG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotCi0vLyBPTkUgVVBMT0FEIFRFU1RTCi1URVNU
X0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE9uZUZ1bGxVcGxvYWQpCi17Ci0gICAgYXBwZW5kRnVs
bFVwbG9hZHNUb1VwZGF0ZXIoMSk7Ci0gICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIo
MCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRh
dGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2Fk
ZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251
bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAg
RVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE9u
ZVBhcnRpYWxVcGxvYWQpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0g
ICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMSk7Ci0gICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJv
dmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4
cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQ
RUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlv
dXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQot
Ci1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE9uZUZ1bGxPbmVQYXJ0aWFsVXBsb2FkKQot
ewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAgIGFwcGVuZFBhcnRpYWxV
cGxvYWRzVG9VcGRhdGVyKDEpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9j
b3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICAv
LyBXZSBleHBlY3QgdGhlIGZ1bGwgdXBsb2FkcyB0byBiZSBmb2xsb3dlZCBieSBhIGZsdXNoCi0g
ICAgLy8gYmVmb3JlIHRoZSBwYXJ0aWFsIHVwbG9hZHMgYmVnaW4uCi0gICAgRVhQRUNUX0VRKDEs
IG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsK
LSAgICBFWFBFQ1RfRVEoMiwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUSgy
LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLQotLy8gTk8gUkVNQUlOREVSIFRFU1RTCi0v
LyBUaGlzIGNsYXNzIG9mIHRlc3RzIHVwbG9hZCBhIG51bWJlciBvZiB0ZXh0dXJlcyB0aGF0IGlz
IGEgbXVsdGlwbGUgb2YgdGhlIGZsdXNoIHBlcmlvZC4KLWNvbnN0IGludCBmdWxsVXBsb2FkRmx1
c2hNdWx0aXBsZXIgPSA3OwotY29uc3QgaW50IGZ1bGxOb1JlbWFpbmRlckNvdW50ID0gZnVsbFVw
bG9hZEZsdXNoTXVsdGlwbGVyICoga0ZsdXNoUGVyaW9kRnVsbDsKLQotY29uc3QgaW50IHBhcnRp
YWxVcGxvYWRGbHVzaE11bHRpcGxlciA9IDExOwotY29uc3QgaW50IHBhcnRpYWxOb1JlbWFpbmRl
ckNvdW50ID0gcGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyICoga0ZsdXNoUGVyaW9kUGFydGlh
bDsKLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbFVwbG9hZHNOb1JlbWFp
bmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5kZXJD
b3VudCk7Ci0gICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIoMCk7Ci0gICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxv
YWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7
Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxV
cGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9F
UShmdWxsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi1URVNU
X0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlQYXJ0aWFsVXBsb2Fkc05vUmVtYWluZGVyKQot
ewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOwotICAgIGFwcGVuZFBhcnRpYWxV
cGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQpOwotCi0gICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEocGFydGlhbFVw
bG9hZEZsdXNoTXVsdGlwbGVyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VR
KHBhcnRpYWxOb1JlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLVRF
U1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxNYW55UGFydGlhbFVwbG9hZHNOb1Jl
bWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTm9SZW1haW5k
ZXJDb3VudCk7Ci0gICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlhbE5vUmVt
YWluZGVyQ291bnQpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwot
ICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIs
ICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1Rf
RVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9h
ZHMpOwotICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFsVXBs
b2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEo
ZnVsbE5vUmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2
aW91c1VwbG9hZHMpOwotfQotCi0KLS8vIE1JTi9NQVggUkVNQUlOREVSIFRFU1RTCi0vLyBUaGlz
IGNsYXNzIG9mIHRlc3RzIG1peCBhbmQgbWF0Y2ggdXBsb2FkaW5nIDEgbW9yZSBhbmQgMSBsZXNz
IHRleHR1cmUKLS8vIHRoYW4gYSBtdWx0aXBsZSBvZiB0aGUgZmx1c2ggcGVyaW9kLgotCi1jb25z
dCBpbnQgZnVsbE1pblJlbWFpbmRlckNvdW50ID0gZnVsbE5vUmVtYWluZGVyQ291bnQgKyAxOwot
Y29uc3QgaW50IGZ1bGxNYXhSZW1haW5kZXJDb3VudCA9IGZ1bGxOb1JlbWFpbmRlckNvdW50IC0g
MTsKLWNvbnN0IGludCBwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQgPSBwYXJ0aWFsTm9SZW1haW5k
ZXJDb3VudCArIDE7Ci1jb25zdCBpbnQgcGFydGlhbE1heFJlbWFpbmRlckNvdW50ID0gcGFydGlh
bE5vUmVtYWluZGVyQ291bnQgLSAxOwotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1h
bnlGdWxsQW5kUGFydGlhbE1pblJlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1Rv
VXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRz
VG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJv
dmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4
cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQ
RUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVz
aE11bHRpcGxlciArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciArIDIsIG1fbnVtUHJldmlv
dXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbE1pblJlbWFpbmRlckNvdW50ICsgcGFydGlh
bE1pblJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihD
Q1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxBbmRQYXJ0aWFsVXBsb2Fkc01heFJlbWFpbmRl
cikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVyQ291
bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5k
ZXJDb3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAg
bV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1f
dXBsb2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgx
LCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7
Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciArIHBhcnRpYWxVcGxvYWRG
bHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUShmdWxs
TWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlv
dXNVcGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbE1p
blJlbWFpbmRlck1hbnlQYXJ0aWFsTWF4UmVtYWluZGVyKQotewotICAgIGFwcGVuZEZ1bGxVcGxv
YWRzVG9VcGRhdGVyKGZ1bGxNaW5SZW1haW5kZXJDb3VudCk7Ci0gICAgYXBwZW5kUGFydGlhbFVw
bG9hZHNUb1VwZGF0ZXIocGFydGlhbE1heFJlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQpOwotCi0gICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoKGZ1bGxVcGxv
YWRGbHVzaE11bHRpcGxlcisxKSArIHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1Q
cmV2aW91c0ZsdXNoZXMpOwotICAgIEVYUEVDVF9FUShmdWxsTWluUmVtYWluZGVyQ291bnQgKyBw
YXJ0aWFsTWF4UmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotVEVT
VF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbE1heFJlbWFpbmRlck1hbnlQYXJ0aWFs
TWluUmVtYWluZGVyKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGZ1bGxNYXhS
ZW1haW5kZXJDb3VudCk7Ci0gICAgYXBwZW5kUGFydGlhbFVwbG9hZHNUb1VwZGF0ZXIocGFydGlh
bE1pblJlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOwotCi0gICAg
RVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1F
bmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICsgKHBh
cnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlcisxKSwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotICAg
IEVYUEVDVF9FUShmdWxsTWF4UmVtYWluZGVyQ291bnQgKyBwYXJ0aWFsTWluUmVtYWluZGVyQ291
bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotCi0vLyBNVUxUSVBMRSBVUERBVEUgVEVT
VFMKLS8vIFRoZXNlIHRlc3RzIGF0dGVtcHQgdG8gdXBsb2FkIHRvbyBtYW55IHRleHR1cmVzIGF0
IG9uY2UsIHJlcXVpcmluZwotLy8gbXVsdGlwbGUgY2FsbHMgdG8gdXBkYXRlKCkuCi0KLWludCBl
eHBlY3RlZEZsdXNoZXMoaW50IHVwbG9hZHMsIGludCBmbHVzaFBlcmlvZCkKLXsKLSAgICByZXR1
cm4gKHVwbG9hZHMgKyBmbHVzaFBlcmlvZCAtIDEpIC8gZmx1c2hQZXJpb2Q7Ci19Ci0KLVRFU1Rf
RihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVGdWxsQW5kUGFy
dGlhbCkKLXsKLSAgICBjb25zdCBpbnQga01heFVwbG9hZHNQZXJVcGRhdGUgPSA0MDsKLSAgICBj
b25zdCBpbnQga0Z1bGxVcGxvYWRzID0gMTAwOwotICAgIGNvbnN0IGludCBrUGFydGlhbFVwbG9h
ZHMgPSAyMDsKLQotICAgIGludCBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IDA7Ci0gICAgaW50
IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0gMDsKLQotICAgIHNldE1heFVwbG9hZENvdW50UGVy
VXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBk
YXRlcihrRnVsbFVwbG9hZHMpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQ
YXJ0aWFsVXBsb2Fkcyk7Ci0KLSAgICAvLyBGaXJzdCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZSht
X3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxv
YWRzUGVyVXBkYXRlKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0g
ICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3Vz
Rmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVy
aW9kRnVsbCk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVBy
ZXZpb3VzRmx1c2hlcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxv
YWRzUGVyVXBkYXRlOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9u
dW1QcmV2aW91c1VwbG9hZHMpOwotCi0gICAgLy8gU2Vjb25kIHVwZGF0ZSAoNDAgZnVsbCkKLSAg
ICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAm
bV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwotCi0gICAgRVhQRUNUX0VRKDIsIG1f
bnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1FbmRVcGxvYWRzKTsKLQot
ICAgIGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzID0gZXhwZWN0ZWRGbHVzaGVzKGtNYXhVcGxvYWRz
UGVyVXBkYXRlLCBrRmx1c2hQZXJpb2RGdWxsKTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2
aW91c0ZsdXNoZXMsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLQotICAgIGV4cGVjdGVkUHJldmlv
dXNVcGxvYWRzID0ga01heFVwbG9hZHNQZXJVcGRhdGU7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVk
UHJldmlvdXNVcGxvYWRzLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci0KLSAgICAvLyBUaGlyZCB1
cGRhdGUgKDIwIGZ1bGwsIDIwIHBhcnRpYWwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVy
VXBkYXRlKTsKLQotICAgIEVYUEVDVF9FUSgzLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQ
RUNUX0VRKDMsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hl
cyA9IGV4cGVjdGVkRmx1c2hlcyhrRnVsbFVwbG9hZHMta01heFVwbG9hZHNQZXJVcGRhdGUqMiwg
a0ZsdXNoUGVyaW9kRnVsbCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRGbHVzaGVzKGtQYXJ0aWFsVXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFydGlhbCk7Ci0gICAgRVhQ
RUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0K
LSAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IChrRnVsbFVwbG9hZHMta01heFVwbG9hZHNQ
ZXJVcGRhdGUqMikra1BhcnRpYWxVcGxvYWRzOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZp
b3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotCi0gICAgLy8gRmluYWwgc2FuaXR5
IGNoZWNrcwotICAgIEVYUEVDVF9FUShrRnVsbFVwbG9hZHMgKyBrUGFydGlhbFVwbG9hZHMsIG1f
bnVtVG90YWxVcGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBUcmlw
bGVVcGRhdGVGaW5hbFVwZGF0ZUFsbFBhcnRpYWwpCi17Ci0gICAgY29uc3QgaW50IGtNYXhVcGxv
YWRzUGVyVXBkYXRlID0gNDA7Ci0gICAgY29uc3QgaW50IGtGdWxsVXBsb2FkcyA9IDcwOwotICAg
IGNvbnN0IGludCBrUGFydGlhbFVwbG9hZHMgPSAzMDsKLQotICAgIGludCBleHBlY3RlZFByZXZp
b3VzRmx1c2hlcyA9IDA7Ci0gICAgaW50IGV4cGVjdGVkUHJldmlvdXNVcGxvYWRzID0gMDsKLQot
ICAgIHNldE1heFVwbG9hZENvdW50UGVyVXBkYXRlKGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLSAg
ICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihrRnVsbFVwbG9hZHMpOwotICAgIGFwcGVuZFBh
cnRpYWxVcGxvYWRzVG9VcGRhdGVyKGtQYXJ0aWFsVXBsb2Fkcyk7Ci0KLSAgICAvLyBGaXJzdCB1
cGRhdGUgKDQwIGZ1bGwpCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGll
ciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKLQotICAgIEVYUEVDVF9FUSgx
LCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7
Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBs
b2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVk
UHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0KLSAgICBleHBlY3RlZFBy
ZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOwotICAgIEVYUEVDVF9FUShleHBl
Y3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotCi0gICAgLy8gU2Vj
b25kIHVwZGF0ZSAoMzAgZnVsbCwgb3B0aW9uYWxseSAxMCBwYXJ0aWFsKQotICAgIG1fdXBkYXRl
ci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVy
LCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1CZWdpblVw
bG9hZHMpOwotICAgIEVYUEVDVF9FUSgyLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9M
RShtX251bVByZXZpb3VzVXBsb2Fkcywga01heFVwbG9hZHNQZXJVcGRhdGUpOwotICAgIC8vIEJl
IGxlbmllbnQgb24gdGhlIGV4YWN0IG51bWJlciBvZiBmbHVzaGVzIGhlcmUsIGFzIHRoZSBudW1i
ZXIgb2YgZmx1c2hlcwotICAgIC8vIHdpbGwgZGVwZW5kIG9uIHdoZXRoZXIgc29tZSBwYXJ0aWFs
IHVwbG9hZHMgd2VyZSBwZXJmb3JtZWQuCi0gICAgLy8gb25GbHVzaCgpLCBvblVwbG9hZCgpLCBh
bmQgb25FbmRVcGxvYWQoKSB3aWxsIGRvIGJhc2ljIGZsdXNoIGNoZWNrcyBmb3IgdXMgYW55d2F5
LgotCi0gICAgLy8gVGhpcmQgdXBkYXRlICgzMCBwYXJ0aWFsIE9SIDIwIHBhcnRpYWwgaWYgMTAg
cGFydGlhbCB1cGxvYWRlZCBpbiBzZWNvbmQgdXBkYXRlKQotICAgIG1fdXBkYXRlci51cGRhdGUo
bV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBs
b2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMywgbV9udW1CZWdpblVwbG9hZHMpOwot
ICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9MRShtX251bVBy
ZXZpb3VzVXBsb2Fkcywga01heFVwbG9hZHNQZXJVcGRhdGUpOwotICAgIC8vIEJlIGxlbmllbnQg
b24gdGhlIGV4YWN0IG51bWJlciBvZiBmbHVzaGVzIGhlcmUgYXMgd2VsbC4KLQotICAgIC8vIEZp
bmFsIHNhbml0eSBjaGVja3MKLSAgICBFWFBFQ1RfRVEoa0Z1bGxVcGxvYWRzICsga1BhcnRpYWxV
cGxvYWRzLCBtX251bVRvdGFsVXBsb2Fkcyk7Ci19Ci0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVzdENvbW1v
bi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9u
LmgKaW5kZXggZGUxZWI2NmM2MWI2NDQxY2Q1NjI1MDAwMGM4ZDRhNjIwYjhjOGZjNy4uNmNkMjI4
YjNkOTA4NmZjMzAyNjQwM2RmM2U1YjFjZGQ2OGY3ZWYwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgKQEAgLTE1Myw3
ICsxNTMsNyBAQCBwcm90ZWN0ZWQ6CiAKIGNsYXNzIEZha2VUZXh0dXJlQ29waWVyIDogcHVibGlj
IFdlYkNvcmU6OlRleHR1cmVDb3BpZXIgewogcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4dHVyZSh1bnNpZ25lZCwgdW5zaWduZWQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSB7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUoUGFyYW1ldGVycykgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGZsdXNoKCkgeyB9CiB9OwogCkBAIC0xNjIsNyArMTYyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgYm9vbCBpc0J1c3koKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9p
ZCBiZWdpblVwbG9hZHMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciogcmVzb3Vy
Y2VQcm92aWRlciwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0IGRlc3RSZWN0KSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QocmVzb3VyY2VQcm92
aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRl
eHR1cmUoV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBQYXJh
bWV0ZXJzIHVwbG9hZCkgeyB1cGxvYWQudGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVByb3Zp
ZGVyLCB1cGxvYWQuc291cmNlUmVjdCwgdXBsb2FkLmRlc3RSZWN0KTsgfQogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcApp
bmRleCA3NzZlMjNiZmQyNjMwNjAxYTE4ZWNiMDVhMWI1NWRhODhhZmQxMGU0Li40NTVlZTY5MTk4
MjVjOWM1OWQ4OGJiZjdkNmU2NDI4YWI3ZjBiNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1RleHR1cmVDb3BpZXJUZXN0LmNwcApAQCAtNzYsNSArNzYsNSBAQCBU
RVNUKFRleHR1cmVDb3BpZXJUZXN0LCB0ZXN0RHJhd0FycmF5c0NvcHkpCiAgICAgaW50IGRlc3RU
ZXh0dXJlSWQgPSAyOwogICAgIEludFNpemUgc2l6ZSgyNTYsIDEyOCk7CiAgICAgT3duUHRyPEFj
Y2VsZXJhdGVkVGV4dHVyZUNvcGllcj4gY29waWVyKEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6
Y3JlYXRlKG1vY2tDb250ZXh0LmdldCgpLCBmYWxzZSkpOwotICAgIGNvcGllci0+Y29weVRleHR1
cmUoc291cmNlVGV4dHVyZUlkLCBkZXN0VGV4dHVyZUlkLCBzaXplKTsKKyAgICBjb3BpZXItPmNv
cHlUZXh0dXJlKFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMoc291cmNlVGV4dHVyZUlkLCBkZXN0
VGV4dHVyZUlkLCBzaXplKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBlMzlmZTdlNTY5YzdlZDJh
ZGRkNWFjYzEyYTQzOGEyMTE4MDUzOTMwLi5kN2ZkNzdlMmJmYjVkMGU4NDVjNTJjZDk2NWZiZmU3
ZTU1NTAwYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJj
Yy9DQ092ZXJkcmF3TWV0cmljcy5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyaW5nU3RhdHMuaCIK
ICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiIC8vIEZvciBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KIApAQCAtODksNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZVRleHR1cmVzKGludCBjb3VudCA9IDUwMCkKICAgICB7Ci0gICAgICAgIG1fdXBkYXRlci51cGRh
dGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBjb3Vu
dCk7CisgICAgICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgJm1fdXBkYXRl
ciwgY291bnQpOwogICAgIH0KIHB1YmxpYzoKICAgICBPd25QdHI8Q0NHcmFwaGljc0NvbnRleHQ+
IG1fY29udGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156706</attachid>
            <date>2012-08-06 09:28:37 -0700</date>
            <delta_ts>2012-08-06 10:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92596-20120806122813.patch</filename>
            <type>text/plain</type>
            <size>88177</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmZhMTcxMmUzNzY4ZTc1
NjViODg1YWUxOGM1NWEzMTBkZGQ3MzkzZS4uOWMwOTM1NTAyOTk2ZDk2NTA0NzAzNzk0YmEyNWNj
YzAwMzUyZjI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTA4LTA2ICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBS
ZWZhY3RvciBDQ1RleHR1cmVVcGRhdGVyIGludG8gQ0NUZXh0dXJlVXBkYXRlciBhbmQgQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkyNTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhlIENDVGV4dHVyZVVwZGF0ZXIgaW50ZXJmYWNlIGlzIHVzZWQgYnkgdGhl
IG1haW4gdGhyZWFkIHRvIHF1ZXVlCisgICAgICAgIHRleHR1cmUgdXBkYXRlcy4gVGhlIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXIgY29uc3RydWN0b3IgdGFrZXMgYQorICAgICAgICBDQ1RleHR1
cmVVcGRhdGVyIGFuZCBjb250YWlucyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gcGVyZm9ybSB0ZXh0
dXJlCisgICAgICAgIHVwbG9hZHMgYW5kIHRleHR1cmUgY29waWVzLiBUaGlzIGNsYXNzIGlzIG9u
bHkgdXNlZCBieSB0aGUgaW1wbCB0aHJlYWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGVQYXJ0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaDoKKyAgICAgICAgKFBhcmFtZXRl
cnMpOgorICAgICAgICAoVGV4dHVyZUNvcGllcik6CisgICAgICAgIChBY2NlbGVyYXRlZFRleHR1
cmVDb3BpZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVV
cGxvYWRlci5oOgorICAgICAgICAoUGFyYW1ldGVycyk6CisgICAgICAgIChUZXh0dXJlVXBsb2Fk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1
cmVVcGxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJvdHRsZWRUZXh0dXJlVXBsb2Fk
ZXI6OnVwbG9hZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1Rocm90dGxlZFRleHR1cmVVcGxvYWRlci5oOgorICAgICAgICAoVGhyb3R0bGVkVGV4dHVyZVVw
bG9hZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjp1cGRh
dGVUaWxlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5
Ojpkb0NvbW1pdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlQ29udHJvbGxlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjptYXhQYXJ0aWFsVGV4
dHVyZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
cjo6dXBkYXRlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcjo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp+Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjpoYXNNb3JlVXBkYXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVN
b3JlVGV4dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxl
cjo6dXBkYXRlTW9yZVRleHR1cmVzU2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6Y3JlYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZEZ1bGxV
cGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kUGFydGlh
bFVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmRDb3B5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnRha2VGaXJzdEZ1bGxVcGxv
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6dGFrZUZpcnN0UGFydGlh
bFVwbG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVyOjp0YWtlRmlyc3RD
b3B5KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgIChDQ1RleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkND
VGV4dHVyZVVwZGF0ZXI6OmZ1bGxVcGxvYWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnBhcnRpYWxVcGxvYWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OmNvcHlTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJv
eHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6YmVnaW5GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBkYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ro
cmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjptYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6QmVnaW5G
cmFtZUFuZENvbW1pdFN0YXRlOjpCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUpOgorICAgICAgICAo
QmVnaW5GcmFtZUFuZENvbW1pdFN0YXRlKToKKyAgICAgICAgKENDVGhyZWFkUHJveHkpOgorCiAy
MDEyLTA4LTA2ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJvbGxpbmcgb3V0IG15IHIxMjMwNjcgYW5kIHIxMjM1NzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMTc0MTNkZTg0ZTVlMzI2Y2VkNmI4ODUwY2IwODRhYTk3ZTUzZWZlYS4uZDljYjIx
ZGQ2ODM0YWNkMDI5N2FkN2JlMzVmNWY2NmUzN2JiZDQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0wOC0wNiAgRGF2aWQgUmV2ZW1hbiAgPHJldmVt
YW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0gUmVmYWN0b3IgQ0NUZXh0dXJl
VXBkYXRlciBpbnRvIENDVGV4dHVyZVVwZGF0ZXIgYW5kIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
S2l0Lmd5cGk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDoKKyAg
ICAgICAgKiB0ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZXJUZXN0LmNw
cC4KKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmg6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6RmFrZVRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpGYWtlVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKToKKyAgICAgICAg
KiB0ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5jcHA6CisgICAgICAgIChURVNUKToKKyAgICAgICAg
KiB0ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcDoKKwogMjAxMi0wOC0wNiAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiByZW5hbWUgV29ya2VyQWdlbnQuc2V0V29ya2VySW5zcGVjdGlvbkVuYWJsZWQgdG8gV29ya2Vy
QWdlbnQuZW5hYmxlIGFuZCBtYWtlIGl0IHJldHVybiBlcnJvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IDVjY2FlYjRiMTA0ZmExYjZhNzk4NWQ2ZGI0MTAyZTgyYThiZjU2ODQuLjMwZGI0YzMzOTRiNGZl
ZWZjNzZjY2Q5MWRhMTk5ZTRiOWM3MmE2MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTg0MDgsNiAr
ODQwOCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlRHJhd1F1YWQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuY3Bw
JywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMDI5NmI3N2Y3NjBhYTU4YTU2NzU0MTM1MDNkMjI5Zjg1
MzRiYjVkYi4uNjQ5ZTYxMDQxN2MyMzY2NjAxZTI1Y2VjYmQxNmU0NDIyMmZlNTNjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgdm9pZCBiZWdpblVwbG9hZHMoKSBPVkVSUklERSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZW5kVXBsb2FkcygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGxv
YWRUZXh0dXJlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIENDUmVzb3Vy
Y2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERSB7IHRleHR1cmUtPnVwZGF0ZVJlY3QocmVz
b3VyY2VQcm92aWRlciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lk
IHVwbG9hZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBQYXJh
bWV0ZXJzIHVwbG9hZCkgT1ZFUlJJREUgeyB1cGxvYWQudGV4dHVyZS0+dXBkYXRlUmVjdChyZXNv
dXJjZVByb3ZpZGVyLCB1cGxvYWQuc291cmNlUmVjdCwgdXBsb2FkLmRlc3RSZWN0KTsgfQogCiBw
cm90ZWN0ZWQ6CiAgICAgVW50aHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIoKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNjUyZDc0NDliMGI0M2ViMzk2ZjZh
YTZhYWY5YWZjYTFlMmM1ZGU2Ny4uNWE5ZmJmNWVhYWIyYjNhNDVjN2EyZjcyYzk5ZWVmZTNmMWY4
ODVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTIyNiw3
ICsyMjYsOCBAQCB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnVwZGF0ZVBhcnQoTGF5ZXJU
ZXh0dXJlVXBkYXRlciogcGFpbnRlciwgTGF5ZXJUZXh0dQogICAgIHRleHR1cmUtPnByZXBhcmVS
ZWN0KHJlY3QsIHN0YXRzKTsKIAogICAgIEludFJlY3QgZGVzdFJlY3QoSW50UG9pbnQoKSwgcmVj
dC5zaXplKCkpOwotICAgIHVwZGF0ZXIuYXBwZW5kRnVsbFVwZGF0ZSh0ZXh0dXJlLCByZWN0LCBk
ZXN0UmVjdCk7CisgICAgVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHVwbG9hZCA9IHsgdGV4
dHVyZSwgcmVjdCwgZGVzdFJlY3QgfTsKKyAgICB1cGRhdGVyLmFwcGVuZEZ1bGxVcGxvYWQodXBs
b2FkKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCmluZGV4IDBiNTk1OTdhNWVlODA5MDA3
YTI0ODQxYjVkNWY3ZTlhZjljOTQ0ZmEuLmZiYjdjZmZkNWI4OWFiMGJjYjZkODY4ZjY5NDk1NmYx
Y2EyNTU4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuY3BwCkBAIC02NiwxMyArNjYsMTMgQEAgQWNj
ZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjp+QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKCkKICAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZibykpOwog
fQogCi12b2lkIEFjY2VsZXJhdGVkVGV4dHVyZUNvcGllcjo6Y29weVRleHR1cmUodW5zaWduZWQg
c291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBz
aXplKQordm9pZCBBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI6OmNvcHlUZXh0dXJlKFBhcmFtZXRl
cnMgcGFyYW1ldGVycykKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIlRleHR1cmVDb3BpZXI6
OmNvcHlUZXh0dXJlIik7CiAKICAgICAvLyBOb3RlOiB0aGlzIGNvZGUgZG9lcyBub3QgcmVzdG9y
ZSB0aGUgdmlld3BvcnQsIGJvdW5kIHByb2dyYW0sIDJEIHRleHR1cmUsIGZyYW1lYnVmZmVyLCBi
dWZmZXIgb3IgYmxlbmQgZW5hYmxlLgogICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+Ymlu
ZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKLSAg
ICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNz
Q29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1F
TlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgZGVzdFRleHR1cmVJZCwgMCkpOwor
ICAgIEdMQyhtX2NvbnRleHQsIG1fY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNI
TUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBwYXJhbWV0ZXJzLmRlc3RUZXh0
dXJlLCAwKSk7CiAKICNpZiBPUyhBTkRST0lEKQogICAgIC8vIENsZWFyIGRlc3RpbmF0aW9uIHRv
IGltcHJvdmUgcGVyZm9ybWFuY2Ugb24gdGlsaW5nIEdQVXMuCkBAIC04MCw3ICs4MCw3IEBAIHZv
aWQgQWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VU
ZXh0dXJlSWQsIHVuc2lnbmVkIGRlCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jbGVh
cihHcmFwaGljc0NvbnRleHQzRDo6Q09MT1JfQlVGRkVSX0JJVCkpOwogI2VuZGlmCiAKLSAgICBH
TEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBzb3VyY2VUZXh0dXJlSWQpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBwYXJhbWV0ZXJz
LnNvdXJjZVRleHR1cmUpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01JTl9GSUxURVIsIEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUKSk7CiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgQWNjZWxlcmF0
ZWRUZXh0dXJlQ29waWVyOjpjb3B5VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVu
c2lnbmVkIGRlCiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShrUG9zaXRpb25BdHRyaWJ1dGUpKTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRl
eHQtPmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0Q6OkFSUkFZX0JVRkZFUiwgMCkpOwogCi0g
ICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT52aWV3cG9ydCgwLCAwLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpKTsKKyAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnZpZXdwb3J0
KDAsIDAsIHBhcmFtZXRlcnMuc2l6ZS53aWR0aCgpLCBwYXJhbWV0ZXJzLnNpemUuaGVpZ2h0KCkp
KTsKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0
M0Q6OkJMRU5EKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kcmF3QXJyYXlzKEdy
YXBoaWNzQ29udGV4dDNEOjpUUklBTkdMRV9GQU4sIDAsIDQpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZUNvcGllci5o
CmluZGV4IDMxMjUwYmM2NDFiNmFmM2EyMzg3MDljNmJiYjIyYTg4ODVmZjAxZDkuLmFmZTJlYzAy
NTY0YWQ3YWJkYzgwMjE1N2VmZjdiY2U4OTY2ODdjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVDb3BpZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlQ29waWVyLmgKQEAg
LTQwLDEwICs0MCwxNSBAQCBjbGFzcyBJbnRTaXplOwogCiBjbGFzcyBUZXh0dXJlQ29waWVyIHsK
IHB1YmxpYzoKLSAgICAvLyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3VyY2VU
ZXh0dXJlSWR8IHRvIHxkZXN0VGV4dHVyZUlkfC4gQm90aCB0ZXh0dXJlIG9iamVjdHMKKyAgICBz
dHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIHVuc2lnbmVkIHNvdXJjZVRleHR1cmU7CisgICAg
ICAgIHVuc2lnbmVkIGRlc3RUZXh0dXJlOworICAgICAgICBJbnRTaXplIHNpemU7CisgICAgfTsK
KyAgICAvLyBDb3B5IHRoZSBiYXNlIGxldmVsIGNvbnRlbnRzIG9mIHxzb3VyY2VUZXh0dXJlfCB0
byB8ZGVzdFRleHR1cmV8LiBCb3RoIHRleHR1cmUgb2JqZWN0cwogICAgIC8vIG11c3QgYmUgY29t
cGxldGUgYW5kIGhhdmUgYSBiYXNlIGxldmVsIG9mIHxzaXplfCBkaW1lbnNpb25zLiBUaGUgY29s
b3IgZm9ybWF0cyBkbyBub3QgbmVlZAotICAgIC8vIHRvIG1hdGNoLCBidXQgfGRlc3RUZXh0dXJl
SWR8IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0LgotICAgIHZpcnR1YWwgdm9pZCBjb3B5
VGV4dHVyZSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlSWQsIHVuc2lnbmVkIGRlc3RUZXh0dXJlSWQs
IGNvbnN0IEludFNpemUmKSA9IDA7CisgICAgLy8gdG8gbWF0Y2gsIGJ1dCB8ZGVzdFRleHR1cmV8
IG11c3QgaGF2ZSBhIHJlbmRlcmFibGUgZm9ybWF0LgorICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4
dHVyZShQYXJhbWV0ZXJzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZsdXNoKCkgPSAwOwogCiBw
cm90ZWN0ZWQ6CkBAIC02MSw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+
QWNjZWxlcmF0ZWRUZXh0dXJlQ29waWVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1
cmUodW5zaWduZWQgc291cmNlVGV4dHVyZUlkLCB1bnNpZ25lZCBkZXN0VGV4dHVyZUlkLCBjb25z
dCBJbnRTaXplJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKFBhcmFt
ZXRlcnMpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpIE9WRVJSSURFOwogCiBw
cm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlVXBsb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCmluZGV4IDkyODcwY2I1YTViZmQ5MGVhZmMy
ODczZDcwY2MwY2YxMGQxYmUxMGIuLjdhNTE2NTNmOGFjZDEwMDMyZWFkMTFlNGM0NmU3YzJhMjQ5
MjFkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVVcGxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVVcGxvYWRlci5oCkBAIC0zMSwxMiArMzEsMTggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0dXJlVXBsb2FkZXIgewogcHVibGljOgorICAgIHN0
cnVjdCBQYXJhbWV0ZXJzIHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZTsKKyAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IGRl
c3RSZWN0OworICAgIH07CisKICAgICB2aXJ0dWFsIH5UZXh0dXJlVXBsb2FkZXIoKSB7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luVXBs
b2FkcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZW5kVXBsb2FkcygpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgQ0NS
ZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
IGRlc3RSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoQ0NSZXNvdXJj
ZVByb3ZpZGVyKiwgUGFyYW1ldGVycykgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90
dGxlZFRleHR1cmVVcGxvYWRlci5jcHAKaW5kZXggMjgxZTA4ZmYwNDk4NzgxMjhhODQzMjcwOWVm
ZmU2OTY5MWI4MGQyZi4uOTNkYTE4OWM1YmNhMzNkZWU5ZDBiNDc0MWM5NzAzMzQ2Y2M2Nzc2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhy
b3R0bGVkVGV4dHVyZVVwbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXIuY3BwCkBAIC0xMjAsOSAr
MTIwLDkgQEAgdm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OmVuZFVwbG9hZHMoKQogICAg
IG1fcGVuZGluZ1F1ZXJpZXMuYXBwZW5kKG1fYXZhaWxhYmxlUXVlcmllcy50YWtlRmlyc3QoKSk7
CiB9CiAKLXZvaWQgVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyOjp1cGxvYWRUZXh0dXJlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIENDUmVzb3VyY2VQcm92aWRlciogcmVz
b3VyY2VQcm92aWRlciwgY29uc3QgSW50UmVjdCBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0IGRl
c3RSZWN0KQordm9pZCBUaHJvdHRsZWRUZXh0dXJlVXBsb2FkZXI6OnVwbG9hZFRleHR1cmUoQ0NS
ZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBQYXJhbWV0ZXJzIHVwbG9hZCkKIHsK
LSAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRl
c3RSZWN0KTsKKyAgICB1cGxvYWQudGV4dHVyZS0+dXBkYXRlUmVjdChyZXNvdXJjZVByb3ZpZGVy
LCB1cGxvYWQuc291cmNlUmVjdCwgdXBsb2FkLmRlc3RSZWN0KTsKIH0KIAogdm9pZCBUaHJvdHRs
ZWRUZXh0dXJlVXBsb2FkZXI6OnByb2Nlc3NRdWVyaWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rocm90dGxlZFRleHR1cmVVcGxvYWRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKaW5kZXggZjhjNDNkYzJkNDMwMzlmMmZkMjc4Y2ZhN2M3MTdjYWEy
OTBiYTRjOS4uMzYxNDY4ZmM4MmVmNTNlZWNiYTQ4NDRjZWMyMWM0MDU2MjhiNjA2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGhyb3R0bGVk
VGV4dHVyZVVwbG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGhyb3R0bGVkVGV4dHVyZVVwbG9hZGVyLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0J1c3koKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5VcGxvYWRzKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGVuZFVwbG9hZHMo
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgQ0NSZXNvdXJjZVByb3ZpZGVyKiwgY29uc3QgSW50UmVjdCBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0IGRlc3RSZWN0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBsb2FkVGV4dHVyZShDQ1Jlc291cmNlUHJvdmlkZXIqLCBQYXJhbWV0ZXJzKSBPVkVSUklE
RTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBRdWVyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCA2ODc0MGVmNTA3MzczNjFiMGQxYzYzYTI4NThlNmQ3NWY2MmVkYzM0Li42
ODNhNDVhY2JhNWE1YjQ2M2E1N2E0YzIxZjAwMmMwYmJjMzg4M2I4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUwNiwxMCArNTA2LDExIEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmln
aHQsIGluCiAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0
KCkgPiBwYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAorICAg
ICAgICAgICAgVGV4dHVyZVVwbG9hZGVyOjpQYXJhbWV0ZXJzIHVwbG9hZCA9IHsgdGlsZS0+dGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCB9OwogICAgICAgICAgICAgaWYgKHRpbGUtPnBh
cnRpYWxVcGRhdGUpCi0gICAgICAgICAgICAgICAgdXBkYXRlci5hcHBlbmRQYXJ0aWFsVXBkYXRl
KHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgICAg
IHVwZGF0ZXIuYXBwZW5kUGFydGlhbFVwbG9hZCh1cGxvYWQpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kRnVsbFVwZGF0ZSh0aWxlLT50ZXh0dXJlKCks
IHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgICAgICB1cGRhdGVyLmFwcGVuZEZ1
bGxVcGxvYWQodXBsb2FkKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMjZiMGE3MTg2NjAyMWI2OTI3ZDcwNzE2MDYzZWM4
NjEyMmVlMDNlOC4uMTY0MjVmZmJhNjdhZjZmNjY0NDA3Y2NiOWFmZThiNzk4OWNmNmIzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTMwLDcgKzMwLDcgQEAK
ICNpbmNsdWRlICJjYy9DQ0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKLSNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgImNjL0NDVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
IApAQCAtMjA2LDEyICsyMDYsMTMgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1p
dChDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKLSAg
ICAgICAgLy8gQ0NUZXh0dXJlVXBkYXRlciBpcyBub24tYmxvY2tpbmcgYW5kIHdpbGwgcmV0dXJu
IHdpdGhvdXQgdXBkYXRpbmcKLSAgICAgICAgLy8gYW55IHRleHR1cmVzIGlmIHRoZSB1cGxvYWRl
ciBpcyBidXN5LiBUaGlzIHNob3VsZG4ndCBiZSBhIHByb2JsZW0KLSAgICAgICAgLy8gaGVyZSBh
cyB0aGUgdGhyb3R0bGVkIHVwbG9hZGVyIGlzbid0IHVzZWQgaW4gc2luZ2xlIHRocmVhZCBtb2Rl
LgotICAgICAgICAvLyBGb3IgY29ycmVjdG5lc3MsIGxvb3AgdW50aWwgbm8gbW9yZSB1cGRhdGVz
IGFyZSBwZW5kaW5nLgorICAgICAgICAvLyBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRh
dGVUZXh0dXJlcyBpcyBub24tYmxvY2tpbmcgYW5kIHdpbGwKKyAgICAgICAgLy8gcmV0dXJuIHdp
dGhvdXQgdXBkYXRpbmcgYW55IHRleHR1cmVzIGlmIHRoZSB1cGxvYWRlciBpcyBidXN5LiBUaGlz
CisgICAgICAgIC8vIHNob3VsZG4ndCBiZSBhIHByb2JsZW0gaGVyZSBhcyB0aGUgdGhyb3R0bGVk
IHVwbG9hZGVyIGlzbid0IHVzZWQgaW4KKyAgICAgICAgLy8gc2luZ2xlIHRocmVhZCBtb2RlLiBG
b3IgY29ycmVjdG5lc3MsIGxvb3AgdW50aWwgbm8gbW9yZSB1cGRhdGVzIGFyZQorICAgICAgICAv
LyBwZW5kaW5nLgogICAgICAgICB3aGlsZSAodXBkYXRlci5oYXNNb3JlVXBkYXRlcygpKQotICAg
ICAgICAgICAgdXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+cmVzb3VyY2VQcm92
aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVDb3Bp
ZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0dXJlVXBsb2Fk
ZXIoKSwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkpOworICAgICAgICAgICAgQ0NUZXh0dXJl
VXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9sYXllclRyZWVIb3N0SW1wbC0+cmVz
b3VyY2VQcm92aWRlcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRl
eHR1cmVDb3BpZXIoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpLT50ZXh0
dXJlVXBsb2FkZXIoKSwgJnVwZGF0ZXIsIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcygpKTsKIAog
ICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVy
VHJlZUhvc3RJbXBsLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmIwZjM2ODU4NjBhYTUzODg0YTJjYTk0OTVi
ZTZlM2YzNmUwNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5jcHAKQEAgLTAs
MCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQz
RC5oIgorI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlVXBsb2Fk
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKworbmFtZXNwYWNlIHsKKworLy8g
TnVtYmVyIG9mIHRleHR1cmVzIHRvIHVwZGF0ZSB3aXRoIGVhY2ggY2FsbCB0byB1cGRhdGVNb3Jl
VGV4dHVyZXMoKS4KK3N0YXRpYyBjb25zdCBzaXplX3QgdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZSA9
IDQ4OworCisvLyBGbHVzaCBpbnRlcnZhbCB3aGVuIHBlcmZvcm1pbmcgdGV4dHVyZSB1cGxvYWRz
Lgorc3RhdGljIGNvbnN0IGludCB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2QgPSA0OworCit9IC8v
IGFub255bW91cyBuYW1lc3BhY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzaXplX3QgQ0NU
ZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6bWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKCkKK3sKKyAg
ICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKK30KKwordm9pZCBDQ1RleHR1cmVVcGRh
dGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNl
UHJvdmlkZXIsIFRleHR1cmVDb3BpZXIqIGNvcGllciwgVGV4dHVyZVVwbG9hZGVyKiB1cGxvYWRl
ciwgQ0NUZXh0dXJlVXBkYXRlciogdXBkYXRlciwgc2l6ZV90IGNvdW50KQoreworICAgIGlmICh1
cGRhdGVyLT5mdWxsVXBsb2FkU2l6ZSgpIHx8IHVwZGF0ZXItPnBhcnRpYWxVcGxvYWRTaXplKCkp
IHsKKyAgICAgICAgaWYgKHVwbG9hZGVyLT5pc0J1c3koKSkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB1cGxvYWRlci0+YmVnaW5VcGxvYWRzKCk7CisKKyAgICAgICAgc2l6ZV90IGZ1
bGxVcGxvYWRDb3VudCA9IDA7CisgICAgICAgIHdoaWxlICh1cGRhdGVyLT5mdWxsVXBsb2FkU2l6
ZSgpICYmIGZ1bGxVcGxvYWRDb3VudCA8IGNvdW50KSB7CisgICAgICAgICAgICB1cGxvYWRlci0+
dXBsb2FkVGV4dHVyZShyZXNvdXJjZVByb3ZpZGVyLCB1cGRhdGVyLT50YWtlRmlyc3RGdWxsVXBs
b2FkKCkpOworICAgICAgICAgICAgZnVsbFVwbG9hZENvdW50Kys7CisgICAgICAgICAgICBpZiAo
IShmdWxsVXBsb2FkQ291bnQgJSB0ZXh0dXJlVXBsb2FkRmx1c2hQZXJpb2QpKQorICAgICAgICAg
ICAgICAgIHJlc291cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHVwbG9h
ZHMgd2l0aG91dCBhIGZsdXNoLgorICAgICAgICBpZiAoZnVsbFVwbG9hZENvdW50ICUgdGV4dHVy
ZVVwbG9hZEZsdXNoUGVyaW9kKQorICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxv
d0ZsdXNoSWZTdXBwb3J0ZWQoKTsKKworICAgICAgICBib29sIG1vcmVVcGxvYWRzID0gdXBkYXRl
ci0+ZnVsbFVwbG9hZFNpemUoKTsKKworICAgICAgICBBU1NFUlQodXBkYXRlci0+cGFydGlhbFVw
bG9hZFNpemUoKSA8PSBjb3VudCk7CisgICAgICAgIC8vIFdlIG5lZWQgYW5vdGhlciB1cGRhdGUg
YmF0Y2ggaWYgdGhlIG51bWJlciBvZiB1cGRhdGVzIHJlbWFpbmluZworICAgICAgICAvLyBpbiB8
Y291bnR8IGlzIGdyZWF0ZXIgdGhhbiB0aGUgcmVtYWluaW5nIHBhcnRpYWwgZW50cmllcy4KKyAg
ICAgICAgaWYgKChjb3VudCAtIGZ1bGxVcGxvYWRDb3VudCkgPCB1cGRhdGVyLT5wYXJ0aWFsVXBs
b2FkU2l6ZSgpKQorICAgICAgICAgICAgbW9yZVVwbG9hZHMgPSB0cnVlOworCisgICAgICAgIGlm
IChtb3JlVXBsb2FkcykgeworICAgICAgICAgICAgdXBsb2FkZXItPmVuZFVwbG9hZHMoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBwYXJ0aWFsVXBs
b2FkQ291bnQgPSAwOworICAgICAgICB3aGlsZSAodXBkYXRlci0+cGFydGlhbFVwbG9hZFNpemUo
KSkgeworICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1cmUocmVzb3VyY2VQcm92aWRl
ciwgdXBkYXRlci0+dGFrZUZpcnN0UGFydGlhbFVwbG9hZCgpKTsKKyAgICAgICAgICAgIHBhcnRp
YWxVcGxvYWRDb3VudCsrOworICAgICAgICAgICAgaWYgKCEocGFydGlhbFVwbG9hZENvdW50ICUg
dGV4dHVyZVVwbG9hZEZsdXNoUGVyaW9kKSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZVByb3Zp
ZGVyLT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZXJlIGFyZSBubyBkYW5nbGluZyBwYXJ0aWFsIHVwbG9hZHMgd2l0aG91dCBh
IGZsdXNoLgorICAgICAgICBpZiAocGFydGlhbFVwbG9hZENvdW50ICUgdGV4dHVyZVVwbG9hZEZs
dXNoUGVyaW9kKQorICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0ZsdXNoSWZT
dXBwb3J0ZWQoKTsKKworICAgICAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOworICAgIH0KKwor
ICAgIHNpemVfdCBjb3B5Q291bnQgPSAwOworICAgIHdoaWxlICh1cGRhdGVyLT5jb3B5U2l6ZSgp
KSB7CisgICAgICAgIGNvcGllci0+Y29weVRleHR1cmUodXBkYXRlci0+dGFrZUZpcnN0Q29weSgp
KTsKKyAgICAgICAgY29weUNvdW50Kys7CisgICAgfQorCisgICAgLy8gSWYgd2UndmUgcGVyZm9y
bWVkIGFueSB0ZXh0dXJlIGNvcGllcywgd2UgbmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGlu
dG8gdGhlIGNvbXBvc2l0b3IgY29udGV4dAorICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWlu
IHRocmVhZCBwcm9jZWVkIGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0
ZXh0dXJlIG9mIG9uZSBvZgorICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCisgICAgaWYgKGNv
cHlDb3VudCkKKyAgICAgICAgY29waWVyLT5mbHVzaCgpOworfQorCitDQ1RleHR1cmVVcGRhdGVD
b250cm9sbGVyOjpDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKFBhc3NPd25QdHI8Q0NUZXh0dXJl
VXBkYXRlcj4gdXBkYXRlciwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyLCBU
ZXh0dXJlQ29waWVyKiBjb3BpZXIsIFRleHR1cmVVcGxvYWRlciogdXBsb2FkZXIpCisgICAgOiBt
X3VwZGF0ZXIodXBkYXRlcikKKyAgICAsIG1fcmVzb3VyY2VQcm92aWRlcihyZXNvdXJjZVByb3Zp
ZGVyKQorICAgICwgbV9jb3BpZXIoY29waWVyKQorICAgICwgbV91cGxvYWRlcih1cGxvYWRlcikK
K3sKK30KKworQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6fkNDVGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXIoKQoreworfQorCitib29sIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6Omhhc01vcmVV
cGRhdGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91cGRhdGVyLT5oYXNNb3JlVXBkYXRlcygp
OworfQorCit2b2lkIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZU1vcmVUZXh0dXJl
cygpCit7CisgICAgaWYgKCFtX3VwZGF0ZXItPmhhc01vcmVVcGRhdGVzKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIHVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlciwgbV9jb3BpZXIs
IG1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgdXBkYXRlTW9yZVRleHR1cmVzU2l6ZSgpKTsK
K30KKworc2l6ZV90IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZU1vcmVUZXh0dXJl
c1NpemUoKSBjb25zdAoreworICAgIHJldHVybiB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uODFhMWE3ZTU4YTY0YTlhNjk1ZWYxM2Q0NTU2N2Q2NmQ2NzBkOTc5ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyX2gKKyNkZWZpbmUgQ0NUZXh0dXJlVXBkYXRlQ29u
dHJvbGxlcl9oCisKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFRleHR1cmVDb3BpZXI7CitjbGFzcyBUZXh0dXJlVXBsb2FkZXI7
CisKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQ
YXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI+IGNyZWF0ZShQYXNzT3duUHRyPEND
VGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXIsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyKHVwZGF0ZXIsIHJlc291cmNlUHJvdmlkZXIsIGNvcGllciwgdXBsb2FkZXIpKTsKKyAgICB9
CisgICAgc3RhdGljIHNpemVfdCBtYXhQYXJ0aWFsVGV4dHVyZVVwZGF0ZXMoKTsKKyAgICBzdGF0
aWMgdm9pZCB1cGRhdGVUZXh0dXJlcyhDQ1Jlc291cmNlUHJvdmlkZXIqLCBUZXh0dXJlQ29waWVy
KiwgVGV4dHVyZVVwbG9hZGVyKiwgQ0NUZXh0dXJlVXBkYXRlciosIHNpemVfdCBjb3VudCk7CisK
KyAgICB2aXJ0dWFsIH5DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyKCk7CisKKyAgICBib29sIGhh
c01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVNb3JlVGV4dHVyZXMoKTsKKwor
ICAgIC8vIFZpcnR1YWwgZm9yIHRlc3RpbmcuCisgICAgdmlydHVhbCBzaXplX3QgdXBkYXRlTW9y
ZVRleHR1cmVzU2l6ZSgpIGNvbnN0OworCitwcm90ZWN0ZWQ6CisgICAgQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlcihQYXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+LCBDQ1Jlc291cmNlUHJvdmlk
ZXIqLCBUZXh0dXJlQ29waWVyKiwgVGV4dHVyZVVwbG9hZGVyKik7CisKKyAgICBPd25QdHI8Q0NU
ZXh0dXJlVXBkYXRlcj4gbV91cGRhdGVyOworICAgIENDUmVzb3VyY2VQcm92aWRlciogbV9yZXNv
dXJjZVByb3ZpZGVyOworICAgIFRleHR1cmVDb3BpZXIqIG1fY29waWVyOworICAgIFRleHR1cmVV
cGxvYWRlciogbV91cGxvYWRlcjsKK307CisKK30KKworI2VuZGlmIC8vIENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCBjNmY0
OTI5YTg2MTA2OGYxZTZmOTA1MGU0YzEwNDEyZTdlMzUwNWJhLi5jNTIwM2Q3ZmNlMjZjNjk3MDI5
ODNiY2ZkNTA3MGEzNWU1NjRiZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cApAQCAtMjksMjAgKzI5LDkgQEAKIAogI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIK
IAotI2luY2x1ZGUgIkNDUHJpb3JpdGl6ZWRUZXh0dXJlLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKLSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAi
VGV4dHVyZUNvcGllci5oIgotI2luY2x1ZGUgIlRleHR1cmVVcGxvYWRlci5oIgotCi11c2luZyBu
YW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBjb25zdCBpbnQg
a1VwbG9hZEZsdXNoUGVyaW9kID0gNDsKLQogQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBk
YXRlcigpCi0gICAgOiBtX2VudHJ5SW5kZXgoMCkKIHsKIH0KIApAQCAtNTAsMTE2ICszOSwzOSBA
QCBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ0NU
ZXh0dXJlVXBkYXRlcjo6YXBwZW5kVXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0LCBWZWN0b3I8VXBkYXRlRW50cnk+JiBlbnRyaWVzKQordm9pZCBDQ1RleHR1cmVVcGRhdGVy
OjphcHBlbmRGdWxsVXBsb2FkKFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyB1cGxvYWQpCiB7
Ci0gICAgQVNTRVJUKHRleHR1cmUpOwotCi0gICAgVXBkYXRlRW50cnkgZW50cnk7Ci0gICAgZW50
cnkudGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgZW50cnkuc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7
Ci0gICAgZW50cnkuZGVzdFJlY3QgPSBkZXN0UmVjdDsKLSAgICBlbnRyaWVzLmFwcGVuZChlbnRy
eSk7CisgICAgbV9mdWxsRW50cmllcy5hcHBlbmQodXBsb2FkKTsKIH0KIAotdm9pZCBDQ1RleHR1
cmVVcGRhdGVyOjphcHBlbmRGdWxsVXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KQordm9pZCBDQ1RleHR1cmVVcGRhdGVyOjphcHBlbmRQYXJ0aWFsVXBsb2FkKFRleHR1cmVV
cGxvYWRlcjo6UGFyYW1ldGVycyB1cGxvYWQpCiB7Ci0gICAgYXBwZW5kVXBkYXRlKHRleHR1cmUs
IHNvdXJjZVJlY3QsIGRlc3RSZWN0LCBtX2Z1bGxFbnRyaWVzKTsKKyAgICBtX3BhcnRpYWxFbnRy
aWVzLmFwcGVuZCh1cGxvYWQpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZFBh
cnRpYWxVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDVGV4
dHVyZVVwZGF0ZXI6OmFwcGVuZENvcHkoVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5KQog
ewotICAgIGFwcGVuZFVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgbV9wYXJ0
aWFsRW50cmllcyk7CisgICAgbV9jb3B5RW50cmllcy5hcHBlbmQoY29weSk7CiB9CiAKLXZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNp
Z25lZCBkZXN0VGV4dHVyZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1RleHR1cmVVcGxvYWRlcjo6
UGFyYW1ldGVycyBDQ1RleHR1cmVVcGRhdGVyOjp0YWtlRmlyc3RGdWxsVXBsb2FkKCkKIHsKLSAg
ICBDb3B5RW50cnkgY29weTsKLSAgICBjb3B5LnNvdXJjZVRleHR1cmUgPSBzb3VyY2VUZXh0dXJl
OwotICAgIGNvcHkuZGVzdFRleHR1cmUgPSBkZXN0VGV4dHVyZTsKLSAgICBjb3B5LnNpemUgPSBz
aXplOwotICAgIG1fY29weUVudHJpZXMuYXBwZW5kKGNvcHkpOworICAgIHJldHVybiBtX2Z1bGxF
bnRyaWVzLnRha2VGaXJzdCgpOwogfQogCi1ib29sIENDVGV4dHVyZVVwZGF0ZXI6Omhhc01vcmVV
cGRhdGVzKCkgY29uc3QKK1RleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycyBDQ1RleHR1cmVVcGRh
dGVyOjp0YWtlRmlyc3RQYXJ0aWFsVXBsb2FkKCkKIHsKLSAgICByZXR1cm4gbV9mdWxsRW50cmll
cy5zaXplKCkgfHwgbV9wYXJ0aWFsRW50cmllcy5zaXplKCkgfHwgbV9jb3B5RW50cmllcy5zaXpl
KCk7CisgICAgcmV0dXJuIG1fcGFydGlhbEVudHJpZXMudGFrZUZpcnN0KCk7CiB9CiAKLXZvaWQg
Q0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92
aWRlciwgVGV4dHVyZUNvcGllciogY29waWVyLCBUZXh0dXJlVXBsb2FkZXIqIHVwbG9hZGVyLCBz
aXplX3QgY291bnQpCitUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzIENDVGV4dHVyZVVwZGF0ZXI6
OnRha2VGaXJzdENvcHkoKQogewotICAgIHNpemVfdCBpbmRleDsKLQotICAgIGlmIChtX2Z1bGxF
bnRyaWVzLnNpemUoKSB8fCBtX3BhcnRpYWxFbnRyaWVzLnNpemUoKSkgewotICAgICAgICBpZiAo
dXBsb2FkZXItPmlzQnVzeSgpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHVwbG9h
ZGVyLT5iZWdpblVwbG9hZHMoKTsKLQotICAgICAgICBpbnQgZnVsbFVwbG9hZENvdW50ID0gMDsK
LSAgICAgICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2Z1
bGxFbnRyaWVzLnNpemUoKSk7Ci0gICAgICAgIGZvciAoaW5kZXggPSBtX2VudHJ5SW5kZXg7IGlu
ZGV4IDwgbWF4SW5kZXg7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fZnVsbEVudHJpZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRl
eHR1cmUoZW50cnkudGV4dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwg
ZW50cnkuZGVzdFJlY3QpOwotICAgICAgICAgICAgZnVsbFVwbG9hZENvdW50Kys7Ci0gICAgICAg
ICAgICBpZiAoIShmdWxsVXBsb2FkQ291bnQgJSBrVXBsb2FkRmx1c2hQZXJpb2QpKQotICAgICAg
ICAgICAgICAgIHJlc291cmNlUHJvdmlkZXItPnNoYWxsb3dGbHVzaElmU3VwcG9ydGVkKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUgYXJlIG5vIGRhbmdsaW5nIHVw
bG9hZHMgd2l0aG91dCBhIGZsdXNoLgotICAgICAgICBpZiAoZnVsbFVwbG9hZENvdW50ICUga1Vw
bG9hZEZsdXNoUGVyaW9kKQotICAgICAgICAgICAgcmVzb3VyY2VQcm92aWRlci0+c2hhbGxvd0Zs
dXNoSWZTdXBwb3J0ZWQoKTsKLQotICAgICAgICBib29sIG1vcmVVcGxvYWRzID0gbWF4SW5kZXgg
PCBtX2Z1bGxFbnRyaWVzLnNpemUoKTsKLQotICAgICAgICBBU1NFUlQobV9wYXJ0aWFsRW50cmll
cy5zaXplKCkgPD0gY291bnQpOwotICAgICAgICAvLyBXZSBuZWVkIGFub3RoZXIgdXBkYXRlIGJh
dGNoIGlmIHRoZSBudW1iZXIgb2YgdXBkYXRlcyByZW1haW5pbmcKLSAgICAgICAgLy8gaW4gfGNv
dW50fCBpcyBncmVhdGVyIHRoYW4gdGhlIHJlbWFpbmluZyBwYXJ0aWFsIGVudHJpZXMuCi0gICAg
ICAgIGlmICgoY291bnQgLSAoaW5kZXggLSBtX2VudHJ5SW5kZXgpKSA8IG1fcGFydGlhbEVudHJp
ZXMuc2l6ZSgpKQotICAgICAgICAgICAgbW9yZVVwbG9hZHMgPSB0cnVlOwotCi0gICAgICAgIGlm
IChtb3JlVXBsb2FkcykgewotICAgICAgICAgICAgbV9lbnRyeUluZGV4ID0gaW5kZXg7Ci0gICAg
ICAgICAgICB1cGxvYWRlci0+ZW5kVXBsb2FkcygpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgbV9wYXJ0aWFsRW50cmll
cy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1f
cGFydGlhbEVudHJpZXNbaW5kZXhdOwotICAgICAgICAgICAgdXBsb2FkZXItPnVwbG9hZFRleHR1
cmUoZW50cnkudGV4dHVyZSwgcmVzb3VyY2VQcm92aWRlciwgZW50cnkuc291cmNlUmVjdCwgZW50
cnkuZGVzdFJlY3QpOwotICAgICAgICAgICAgaWYgKCEoKGluZGV4KzEpICUga1VwbG9hZEZsdXNo
UGVyaW9kKSkKLSAgICAgICAgICAgICAgICByZXNvdXJjZVByb3ZpZGVyLT5zaGFsbG93Rmx1c2hJ
ZlN1cHBvcnRlZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGFy
ZSBubyBkYW5nbGluZyBwYXJ0aWFsIHVwbG9hZHMgd2l0aG91dCBhIGZsdXNoLgotICAgICAgICAv
LyBOb3RlOiBXZSBkb24ndCBuZWVkIHRvIHVzZSAoaW5kZXgrMSkgaW4gdGhpcyBjYXNlIGJlY2F1
c2UgaW5kZXggd2FzCi0gICAgICAgIC8vIGluY3JlbWVudGVkIGF0IHRoZSBlbmQgb2YgdGhlIGZv
ciBsb29wLgotICAgICAgICBpZiAoaW5kZXggJSBrVXBsb2FkRmx1c2hQZXJpb2QpCi0gICAgICAg
ICAgICByZXNvdXJjZVByb3ZpZGVyLT5zaGFsbG93Rmx1c2hJZlN1cHBvcnRlZCgpOwotCi0gICAg
ICAgIHVwbG9hZGVyLT5lbmRVcGxvYWRzKCk7Ci0gICAgfQotCi0gICAgZm9yIChpbmRleCA9IDA7
IGluZGV4IDwgbV9jb3B5RW50cmllcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgQ29weUVu
dHJ5JiBjb3B5RW50cnkgPSBtX2NvcHlFbnRyaWVzW2luZGV4XTsKLSAgICAgICAgY29waWVyLT5j
b3B5VGV4dHVyZShjb3B5RW50cnkuc291cmNlVGV4dHVyZSwgY29weUVudHJ5LmRlc3RUZXh0dXJl
LCBjb3B5RW50cnkuc2l6ZSk7Ci0gICAgfQotCi0gICAgLy8gSWYgd2UndmUgcGVyZm9ybWVkIGFu
eSB0ZXh0dXJlIGNvcGllcywgd2UgbmVlZCB0byBpbnNlcnQgYSBmbHVzaCBoZXJlIGludG8gdGhl
IGNvbXBvc2l0b3IgY29udGV4dAotICAgIC8vIGJlZm9yZSBsZXR0aW5nIHRoZSBtYWluIHRocmVh
ZCBwcm9jZWVkIGFzIGl0IG1heSBtYWtlIGRyYXcgY2FsbHMgdG8gdGhlIHNvdXJjZSB0ZXh0dXJl
IG9mIG9uZSBvZgotICAgIC8vIG91ciBjb3B5IG9wZXJhdGlvbnMuCi0gICAgaWYgKG1fY29weUVu
dHJpZXMuc2l6ZSgpKQotICAgICAgICBjb3BpZXItPmZsdXNoKCk7Ci0KLSAgICAvLyBJZiBubyBl
bnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOworICAgIHJl
dHVybiBtX2NvcHlFbnRyaWVzLnRha2VGaXJzdCgpOwogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0
ZXI6OmNsZWFyKCkKK2Jvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25z
dAogewotICAgIG1fZW50cnlJbmRleCA9IDA7Ci0gICAgbV9mdWxsRW50cmllcy5jbGVhcigpOwot
ICAgIG1fcGFydGlhbEVudHJpZXMuY2xlYXIoKTsKLSAgICBtX2NvcHlFbnRyaWVzLmNsZWFyKCk7
CisgICAgcmV0dXJuIG1fZnVsbEVudHJpZXMuc2l6ZSgpIHx8IG1fcGFydGlhbEVudHJpZXMuc2l6
ZSgpIHx8IG1fY29weUVudHJpZXMuc2l6ZSgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmgKaW5kZXggOTcyYTFjMGVjN2U0ODEyMTM4MWQ0ZTRmZTZjOTkwNzBhOTRiODI1Ni4u
NTIyNWY3Y2E4NjQzMmRjMGNhMjhhOWU2ZDc5N2Q2MzRkNmE1NzI1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuaApAQCAtMjYsNTEgKzI2LDM3IEBACiAjaWZuZGVmIENDVGV4dHVyZVVw
ZGF0ZXJfaAogI2RlZmluZSBDQ1RleHR1cmVVcGRhdGVyX2gKIAotI2luY2x1ZGUgIkludFJlY3Qu
aCIKLSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgIlRleHR1cmVDb3BpZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlVXBsb2Fk
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDQ1Jlc291cmNlUHJvdmlkZXI7Ci1j
bGFzcyBUZXh0dXJlQ29waWVyOwotY2xhc3MgVGV4dHVyZVVwbG9hZGVyOwotCiBjbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ1RleHR1cmVVcGRhdGVy
KTsKIHB1YmxpYzoKICAgICBDQ1RleHR1cmVVcGRhdGVyKCk7Ci0gICAgfkNDVGV4dHVyZVVwZGF0
ZXIoKTsKKyAgICB2aXJ0dWFsIH5DQ1RleHR1cmVVcGRhdGVyKCk7CiAKLSAgICB2b2lkIGFwcGVu
ZEZ1bGxVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKLSAgICB2b2lkIGFwcGVuZFBh
cnRpYWxVcGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKLSAgICB2b2lkIGFwcGVuZENv
cHkodW5zaWduZWQgc291cmNlVGV4dHVyZSwgdW5zaWduZWQgZGVzdFRleHR1cmUsIGNvbnN0IElu
dFNpemUmKTsKKyAgICB2b2lkIGFwcGVuZEZ1bGxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQYXJh
bWV0ZXJzKTsKKyAgICB2b2lkIGFwcGVuZFBhcnRpYWxVcGxvYWQoVGV4dHVyZVVwbG9hZGVyOjpQ
YXJhbWV0ZXJzKTsKKyAgICB2b2lkIGFwcGVuZENvcHkoVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVy
cyk7CiAKLSAgICBib29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CisgICAgVGV4dHVyZVVwbG9h
ZGVyOjpQYXJhbWV0ZXJzIHRha2VGaXJzdEZ1bGxVcGxvYWQoKTsKKyAgICBUZXh0dXJlVXBsb2Fk
ZXI6OlBhcmFtZXRlcnMgdGFrZUZpcnN0UGFydGlhbFVwbG9hZCgpOworICAgIFRleHR1cmVDb3Bp
ZXI6OlBhcmFtZXRlcnMgdGFrZUZpcnN0Q29weSgpOwogCi0gICAgLy8gVXBkYXRlIHNvbWUgdGV4
dHVyZXMuCi0gICAgdm9pZCB1cGRhdGUoQ0NSZXNvdXJjZVByb3ZpZGVyKiwgVGV4dHVyZUNvcGll
ciosIFRleHR1cmVVcGxvYWRlciosIHNpemVfdCBjb3VudCk7CisgICAgc2l6ZV90IGZ1bGxVcGxv
YWRTaXplKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsRW50cmllcy5zaXplKCk7IH0KKyAgICBzaXpl
X3QgcGFydGlhbFVwbG9hZFNpemUoKSBjb25zdCB7IHJldHVybiBtX3BhcnRpYWxFbnRyaWVzLnNp
emUoKTsgfQorICAgIHNpemVfdCBjb3B5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29weUVudHJp
ZXMuc2l6ZSgpOyB9CiAKLSAgICB2b2lkIGNsZWFyKCk7CisgICAgYm9vbCBoYXNNb3JlVXBkYXRl
cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7Ci0gICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmU7Ci0gICAgICAgIEludFJlY3Qg
c291cmNlUmVjdDsKLSAgICAgICAgSW50UmVjdCBkZXN0UmVjdDsKLSAgICB9OwotCi0gICAgc3Ry
dWN0IENvcHlFbnRyeSB7Ci0gICAgICAgIEludFNpemUgc2l6ZTsKLSAgICAgICAgdW5zaWduZWQg
c291cmNlVGV4dHVyZTsKLSAgICAgICAgdW5zaWduZWQgZGVzdFRleHR1cmU7Ci0gICAgfTsKLQot
ICAgIHN0YXRpYyB2b2lkIGFwcGVuZFVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QsIFZl
Y3RvcjxVcGRhdGVFbnRyeT4mKTsKLQotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7Ci0gICAgVmVj
dG9yPFVwZGF0ZUVudHJ5PiBtX2Z1bGxFbnRyaWVzOwotICAgIFZlY3RvcjxVcGRhdGVFbnRyeT4g
bV9wYXJ0aWFsRW50cmllczsKLSAgICBWZWN0b3I8Q29weUVudHJ5PiBtX2NvcHlFbnRyaWVzOwor
ICAgIERlcXVlPFRleHR1cmVVcGxvYWRlcjo6UGFyYW1ldGVycz4gbV9mdWxsRW50cmllczsKKyAg
ICBEZXF1ZTxUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnM+IG1fcGFydGlhbEVudHJpZXM7Cisg
ICAgRGVxdWU8VGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycz4gbV9jb3B5RW50cmllczsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNDgyNGZmYjkxMWM3ZTY0ZTUzMzNm
MzJjNjg1N2Q2OTU0MzBmYjQ5Zi4uNTFiN2I2OWU3MmMxZDJmZWZhMGQwN2QyM2EyMmY2ZmI4NzMw
ZTRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5o
IgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJveHkuaCIKLSNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTaGFy
ZWRHcmFwaGljc0NvbnRleHQzRC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAt
NDYsMTAgKzQ2LDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIFdlYktpdDo6V2ViU2hh
cmVkR3JhcGhpY3NDb250ZXh0M0Q7CiBuYW1lc3BhY2UgewogCi0vLyBOdW1iZXIgb2YgdGV4dHVy
ZXMgdG8gdXBkYXRlIHdpdGggZWFjaCBjYWxsIHRvCi0vLyBzY2hlZHVsZWRBY3Rpb25VcGRhdGVN
b3JlUmVzb3VyY2VzKCkuCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHRleHR1cmVVcGRhdGVzUGVyRnJh
bWUgPSA0ODsKLQogLy8gTWVhc3VyZWQgaW4gc2Vjb25kcy4KIHN0YXRpYyBjb25zdCBkb3VibGUg
Y29udGV4dFJlY3JlYXRpb25UaWNrUmF0ZSA9IDAuMDM7CiAKQEAgLTQ0OSw4ICs0NDUsNiBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkJlZ2luRnJhbWUoKQogICAgIG1fcGVu
ZGluZ0JlZ2luRnJhbWVSZXF1ZXN0ID0gYWRvcHRQdHIobmV3IEJlZ2luRnJhbWVBbmRDb21taXRT
dGF0ZSgpKTsKICAgICBtX3BlbmRpbmdCZWdpbkZyYW1lUmVxdWVzdC0+bW9ub3RvbmljRnJhbWVC
ZWdpblRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKICAgICBtX3BlbmRpbmdC
ZWdpbkZyYW1lUmVxdWVzdC0+c2Nyb2xsSW5mbyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPnByb2Nl
c3NTY3JvbGxEZWx0YXMoKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKTsKLSAgICBtX3BlbmRpbmdCZWdpbkZy
YW1lUmVxdWVzdC0+dXBkYXRlciA9IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
LmdldCgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5jb250ZW50c1RleHR1cmVz
V2VyZURlbGV0ZWQgPSBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVzV2VyZVB1
cmdlZFNpbmNlTGFzdENvbW1pdCgpOwogICAgIG1fcGVuZGluZ0JlZ2luRnJhbWVSZXF1ZXN0LT5t
ZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyA9IG1fbGF5ZXJUcmVlSG9zdEltcGwtPm1lbW9yeUFs
bG9jYXRpb25MaW1pdEJ5dGVzKCk7CiAKQEAgLTUyMSw3ICs1MTUsOCBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWUoKQogICAgIGlmIChyZXF1ZXN0LT5jb250ZW50c1RleHR1cmVzV2Vy
ZURlbGV0ZWQpCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZXZpY3RBbGxDb250ZW50VGV4dHVy
ZXMoKTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCpyZXF1ZXN0LT51cGRh
dGVyLCByZXF1ZXN0LT5tZW1vcnlBbGxvY2F0aW9uTGltaXRCeXRlcyk7CisgICAgT3duUHRyPEND
VGV4dHVyZVVwZGF0ZXI+IHVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcik7
CisgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKih1cGRhdGVyLmdldCgpKSwgcmVx
dWVzdC0+bWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXMpOwogCiAgICAgLy8gT25jZSBzaW5nbGUg
YnVmZmVyZWQgbGF5ZXJzIGFyZSBjb21taXR0ZWQsIHRoZXkgY2Fubm90IGJlIG1vZGlmaWVkIHVu
dGlsCiAgICAgLy8gdGhleSBhcmUgZHJhd24gYnkgdGhlIGltcGwgdGhyZWFkLgpAQCAtNTQzLDcg
KzUzOCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAgICAgICAgIERlYnVn
U2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2NrZWQ7CiAKICAgICAgICAg
Q0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKLSAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVh
ZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCwgJmNvbXBsZXRpb24pKTsKKyAgICAgICAgQ0NQ
cm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCwgJmNvbXBsZXRpb24s
IHVwZGF0ZXIucmVsZWFzZSgpKSk7CiAgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOwogICAgIH0K
IApAQCAtNTUxLDcgKzU0Niw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZSgpCiAg
ICAgbV9sYXllclRyZWVIb3N0LT5kaWRCZWdpbkZyYW1lKCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NUZXh0dXJl
VXBkYXRlcj4gdXBkYXRlcikKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIpOwogICAgIEFTU0VSVCghbV9jb21t
aXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwpAQCAtNTY0LDYgKzU1OSw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlv
bkV2ZW50KiBjb21wbGV0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZCA9IENDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXI6OmNyZWF0ZSh1cGRhdGVyLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5yZXNvdXJjZVBy
b3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVuZGVyZXIoKS0+dGV4dHVyZUNv
cGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRlcmVyKCktPnRleHR1cmVVcGxv
YWRlcigpKTsKICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBs
ZXRpb247CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRl
KCk7CkBAIC01ODEsOSArNTc3LDkgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQWJv
cnRlZE9uSW1wbFRocmVhZCgpCiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNl
VXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZCkKKyAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBs
VGhyZWFkKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX2N1
cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMo
KTsKIH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5EcmF3KCkKQEAgLTU5NywxOSArNTkzLDE5
IEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y2FuRHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNFX0VWRU5UMCgi
Y2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIp
OwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7Ci0gICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5yZXNvdXJjZVByb3ZpZGVyKCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmxheWVyUmVu
ZGVyZXIoKS0+dGV4dHVyZUNvcGllcigpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5sYXllclJlbmRl
cmVyKCktPnRleHR1cmVVcGxvYWRlcigpLCB0ZXh0dXJlVXBkYXRlc1BlckZyYW1lKTsKKyAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQpOworICAg
IG1fY3VycmVudFRleHR1cmVVcGRhdGVDb250cm9sbGVyT25JbXBsVGhyZWFkLT51cGRhdGVNb3Jl
VGV4dHVyZXMoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21t
aXQoKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVk
QWN0aW9uQ29tbWl0Iik7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKLSAgICBBU1NFUlQo
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCghbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworICAgIEFT
U0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZCk7CisgICAg
QVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlQ29udHJvbGxlck9uSW1wbFRocmVhZC0+aGFz
TW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkKTsKIAotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFy
KCk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQuY2xl
YXIoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKQEAgLTg2
Niw3ICs4NjIsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldEZ1bGxSb290TGF5ZXJEYW1hZ2VP
bkltcGxUaHJlYWQoKQogCiBzaXplX3QgQ0NUaHJlYWRQcm94eTo6bWF4UGFydGlhbFRleHR1cmVV
cGRhdGVzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gdGV4dHVyZVVwZGF0ZXNQZXJGcmFtZTsKKyAg
ICByZXR1cm4gQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6bWF4UGFydGlhbFRleHR1cmVVcGRh
dGVzKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBDQ0dyYXBoaWNzQ29udGV4dCogY29u
dGV4dFB0ciwgYm9vbCogcmVjcmVhdGVTdWNjZWVkZWQsIExheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMqIGNhcGFiaWxpdGllcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCA2YzAzNjg1ZWYx
ZmE2ZTAzNDM5N2UwNDE0NzBlMjFhMGMwN2FkNmM3Li5mMzIxMmU2NTZjMjM2MzU1MjNkMmI1OTg5
ZDBhZmMwMzU1OTE0YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0zOCw2ICszOCw3
IEBAIGNsYXNzIENDSW5wdXRIYW5kbGVyOwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwogY2xhc3Mg
Q0NTY2hlZHVsZXI7CiBjbGFzcyBDQ1Njb3BlZFRocmVhZFByb3h5OworY2xhc3MgQ0NUZXh0dXJl
VXBkYXRlQ29udHJvbGxlcjsKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBDQ1RocmVh
ZDsKIGNsYXNzIENDVGhyZWFkUHJveHlDb250ZXh0UmVjcmVhdGlvblRpbWVyOwpAQCAtOTksMTMg
KzEwMCwxMSBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUg
ewogICAgICAgICBCZWdpbkZyYW1lQW5kQ29tbWl0U3RhdGUoKQogICAgICAgICAgICAgOiBtb25v
dG9uaWNGcmFtZUJlZ2luVGltZSgwKQotICAgICAgICAgICAgLCB1cGRhdGVyKDApCiAgICAgICAg
IHsKICAgICAgICAgfQogCiAgICAgICAgIGRvdWJsZSBtb25vdG9uaWNGcmFtZUJlZ2luVGltZTsK
ICAgICAgICAgT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm87Ci0gICAgICAg
IENDVGV4dHVyZVVwZGF0ZXIqIHVwZGF0ZXI7CiAgICAgICAgIGJvb2wgY29udGVudHNUZXh0dXJl
c1dlcmVEZWxldGVkOwogICAgICAgICBzaXplX3QgbWVtb3J5QWxsb2NhdGlvbkxpbWl0Qnl0ZXM7
CiAgICAgfTsKQEAgLTEyNyw3ICsxMjYsNyBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IHJl
Y3Q7CiAgICAgfTsKICAgICB2b2lkIGZvcmNlQmVnaW5GcmFtZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCopOwotICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50Kik7CisgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBQYXNzT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+KTsKICAg
ICB2b2lkIGJlZ2luRnJhbWVBYm9ydGVkT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCByZXF1ZXN0
UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCByZXF1ZXN0
U3RhcnRQYWdlU2NhbGVBbmltYXRpb25PbkltcGxUaHJlYWQoSW50U2l6ZSB0YXJnZXRQb3NpdGlv
biwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IHNjYWxlLCBkb3VibGUgZHVyYXRpb25TZWMpOwpAQCAt
MTgzLDcgKzE4Miw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4gdGhyZWFk
IGlzIHdhaXRpbmcgb24gbGF5ZXJzIHRvIGJlIGRyYXduLgogICAgIENDQ29tcGxldGlvbkV2ZW50
KiBtX3RleHR1cmVBY3F1aXNpdGlvbkNvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZDsKIAotICAg
IE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZDsKKyAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcj4gbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXJPbkltcGxUaHJlYWQ7CiAKICAgICAvLyBTZXQgd2hlbiB0aGUg
bmV4dCBkcmF3IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0
aHJlYWQuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRo
cmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDVlZGVmZDI2OTE0NDU5MTll
ZWJiMWJlZjY5OGYyNGE2MTFhNTgxN2QuLjJhODM4ZDQ3NTExZTEwYjVmYTU1OGI1NmZhNDA2NTc3
MjU5ZDBiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtODcsNyArODcsNyBA
QAogICAgICAgICAgICAgJ3Rlc3RzL0NDU2Nyb2xsYmFyQW5pbWF0aW9uQ29udHJvbGxlckxpbmVh
ckZhZGVUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBs
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGVzdENvbW1vbi5oJywKLSAgICAgICAg
ICAgICd0ZXN0cy9DQ1RleHR1cmVVcGRhdGVyVGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3Rz
L0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9DQ1RpbGVkTGF5
ZXJUZXN0Q29tbW9uLmgnLAogICAgICAgICAgICAgJ3Rlc3RzL0NDVGlsZWRMYXllclRlc3RDb21t
b24uY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmNwcAppbmRleCBkOWNlYTNiYjE2YjRkOGI1N2UyNWQ5NGIxZDNmYjQ0
Y2NlMTQ5YWYzLi42ODY0OWIzNzBkMmRiYmVkYjg4N2ExNDJlMDQyN2IyZGVlNTAwMWRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIuY3BwCkBAIC00NSw3ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBh
cHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4
dHVyZSwgV2ViU2l6ZSBzaXplKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgbV91cGRhdGVyLmFw
cGVuZENvcHkoc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBzaXplKTsKKyAgICAg
ICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0dXJlLCBkZXN0
aW5hdGlvblRleHR1cmUsIHNpemUgfTsKKyAgICAgICAgbV91cGRhdGVyLmFwcGVuZENvcHkoY29w
eSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOWJjOTlmOWM4ZDc3M2YwOTVkNjU1M2FkNTg3ZjBmZDQ2NGI4ZGM2Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRhdGVDb250
cm9sbGVyVGVzdC5jcHAKQEAgLTAsMCArMSw1NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIuaCIK
KworI2luY2x1ZGUgIkNDU2NoZWR1bGVyVGVzdENvbW1vbi5oIgorI2luY2x1ZGUgIkNDVGlsZWRM
YXllclRlc3RDb21tb24uaCIKKyNpbmNsdWRlICJGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJDb21w
b3NpdG9yLmgiCisjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVGhyZWFkLmgiCisK
KyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdFRlc3RzOwordXNpbmcgdGVzdGluZzo6VGVzdDsKKworCituYW1lc3BhY2Ug
eworCitjb25zdCBpbnQga0ZsdXNoUGVyaW9kRnVsbCA9IDQ7Citjb25zdCBpbnQga0ZsdXNoUGVy
aW9kUGFydGlhbCA9IGtGbHVzaFBlcmlvZEZ1bGw7CisKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZUNv
bnRyb2xsZXJUZXN0OworCitjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3Qg
OiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1YmxpYzoKKyAgICBXZWJHcmFw
aGljc0NvbnRleHQzREZvclVwbG9hZFRlc3QoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3Qg
KnRlc3QpCisgICAgICAgIDogbV90ZXN0KHRlc3QpCisgICAgICAgICwgbV9zdXBwb3J0U2hhbGxv
d0ZsdXNoKHRydWUpCisgICAgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZmx1c2godm9pZCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNoYWxsb3dGbHVzaENIUk9NSVVNKHZvaWQpOworICAgIHZpcnR1YWwg
R3JHTEludGVyZmFjZSogb25DcmVhdGVHckdMSW50ZXJmYWNlKCkgeyByZXR1cm4gMDsgfQorCisg
ICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdHQzNEZW51bSBuYW1lKQorICAgIHsKKyAg
ICAgICAgaWYgKG1fc3VwcG9ydFNoYWxsb3dGbHVzaCkKKyAgICAgICAgICAgIHJldHVybiBXZWJT
dHJpbmcoIkdMX0NIUk9NSVVNX3NoYWxsb3dfZmx1c2giKTsKKyAgICAgICAgcmV0dXJuIFdlYlN0
cmluZygiIik7CisgICAgfQorCitwcml2YXRlOgorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xs
ZXJUZXN0KiBtX3Rlc3Q7CisgICAgYm9vbCBtX3N1cHBvcnRTaGFsbG93Rmx1c2g7Cit9OworCisK
K2NsYXNzIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QgOiBwdWJsaWMgRmFrZVRleHR1cmVV
cGxvYWRlciB7CitwdWJsaWM6CisgICAgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdChDQ1Rl
eHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCAqdGVzdCkgOiBtX3Rlc3QodGVzdCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGVuZFVwbG9hZHMoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShX
ZWJDb3JlOjpDQ1Jlc291cmNlUHJvdmlkZXIqLCBQYXJhbWV0ZXJzKSBPVkVSUklERTsKKworcHJp
dmF0ZToKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCogbV90ZXN0OworfTsKKwor
Y2xhc3MgVGV4dHVyZUZvclVwbG9hZFRlc3QgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSB7CitwdWJsaWM6CisgICAgVGV4dHVyZUZvclVwbG9hZFRlc3QoKSA6IExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUoYWRvcHRQdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+KDApKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgeyB9Cit9Owor
CisKK2NsYXNzIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0IDogcHVibGljIFRlc3Qgewor
cHVibGljOgorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0KCkKKyAgICA6IG1fdXBk
YXRlcihhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcikpCisgICAgLCBtX3VwbG9hZGVyKHRo
aXMpCisgICAgLCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKDApCisgICAgLCBtX3BhcnRpYWxD
b3VudEV4cGVjdGVkKDApCisgICAgLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCgwKQorICAg
ICwgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSgwKQorICAgICwgbV9udW1CZWdpblVwbG9hZHMo
MCkKKyAgICAsIG1fbnVtRW5kVXBsb2FkcygwKQorICAgICwgbV9udW1Db25zZWN1dGl2ZUZsdXNo
ZXMoMCkKKyAgICAsIG1fbnVtRGFuZ2xpbmdVcGxvYWRzKDApCisgICAgLCBtX251bVRvdGFsVXBs
b2FkcygwKQorICAgICwgbV9udW1Ub3RhbEZsdXNoZXMoMCkKKyAgICAsIG1fbnVtUHJldmlvdXNV
cGxvYWRzKDApCisgICAgLCBtX251bVByZXZpb3VzRmx1c2hlcygwKQorICAgIHsgfQorCitwdWJs
aWM6CisgICAgdm9pZCBvbkZsdXNoKCkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIGZvciBiYWNr
LXRvLWJhY2sgZmx1c2hlcy4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fbnVtQ29uc2VjdXRpdmVG
bHVzaGVzKSA8PCAiQmFjay10by1iYWNrIGZsdXNoZXMgZGV0ZWN0ZWQuIjsKKworICAgICAgICAv
LyBDaGVjayBmb3IgcHJlbWF0dXJlIGZsdXNoZXMKKyAgICAgICAgaWYgKG1fbnVtUHJldmlvdXNV
cGxvYWRzICE9IG1fbWF4VXBsb2FkQ291bnRQZXJVcGRhdGUpIHsKKyAgICAgICAgICAgIGlmICht
X251bVRvdGFsVXBsb2FkcyA8IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpCisgICAgICAgICAg
ICAgICAgRVhQRUNUX0dFKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8
PCAiUHJlbWF0dXJlIGZsdXNoIGRldGVjdGVkIGluIGZ1bGwgdXBsb2Fkcy4iOworICAgICAgICAg
ICAgZWxzZSBpZiAobV9udW1Ub3RhbFVwbG9hZHMgPiBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVk
ICYmIG1fbnVtVG90YWxVcGxvYWRzIDwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpCisgICAg
ICAgICAgICAgICAgRVhQRUNUX0dFKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RQ
YXJ0aWFsKSA8PCAiUHJlbWF0dXJlIGZsdXNoIGRldGVjdGVkIGluIHBhcnRpYWwgdXBsb2Fkcy4i
OworICAgICAgICB9CisKKyAgICAgICAgbV9udW1EYW5nbGluZ1VwbG9hZHMgPSAwOworICAgICAg
ICBtX251bUNvbnNlY3V0aXZlRmx1c2hlcysrOworICAgICAgICBtX251bVRvdGFsRmx1c2hlcysr
OworICAgICAgICBtX251bVByZXZpb3VzRmx1c2hlcysrOworICAgIH0KKworICAgIHZvaWQgb25C
ZWdpblVwbG9hZHMoKQorICAgIHsKKyAgICAgICAgbV9udW1QcmV2aW91c0ZsdXNoZXMgPSAwOwor
ICAgICAgICBtX251bVByZXZpb3VzVXBsb2FkcyA9IDA7CisgICAgICAgIG1fbnVtQmVnaW5VcGxv
YWRzKys7CisgICAgfQorCisgICAgdm9pZCBvblVwbG9hZCgpCisgICAgeworICAgICAgICAvLyBD
aGVjayBmb3IgdG9vIG1hbnkgY29uc2VjdXRpdmUgdXBsb2FkcworICAgICAgICBpZiAobV9udW1U
b3RhbFVwbG9hZHMgPCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkKQorICAgICAgICAgICAgRVhQ
RUNUX0xUKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RGdWxsKSA8PCAiVG9vIG1h
bnkgY29uc2VjdXRpdmUgZnVsbCB1cGxvYWRzIGRldGVjdGVkLiI7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIEVYUEVDVF9MVChtX251bURhbmdsaW5nVXBsb2Fkcywga0ZsdXNoUGVyaW9kUGFy
dGlhbCkgPDwgIlRvbyBtYW55IGNvbnNlY3V0aXZlIHBhcnRpYWwgdXBsb2FkcyBkZXRlY3RlZC4i
OworCisgICAgICAgIG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzID0gMDsKKyAgICAgICAgbV9udW1E
YW5nbGluZ1VwbG9hZHMrKzsKKyAgICAgICAgbV9udW1Ub3RhbFVwbG9hZHMrKzsKKyAgICAgICAg
bV9udW1QcmV2aW91c1VwbG9hZHMrKzsKKyAgICB9CisKKyAgICB2b2lkIG9uRW5kVXBsb2Fkcygp
CisgICAgeworICAgICAgICBFWFBFQ1RfRVEoMCwgbV9udW1EYW5nbGluZ1VwbG9hZHMpIDw8ICJM
YXN0IHVwbG9hZCB3YXNuJ3QgZm9sbG93ZWQgYnkgYSBmbHVzaC4iOworCisgICAgICAgIC8vIE5v
dGU6IFRoZSBtX251bVRvdGFsVXBsb2FkcyAhPSBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkIGNv
bXBhcmlzb24KKyAgICAgICAgLy8gYWxsb3dzIGZvciB0aGUgcXVvdGEgbm90IHRvIGJlIGhpdCBp
biB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgdHJhc2l0aW9uaW5nCisgICAgICAgIC8vIGZyb20gZnVs
bCB1cGxvYWRzIHRvIHBhcnRpYWwgdXBsb2Fkcy4KKyAgICAgICAgaWYgKG1fbnVtVG90YWxVcGxv
YWRzICE9IG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkICYmIG1fbnVtVG90YWxVcGxvYWRzICE9
IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShtX21h
eFVwbG9hZENvdW50UGVyVXBkYXRlLCBtX251bVByZXZpb3VzVXBsb2FkcykKKyAgICAgICAgICAg
ICAgICA8PCAiZW5kVXBsb2FkKCkgd2FzIGNhbGxlZCB3aGVuIHRoZXJlIGFyZSB0ZXh0dXJlcyB0
byB1cGxvYWQsIGJ1dCB0aGUgdXBsb2FkIHF1b3RhIGhhc24ndCBiZWVuIGZpbGxlZC4iOworICAg
ICAgICB9CisKKyAgICAgICAgbV9udW1FbmRVcGxvYWRzKys7CisgICAgfQorCitwcm90ZWN0ZWQ6
CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAgICB7CisgICAgICAgIE93blB0cjxXZWJUaHJl
YWQ+IHRocmVhZDsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSh0aHJlYWQuZ2V0
KCkpOworCisgICAgICAgIG1fY29udGV4dCA9IENDR3JhcGhpY3NDb250ZXh0OjpjcmVhdGUzRCgK
KyAgICAgICAgICAgICAgICAgICAgYWRvcHRQdHIobmV3IFdlYkdyYXBoaWNzQ29udGV4dDNERm9y
VXBsb2FkVGVzdCh0aGlzKSkpOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKKyAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyID0gQ0NSZXNvdXJjZVByb3ZpZGVy
OjpjcmVhdGUobV9jb250ZXh0LmdldCgpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKQorICAgIHsKKyAgICAgICAgV2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKKyAgICB9
CisKKyAgICB2b2lkIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKGludCBjb3VudCkKKyAgICB7
CisgICAgICAgIG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQgKz0gY291bnQ7CisgICAgICAgIG1f
dG90YWxVcGxvYWRDb3VudEV4cGVjdGVkICs9IGNvdW50OworCisgICAgICAgIGNvbnN0IEludFJl
Y3QgcmVjdCgwLCAwLCAzMDAsIDE1MCk7CisgICAgICAgIGNvbnN0IFRleHR1cmVVcGxvYWRlcjo6
UGFyYW1ldGVycyB1cGxvYWQgPSB7ICZtX3RleHR1cmUsIHJlY3QsIHJlY3QgfTsKKyAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgbV91cGRhdGVyLT5h
cHBlbmRGdWxsVXBsb2FkKHVwbG9hZCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRQYXJ0aWFs
VXBsb2Fkc1RvVXBkYXRlcihpbnQgY291bnQpCisgICAgeworICAgICAgICBtX3BhcnRpYWxDb3Vu
dEV4cGVjdGVkICs9IGNvdW50OworICAgICAgICBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCAr
PSBjb3VudDsKKworICAgICAgICBjb25zdCBJbnRSZWN0IHJlY3QoMCwgMCwgMTAwLCAxMDApOwor
ICAgICAgICBjb25zdCBUZXh0dXJlVXBsb2FkZXI6OlBhcmFtZXRlcnMgdXBsb2FkID0geyAmbV90
ZXh0dXJlLCByZWN0LCByZWN0IH07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7
IGkrKykKKyAgICAgICAgICAgIG1fdXBkYXRlci0+YXBwZW5kUGFydGlhbFVwbG9hZCh1cGxvYWQp
OworICAgIH0KKworICAgIHZvaWQgc2V0TWF4VXBsb2FkQ291bnRQZXJVcGRhdGUoaW50IGNvdW50
KQorICAgIHsKKyAgICAgICAgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSA9IGNvdW50OworICAg
IH0KKworcHJvdGVjdGVkOgorICAgIC8vIENsYXNzZXMgcmVxdWlyZWQgdG8gaW50ZXJhY3QgYW5k
IHRlc3QgdGhlIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXIKKyAgICBPd25QdHI8Q0NHcmFwaGlj
c0NvbnRleHQ+IG1fY29udGV4dDsKKyAgICBPd25QdHI8Q0NSZXNvdXJjZVByb3ZpZGVyPiBtX3Jl
c291cmNlUHJvdmlkZXI7CisgICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fdXBkYXRlcjsK
KyAgICBUZXh0dXJlRm9yVXBsb2FkVGVzdCBtX3RleHR1cmU7CisgICAgRmFrZVRleHR1cmVDb3Bp
ZXIgbV9jb3BpZXI7CisgICAgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdCBtX3VwbG9hZGVy
OworCisgICAgLy8gUHJvcGVydGllcyAvIGV4cGVjdGF0aW9ucyBvZiB0aGlzIHRlc3QKKyAgICBp
bnQgbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZDsKKyAgICBpbnQgbV9wYXJ0aWFsQ291bnRFeHBl
Y3RlZDsKKyAgICBpbnQgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQ7CisgICAgaW50IG1fbWF4
VXBsb2FkQ291bnRQZXJVcGRhdGU7CisKKyAgICAvLyBEeW5hbWljIHByb3BlcnRpZXMgb2YgdGhp
cyB0ZXN0CisgICAgaW50IG1fbnVtQmVnaW5VcGxvYWRzOworICAgIGludCBtX251bUVuZFVwbG9h
ZHM7CisgICAgaW50IG1fbnVtQ29uc2VjdXRpdmVGbHVzaGVzOworICAgIGludCBtX251bURhbmds
aW5nVXBsb2FkczsKKyAgICBpbnQgbV9udW1Ub3RhbFVwbG9hZHM7CisgICAgaW50IG1fbnVtVG90
YWxGbHVzaGVzOworICAgIGludCBtX251bVByZXZpb3VzVXBsb2FkczsKKyAgICBpbnQgbV9udW1Q
cmV2aW91c0ZsdXNoZXM7Cit9OworCit2b2lkIFdlYkdyYXBoaWNzQ29udGV4dDNERm9yVXBsb2Fk
VGVzdDo6Zmx1c2godm9pZCkKK3sKKyAgICBtX3Rlc3QtPm9uRmx1c2goKTsKK30KKwordm9pZCBX
ZWJHcmFwaGljc0NvbnRleHQzREZvclVwbG9hZFRlc3Q6OnNoYWxsb3dGbHVzaENIUk9NSVVNKHZv
aWQpCit7CisgICAgbV90ZXN0LT5vbkZsdXNoKCk7Cit9CisKK3ZvaWQgVGV4dHVyZVVwbG9hZGVy
Rm9yVXBsb2FkVGVzdDo6YmVnaW5VcGxvYWRzKCkKK3sKKyAgICBtX3Rlc3QtPm9uQmVnaW5VcGxv
YWRzKCk7Cit9CisKK3ZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6ZW5kVXBsb2Fk
cygpCit7CisgICAgbV90ZXN0LT5vbkVuZFVwbG9hZHMoKTsKK30KKwordm9pZCBUZXh0dXJlVXBs
b2FkZXJGb3JVcGxvYWRUZXN0Ojp1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92
aWRlciosIFBhcmFtZXRlcnMpCit7CisgICAgbV90ZXN0LT5vblVwbG9hZCgpOworfQorCisKKy8v
IFpFUk8gVVBMT0FEUyBURVNUUworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0
LCBaZXJvVXBsb2FkcykKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKKyAg
ICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigwKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVD
b250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2Nv
cGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhw
ZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDAsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBF
Q1RfRVEoMCwgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMCwgbV9udW1QcmV2aW91
c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUSgwLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisK
KworLy8gT05FIFVQTE9BRCBURVNUUworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJU
ZXN0LCBPbmVGdWxsVXBsb2FkKQoreworICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDEp
OworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDApOworICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6
OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91
cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisK
KyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBt
X251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251bVByZXZpb3VzRmx1c2hlcyk7
CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKworVEVTVF9GKEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBPbmVQYXJ0aWFsVXBsb2FkKQoreworICAgIGFw
cGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDApOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9V
cGRhdGVyKDEpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAg
IENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3Rv
dGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVw
bG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9F
USgxLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlv
dXNVcGxvYWRzKTsKK30KKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBP
bmVGdWxsT25lUGFydGlhbFVwbG9hZCkKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRl
cigxKTsKKyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigxKTsKKyAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwg
Jm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQp
OworCisgICAgLy8gV2UgZXhwZWN0IHRoZSBmdWxsIHVwbG9hZHMgdG8gYmUgZm9sbG93ZWQgYnkg
YSBmbHVzaAorICAgIC8vIGJlZm9yZSB0aGUgcGFydGlhbCB1cGxvYWRzIGJlZ2luLgorICAgIEVY
UEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5k
VXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBF
WFBFQ1RfRVEoMiwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCisKKy8vIE5PIFJFTUFJTkRF
UiBURVNUUworLy8gVGhpcyBjbGFzcyBvZiB0ZXN0cyB1cGxvYWQgYSBudW1iZXIgb2YgdGV4dHVy
ZXMgdGhhdCBpcyBhIG11bHRpcGxlIG9mIHRoZSBmbHVzaCBwZXJpb2QuCitjb25zdCBpbnQgZnVs
bFVwbG9hZEZsdXNoTXVsdGlwbGVyID0gNzsKK2NvbnN0IGludCBmdWxsTm9SZW1haW5kZXJDb3Vu
dCA9IGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciAqIGtGbHVzaFBlcmlvZEZ1bGw7CisKK2NvbnN0
IGludCBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIgPSAxMTsKK2NvbnN0IGludCBwYXJ0aWFs
Tm9SZW1haW5kZXJDb3VudCA9IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciAqIGtGbHVzaFBl
cmlvZFBhcnRpYWw7CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFu
eUZ1bGxVcGxvYWRzTm9SZW1haW5kZXIpCit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0
ZXIoZnVsbE5vUmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRh
dGVyKDApOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIEND
VGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRl
ci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFs
VXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9h
ZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUShm
dWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBF
Q1RfRVEoZnVsbE5vUmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKK30KKwor
VEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBNYW55UGFydGlhbFVwbG9hZHNO
b1JlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKKyAgICBh
cHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCk7Cisg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBk
YXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAm
bV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3Vu
dEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAg
RVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKHBhcnRpYWxVcGxv
YWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworICAgIEVYUEVDVF9FUShw
YXJ0aWFsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNU
X0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3QsIE1hbnlGdWxsTWFueVBhcnRpYWxVcGxv
YWRzTm9SZW1haW5kZXIpCit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE5v
UmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRp
YWxOb1JlbWFpbmRlckNvdW50KTsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jl
c291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5n
ZXQoKSwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQpOworCisgICAgRVhQRUNUX0VRKDEsIG1f
bnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKKyAg
ICBFWFBFQ1RfRVEoZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyICsgcGFydGlhbFVwbG9hZEZsdXNo
TXVsdGlwbGVyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisgICAgRVhQRUNUX0VRKGZ1bGxOb1Jl
bWFpbmRlckNvdW50ICsgcGFydGlhbE5vUmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxv
YWRzKTsKK30KKworCisvLyBNSU4vTUFYIFJFTUFJTkRFUiBURVNUUworLy8gVGhpcyBjbGFzcyBv
ZiB0ZXN0cyBtaXggYW5kIG1hdGNoIHVwbG9hZGluZyAxIG1vcmUgYW5kIDEgbGVzcyB0ZXh0dXJl
CisvLyB0aGFuIGEgbXVsdGlwbGUgb2YgdGhlIGZsdXNoIHBlcmlvZC4KKworY29uc3QgaW50IGZ1
bGxNaW5SZW1haW5kZXJDb3VudCA9IGZ1bGxOb1JlbWFpbmRlckNvdW50ICsgMTsKK2NvbnN0IGlu
dCBmdWxsTWF4UmVtYWluZGVyQ291bnQgPSBmdWxsTm9SZW1haW5kZXJDb3VudCAtIDE7Citjb25z
dCBpbnQgcGFydGlhbE1pblJlbWFpbmRlckNvdW50ID0gcGFydGlhbE5vUmVtYWluZGVyQ291bnQg
KyAxOworY29uc3QgaW50IHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCA9IHBhcnRpYWxOb1JlbWFp
bmRlckNvdW50IC0gMTsKKworVEVTVF9GKENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXJUZXN0LCBN
YW55RnVsbEFuZFBhcnRpYWxNaW5SZW1haW5kZXIpCit7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNU
b1VwZGF0ZXIoZnVsbE1pblJlbWFpbmRlckNvdW50KTsKKyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fk
c1RvVXBkYXRlcihwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQpOworICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVw
ZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxv
YWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7CisKKyAg
ICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251
bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBw
YXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyAyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Cisg
ICAgRVhQRUNUX0VRKGZ1bGxNaW5SZW1haW5kZXJDb3VudCArIHBhcnRpYWxNaW5SZW1haW5kZXJD
b3VudCwgbV9udW1QcmV2aW91c1VwbG9hZHMpOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRl
Q29udHJvbGxlclRlc3QsIE1hbnlGdWxsQW5kUGFydGlhbFVwbG9hZHNNYXhSZW1haW5kZXIpCit7
CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE1heFJlbWFpbmRlckNvdW50KTsK
KyAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTWF4UmVtYWluZGVyQ291
bnQpOworICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgIENDVGV4
dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5n
ZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBtX3RvdGFsVXBs
b2FkQ291bnRFeHBlY3RlZCk7CisKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMp
OworICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOworICAgIEVYUEVDVF9FUShmdWxs
VXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVt
UHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbE1heFJlbWFpbmRlckNvdW50ICsg
cGFydGlhbE1heFJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisKK1RF
U1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgTWFueUZ1bGxNaW5SZW1haW5kZXJN
YW55UGFydGlhbE1heFJlbWFpbmRlcikKK3sKKyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRl
cihmdWxsTWluUmVtYWluZGVyQ291bnQpOworICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRh
dGVyKHBhcnRpYWxNYXhSZW1haW5kZXJDb3VudCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4
dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBt
X3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVD
VF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBs
b2Fkcyk7CisgICAgRVhQRUNUX0VRKChmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIrMSkgKyBwYXJ0
aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBF
Q1RfRVEoZnVsbE1pblJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1heFJlbWFpbmRlckNvdW50LCBt
X251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9s
bGVyVGVzdCwgTWFueUZ1bGxNYXhSZW1haW5kZXJNYW55UGFydGlhbE1pblJlbWFpbmRlcikKK3sK
KyAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVyQ291bnQpOwor
ICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJDb3Vu
dCk7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgQ0NUZXh0
dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdl
dCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3VwZGF0ZXIuZ2V0KCksIG1fdG90YWxVcGxv
YWRDb3VudEV4cGVjdGVkKTsKKworICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7
CisgICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKGZ1bGxV
cGxvYWRGbHVzaE11bHRpcGxlciArIChwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIrMSksIG1f
bnVtUHJldmlvdXNGbHVzaGVzKTsKKyAgICBFWFBFQ1RfRVEoZnVsbE1heFJlbWFpbmRlckNvdW50
ICsgcGFydGlhbE1pblJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Cit9CisK
KworLy8gTVVMVElQTEUgVVBEQVRFIFRFU1RTCisvLyBUaGVzZSB0ZXN0cyBhdHRlbXB0IHRvIHVw
bG9hZCB0b28gbWFueSB0ZXh0dXJlcyBhdCBvbmNlLCByZXF1aXJpbmcKKy8vIG11bHRpcGxlIGNh
bGxzIHRvIHVwZGF0ZSgpLgorCitpbnQgZXhwZWN0ZWRGbHVzaGVzKGludCB1cGxvYWRzLCBpbnQg
Zmx1c2hQZXJpb2QpCit7CisgICAgcmV0dXJuICh1cGxvYWRzICsgZmx1c2hQZXJpb2QgLSAxKSAv
IGZsdXNoUGVyaW9kOworfQorCitURVNUX0YoQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlclRlc3Qs
IFRyaXBsZVVwZGF0ZUZpbmFsVXBkYXRlRnVsbEFuZFBhcnRpYWwpCit7CisgICAgY29uc3QgaW50
IGtNYXhVcGxvYWRzUGVyVXBkYXRlID0gNDA7CisgICAgY29uc3QgaW50IGtGdWxsVXBsb2FkcyA9
IDEwMDsKKyAgICBjb25zdCBpbnQga1BhcnRpYWxVcGxvYWRzID0gMjA7CisKKyAgICBpbnQgZXhw
ZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSAwOworICAgIGludCBleHBlY3RlZFByZXZpb3VzVXBsb2Fk
cyA9IDA7CisKKyAgICBzZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0ZShrTWF4VXBsb2Fkc1BlclVw
ZGF0ZSk7CisgICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoa0Z1bGxVcGxvYWRzKTsKKyAg
ICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihrUGFydGlhbFVwbG9hZHMpOworCisgICAg
Ly8gRmlyc3QgdXBkYXRlICg0MCBmdWxsKQorICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOworICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVz
KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRh
dGVyLmdldCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgbV9u
dW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOworCisg
ICAgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZsdXNoZXMoa01heFVwbG9hZHNQ
ZXJVcGRhdGUsIGtGbHVzaFBlcmlvZEZ1bGwpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZp
b3VzRmx1c2hlcywgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworCisgICAgZXhwZWN0ZWRQcmV2aW91
c1VwbG9hZHMgPSBrTWF4VXBsb2Fkc1BlclVwZGF0ZTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQ
cmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKKworICAgIC8vIFNlY29uZCB1
cGRhdGUgKDQwIGZ1bGwpCisgICAgQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlcjo6dXBkYXRlVGV4
dHVyZXMobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBt
X3VwZGF0ZXIuZ2V0KCksIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKworICAgIEVYUEVDVF9FUSgy
LCBtX251bUJlZ2luVXBsb2Fkcyk7CisgICAgRVhQRUNUX0VRKDIsIG1fbnVtRW5kVXBsb2Fkcyk7
CisKKyAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVjdGVkRmx1c2hlcyhrTWF4VXBs
b2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVk
UHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7CisKKyAgICBleHBlY3RlZFBy
ZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOworICAgIEVYUEVDVF9FUShleHBl
Y3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9hZHMpOworCisgICAgLy8gVGhp
cmQgdXBkYXRlICgyMCBmdWxsLCAyMCBwYXJ0aWFsKQorICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRy
b2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVy
LCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisK
KyAgICBFWFBFQ1RfRVEoMywgbV9udW1CZWdpblVwbG9hZHMpOworICAgIEVYUEVDVF9FUSgzLCBt
X251bUVuZFVwbG9hZHMpOworCisgICAgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBleHBlY3Rl
ZEZsdXNoZXMoa0Z1bGxVcGxvYWRzLWtNYXhVcGxvYWRzUGVyVXBkYXRlKjIsIGtGbHVzaFBlcmlv
ZEZ1bGwpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkRmx1c2hlcyhr
UGFydGlhbFVwbG9hZHMsIGtGbHVzaFBlcmlvZFBhcnRpYWwpOworICAgIEVYUEVDVF9FUShleHBl
Y3RlZFByZXZpb3VzRmx1c2hlcywgbV9udW1QcmV2aW91c0ZsdXNoZXMpOworCisgICAgZXhwZWN0
ZWRQcmV2aW91c1VwbG9hZHMgPSAoa0Z1bGxVcGxvYWRzLWtNYXhVcGxvYWRzUGVyVXBkYXRlKjIp
K2tQYXJ0aWFsVXBsb2FkczsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMs
IG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKKworICAgIC8vIEZpbmFsIHNhbml0eSBjaGVja3MKKyAg
ICBFWFBFQ1RfRVEoa0Z1bGxVcGxvYWRzICsga1BhcnRpYWxVcGxvYWRzLCBtX251bVRvdGFsVXBs
b2Fkcyk7Cit9CisKK1RFU1RfRihDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyVGVzdCwgVHJpcGxl
VXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0aWFsKQoreworICAgIGNvbnN0IGludCBrTWF4VXBsb2Fk
c1BlclVwZGF0ZSA9IDQwOworICAgIGNvbnN0IGludCBrRnVsbFVwbG9hZHMgPSA3MDsKKyAgICBj
b25zdCBpbnQga1BhcnRpYWxVcGxvYWRzID0gMzA7CisKKyAgICBpbnQgZXhwZWN0ZWRQcmV2aW91
c0ZsdXNoZXMgPSAwOworICAgIGludCBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IDA7CisKKyAg
ICBzZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0ZShrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisgICAg
YXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoa0Z1bGxVcGxvYWRzKTsKKyAgICBhcHBlbmRQYXJ0
aWFsVXBsb2Fkc1RvVXBkYXRlcihrUGFydGlhbFVwbG9hZHMpOworCisgICAgLy8gRmlyc3QgdXBk
YXRlICg0MCBmdWxsKQorICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwor
ICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV91cGRhdGVyLmdldCgpLCBr
TWF4VXBsb2Fkc1BlclVwZGF0ZSk7CisKKyAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9h
ZHMpOworICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOworCisgICAgZXhwZWN0ZWRQ
cmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZsdXNoZXMoa01heFVwbG9hZHNQZXJVcGRhdGUsIGtG
bHVzaFBlcmlvZEZ1bGwpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzRmx1c2hlcywg
bV9udW1QcmV2aW91c0ZsdXNoZXMpOworCisgICAgZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMgPSBr
TWF4VXBsb2Fkc1BlclVwZGF0ZTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c1VwbG9h
ZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKKworICAgIC8vIFNlY29uZCB1cGRhdGUgKDMwIGZ1
bGwsIG9wdGlvbmFsbHkgMTAgcGFydGlhbCkKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVy
Ojp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1f
dXBsb2FkZXIsIG1fdXBkYXRlci5nZXQoKSwga01heFVwbG9hZHNQZXJVcGRhdGUpOworCisgICAg
RVhQRUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMiwgbV9udW1F
bmRVcGxvYWRzKTsKKyAgICBFWFBFQ1RfTEUobV9udW1QcmV2aW91c1VwbG9hZHMsIGtNYXhVcGxv
YWRzUGVyVXBkYXRlKTsKKyAgICAvLyBCZSBsZW5pZW50IG9uIHRoZSBleGFjdCBudW1iZXIgb2Yg
Zmx1c2hlcyBoZXJlLCBhcyB0aGUgbnVtYmVyIG9mIGZsdXNoZXMKKyAgICAvLyB3aWxsIGRlcGVu
ZCBvbiB3aGV0aGVyIHNvbWUgcGFydGlhbCB1cGxvYWRzIHdlcmUgcGVyZm9ybWVkLgorICAgIC8v
IG9uRmx1c2goKSwgb25VcGxvYWQoKSwgYW5kIG9uRW5kVXBsb2FkKCkgd2lsbCBkbyBiYXNpYyBm
bHVzaCBjaGVja3MgZm9yIHVzIGFueXdheS4KKworICAgIC8vIFRoaXJkIHVwZGF0ZSAoMzAgcGFy
dGlhbCBPUiAyMCBwYXJ0aWFsIGlmIDEwIHBhcnRpYWwgdXBsb2FkZWQgaW4gc2Vjb25kIHVwZGF0
ZSkKKyAgICBDQ1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdXBkYXRlci5nZXQo
KSwga01heFVwbG9hZHNQZXJVcGRhdGUpOworCisgICAgRVhQRUNUX0VRKDMsIG1fbnVtQmVnaW5V
cGxvYWRzKTsKKyAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxvYWRzKTsKKyAgICBFWFBFQ1Rf
TEUobV9udW1QcmV2aW91c1VwbG9hZHMsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsKKyAgICAvLyBC
ZSBsZW5pZW50IG9uIHRoZSBleGFjdCBudW1iZXIgb2YgZmx1c2hlcyBoZXJlIGFzIHdlbGwuCisK
KyAgICAvLyBGaW5hbCBzYW5pdHkgY2hlY2tzCisgICAgRVhQRUNUX0VRKGtGdWxsVXBsb2FkcyAr
IGtQYXJ0aWFsVXBsb2FkcywgbV9udW1Ub3RhbFVwbG9hZHMpOworfQorCit9IC8vIG5hbWVzcGFj
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RleHR1cmVVcGRh
dGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVwZGF0
ZXJUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZiMzVjMDQ4Y2FiMDIx
ZjBmOTJjZjQ0OGI2ZTJiZTUzNjQxODEwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDVGV4dHVyZVVw
ZGF0ZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVy
LmgiCi0KLSNpbmNsdWRlICJDQ1RpbGVkTGF5ZXJUZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgiCi0jaW5jbHVkZSAiV2ViQ29tcG9zaXRvci5oIgotI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIgLy8gRm9yIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZAotI2luY2x1ZGUg
InBsYXRmb3JtL1dlYlRocmVhZC5oIgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXRUZXN0czsKLXVzaW5nIHRlc3Rp
bmc6OlRlc3Q7Ci0KLQotbmFtZXNwYWNlIHsKLQotY29uc3QgaW50IGtGbHVzaFBlcmlvZEZ1bGwg
PSA0OwotY29uc3QgaW50IGtGbHVzaFBlcmlvZFBhcnRpYWwgPSBrRmx1c2hQZXJpb2RGdWxsOwot
Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyVGVzdDsKLQotY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0
M0RGb3JVcGxvYWRUZXN0IDogcHVibGljIEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7Ci1wdWJs
aWM6Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0KENDVGV4dHVyZVVwZGF0
ZXJUZXN0ICp0ZXN0KQotICAgICAgICA6IG1fdGVzdCh0ZXN0KQotICAgICAgICAsIG1fc3VwcG9y
dFNoYWxsb3dGbHVzaCh0cnVlKQotICAgIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGZsdXNoKHZv
aWQpOwotICAgIHZpcnR1YWwgdm9pZCBzaGFsbG93Rmx1c2hDSFJPTUlVTSh2b2lkKTsKLSAgICB2
aXJ0dWFsIEdyR0xJbnRlcmZhY2UqIG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpIHsgcmV0dXJuIDA7
IH0KLQotICAgIHZpcnR1YWwgV2ViU3RyaW5nIGdldFN0cmluZyhXR0MzRGVudW0gbmFtZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChtX3N1cHBvcnRTaGFsbG93Rmx1c2gpCi0gICAgICAgICAgICByZXR1
cm4gV2ViU3RyaW5nKCJHTF9DSFJPTUlVTV9zaGFsbG93X2ZsdXNoIik7Ci0gICAgICAgIHJldHVy
biBXZWJTdHJpbmcoIiIpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVy
VGVzdCogbV90ZXN0OwotICAgIGJvb2wgbV9zdXBwb3J0U2hhbGxvd0ZsdXNoOwotfTsKLQotCi1j
bGFzcyBUZXh0dXJlVXBsb2FkZXJGb3JVcGxvYWRUZXN0IDogcHVibGljIEZha2VUZXh0dXJlVXBs
b2FkZXIgewotcHVibGljOgotICAgIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3QoQ0NUZXh0
dXJlVXBkYXRlclRlc3QgKnRlc3QpIDogbV90ZXN0KHRlc3QpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGJlZ2luVXBsb2FkcygpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBlbmRVcGxvYWRz
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHVwbG9hZFRleHR1cmUoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6Q0NSZXNvdXJjZVByb3ZpZGVyKiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBXZWJDb3JlOjpJbnRSZWN0IHNvdXJjZVJlY3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgT1ZFUlJJ
REU7Ci0KLXByaXZhdGU6Ci0gICAgQ0NUZXh0dXJlVXBkYXRlclRlc3QqIG1fdGVzdDsKLX07Ci0K
LQotY2xhc3MgVGV4dHVyZUZvclVwbG9hZFRlc3QgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7Ci1wdWJsaWM6Ci0gICAgVGV4dHVyZUZvclVwbG9hZFRlc3QoKSA6IExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUoYWRvcHRQdHI8Q0NQcmlvcml0aXplZFRleHR1cmU+KDAp
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChDQ1Jlc291cmNlUHJvdmlkZXIqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgeyB9Ci19
OwotCi0KLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXJUZXN0IDogcHVibGljIFRlc3QgewotcHVibGlj
OgotICAgIENDVGV4dHVyZVVwZGF0ZXJUZXN0KCkKLSAgICA6IG1fdXBsb2FkZXIodGhpcykKLSAg
ICAsIG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQoMCkKLSAgICAsIG1fcGFydGlhbENvdW50RXhw
ZWN0ZWQoMCkKLSAgICAsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKDApCi0gICAgLCBtX21h
eFVwbG9hZENvdW50UGVyVXBkYXRlKDApCi0gICAgLCBtX251bUJlZ2luVXBsb2FkcygwKQotICAg
ICwgbV9udW1FbmRVcGxvYWRzKDApCi0gICAgLCBtX251bUNvbnNlY3V0aXZlRmx1c2hlcygwKQot
ICAgICwgbV9udW1EYW5nbGluZ1VwbG9hZHMoMCkKLSAgICAsIG1fbnVtVG90YWxVcGxvYWRzKDAp
Ci0gICAgLCBtX251bVRvdGFsRmx1c2hlcygwKQotICAgICwgbV9udW1QcmV2aW91c1VwbG9hZHMo
MCkKLSAgICAsIG1fbnVtUHJldmlvdXNGbHVzaGVzKDApCi0gICAgeyB9Ci0KLXB1YmxpYzoKLSAg
ICB2b2lkIG9uRmx1c2goKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgZm9yIGJhY2stdG8tYmFj
ayBmbHVzaGVzLgotICAgICAgICBFWFBFQ1RfRVEoMCwgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMp
IDw8ICJCYWNrLXRvLWJhY2sgZmx1c2hlcyBkZXRlY3RlZC4iOwotCi0gICAgICAgIC8vIENoZWNr
IGZvciBwcmVtYXR1cmUgZmx1c2hlcwotICAgICAgICBpZiAobV9udW1QcmV2aW91c1VwbG9hZHMg
IT0gbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZSkgewotICAgICAgICAgICAgaWYgKG1fbnVtVG90
YWxVcGxvYWRzIDwgbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCkKLSAgICAgICAgICAgICAgICBF
WFBFQ1RfR0UobV9udW1EYW5nbGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZEZ1bGwpIDw8ICJQcmVt
YXR1cmUgZmx1c2ggZGV0ZWN0ZWQgaW4gZnVsbCB1cGxvYWRzLiI7Ci0gICAgICAgICAgICBlbHNl
IGlmIChtX251bVRvdGFsVXBsb2FkcyA+IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQgJiYgbV9u
dW1Ub3RhbFVwbG9hZHMgPCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCkKLSAgICAgICAgICAg
ICAgICBFWFBFQ1RfR0UobV9udW1EYW5nbGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZFBhcnRpYWwp
IDw8ICJQcmVtYXR1cmUgZmx1c2ggZGV0ZWN0ZWQgaW4gcGFydGlhbCB1cGxvYWRzLiI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBtX251bURhbmdsaW5nVXBsb2FkcyA9IDA7Ci0gICAgICAgIG1fbnVt
Q29uc2VjdXRpdmVGbHVzaGVzKys7Ci0gICAgICAgIG1fbnVtVG90YWxGbHVzaGVzKys7Ci0gICAg
ICAgIG1fbnVtUHJldmlvdXNGbHVzaGVzKys7Ci0gICAgfQotCi0gICAgdm9pZCBvbkJlZ2luVXBs
b2FkcygpCi0gICAgewotICAgICAgICBtX251bVByZXZpb3VzRmx1c2hlcyA9IDA7Ci0gICAgICAg
IG1fbnVtUHJldmlvdXNVcGxvYWRzID0gMDsKLSAgICAgICAgbV9udW1CZWdpblVwbG9hZHMrKzsK
LSAgICB9Ci0KLSAgICB2b2lkIG9uVXBsb2FkKCkKLSAgICB7Ci0gICAgICAgIC8vIENoZWNrIGZv
ciB0b28gbWFueSBjb25zZWN1dGl2ZSB1cGxvYWRzCi0gICAgICAgIGlmIChtX251bVRvdGFsVXBs
b2FkcyA8IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQpCi0gICAgICAgICAgICBFWFBFQ1RfTFQo
bV9udW1EYW5nbGluZ1VwbG9hZHMsIGtGbHVzaFBlcmlvZEZ1bGwpIDw8ICJUb28gbWFueSBjb25z
ZWN1dGl2ZSBmdWxsIHVwbG9hZHMgZGV0ZWN0ZWQuIjsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgRVhQRUNUX0xUKG1fbnVtRGFuZ2xpbmdVcGxvYWRzLCBrRmx1c2hQZXJpb2RQYXJ0aWFsKSA8
PCAiVG9vIG1hbnkgY29uc2VjdXRpdmUgcGFydGlhbCB1cGxvYWRzIGRldGVjdGVkLiI7Ci0KLSAg
ICAgICAgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXMgPSAwOwotICAgICAgICBtX251bURhbmdsaW5n
VXBsb2FkcysrOwotICAgICAgICBtX251bVRvdGFsVXBsb2FkcysrOwotICAgICAgICBtX251bVBy
ZXZpb3VzVXBsb2FkcysrOwotICAgIH0KLQotICAgIHZvaWQgb25FbmRVcGxvYWRzKCkKLSAgICB7
Ci0gICAgICAgIEVYUEVDVF9FUSgwLCBtX251bURhbmdsaW5nVXBsb2FkcykgPDwgIkxhc3QgdXBs
b2FkIHdhc24ndCBmb2xsb3dlZCBieSBhIGZsdXNoLiI7Ci0KLSAgICAgICAgLy8gTm90ZTogVGhl
IG1fbnVtVG90YWxVcGxvYWRzICE9IG1fZnVsbFVwbG9hZENvdW50RXhwZWN0ZWQgY29tcGFyaXNv
bgotICAgICAgICAvLyBhbGxvd3MgZm9yIHRoZSBxdW90YSBub3QgdG8gYmUgaGl0IGluIHRoZSBj
YXNlIHdoZXJlIHdlIGFyZSB0cmFzaXRpb25pbmcKLSAgICAgICAgLy8gZnJvbSBmdWxsIHVwbG9h
ZHMgdG8gcGFydGlhbCB1cGxvYWRzLgotICAgICAgICBpZiAobV9udW1Ub3RhbFVwbG9hZHMgIT0g
bV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQgJiYgbV9udW1Ub3RhbFVwbG9hZHMgIT0gbV9mdWxs
VXBsb2FkQ291bnRFeHBlY3RlZCkgewotICAgICAgICAgICAgRVhQRUNUX0VRKG1fbWF4VXBsb2Fk
Q291bnRQZXJVcGRhdGUsIG1fbnVtUHJldmlvdXNVcGxvYWRzKQotICAgICAgICAgICAgICAgIDw8
ICJlbmRVcGxvYWQoKSB3YXMgY2FsbGVkIHdoZW4gdGhlcmUgYXJlIHRleHR1cmVzIHRvIHVwbG9h
ZCwgYnV0IHRoZSB1cGxvYWQgcXVvdGEgaGFzbid0IGJlZW4gZmlsbGVkLiI7Ci0gICAgICAgIH0K
LQotICAgICAgICBtX251bUVuZFVwbG9hZHMrKzsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgT3duUHRyPFdlYlRocmVhZD4gdGhy
ZWFkOwotICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKHRocmVhZC5nZXQoKSk7Ci0K
LSAgICAgICAgbV9jb250ZXh0ID0gQ0NHcmFwaGljc0NvbnRleHQ6OmNyZWF0ZTNEKAotICAgICAg
ICAgICAgICAgICAgICBhZG9wdFB0cihuZXcgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRU
ZXN0KHRoaXMpKSk7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwotICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigp
Ci0gICAgewotICAgICAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwotICAgIH0KLQotICAg
IHZvaWQgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoaW50IGNvdW50KQotICAgIHsKLSAgICAg
ICAgbV9mdWxsVXBsb2FkQ291bnRFeHBlY3RlZCArPSBjb3VudDsKLSAgICAgICAgbV90b3RhbFVw
bG9hZENvdW50RXhwZWN0ZWQgKz0gY291bnQ7Ci0KLSAgICAgICAgY29uc3QgSW50UmVjdCByZWN0
KDAsIDAsIDMwMCwgMTUwKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KQotICAgICAgICAgICAgbV91cGRhdGVyLmFwcGVuZEZ1bGxVcGRhdGUoJm1fdGV4dHVyZSwgcmVj
dCwgcmVjdCk7Ci0gICAgfQotCi0gICAgdm9pZCBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRl
cihpbnQgY291bnQpCi0gICAgewotICAgICAgICBtX3BhcnRpYWxDb3VudEV4cGVjdGVkICs9IGNv
dW50OwotICAgICAgICBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCArPSBjb3VudDsKLQotICAg
ICAgICBjb25zdCBJbnRSZWN0IHJlY3QoMCwgMCwgMTAwLCAxMDApOwotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgICAgICBtX3VwZGF0ZXIuYXBwZW5kUGFy
dGlhbFVwZGF0ZSgmbV90ZXh0dXJlLCByZWN0LCByZWN0KTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dE1heFVwbG9hZENvdW50UGVyVXBkYXRlKGludCBjb3VudCkKLSAgICB7Ci0gICAgICAgIG1fbWF4
VXBsb2FkQ291bnRQZXJVcGRhdGUgPSBjb3VudDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICAv
LyBDbGFzc2VzIHJlcXVpcmVkIHRvIGludGVyYWN0IGFuZCB0ZXN0IHRoZSBDQ1RleHR1cmVVcGRh
dGVyCi0gICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgT3duUHRy
PENDUmVzb3VyY2VQcm92aWRlcj4gbV9yZXNvdXJjZVByb3ZpZGVyOwotICAgIENDVGV4dHVyZVVw
ZGF0ZXIgbV91cGRhdGVyOwotICAgIFRleHR1cmVGb3JVcGxvYWRUZXN0IG1fdGV4dHVyZTsKLSAg
ICBGYWtlVGV4dHVyZUNvcGllciBtX2NvcGllcjsKLSAgICBUZXh0dXJlVXBsb2FkZXJGb3JVcGxv
YWRUZXN0IG1fdXBsb2FkZXI7Ci0KLSAgICAvLyBQcm9wZXJ0aWVzIC8gZXhwZWN0YXRpb25zIG9m
IHRoaXMgdGVzdAotICAgIGludCBtX2Z1bGxVcGxvYWRDb3VudEV4cGVjdGVkOwotICAgIGludCBt
X3BhcnRpYWxDb3VudEV4cGVjdGVkOwotICAgIGludCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3Rl
ZDsKLSAgICBpbnQgbV9tYXhVcGxvYWRDb3VudFBlclVwZGF0ZTsKLQotICAgIC8vIER5bmFtaWMg
cHJvcGVydGllcyBvZiB0aGlzIHRlc3QKLSAgICBpbnQgbV9udW1CZWdpblVwbG9hZHM7Ci0gICAg
aW50IG1fbnVtRW5kVXBsb2FkczsKLSAgICBpbnQgbV9udW1Db25zZWN1dGl2ZUZsdXNoZXM7Ci0g
ICAgaW50IG1fbnVtRGFuZ2xpbmdVcGxvYWRzOwotICAgIGludCBtX251bVRvdGFsVXBsb2FkczsK
LSAgICBpbnQgbV9udW1Ub3RhbEZsdXNoZXM7Ci0gICAgaW50IG1fbnVtUHJldmlvdXNVcGxvYWRz
OwotICAgIGludCBtX251bVByZXZpb3VzRmx1c2hlczsKLX07Ci0KLQotdm9pZCBXZWJHcmFwaGlj
c0NvbnRleHQzREZvclVwbG9hZFRlc3Q6OmZsdXNoKHZvaWQpCi17Ci0gICAgbV90ZXN0LT5vbkZs
dXNoKCk7Ci19Ci0KLXZvaWQgV2ViR3JhcGhpY3NDb250ZXh0M0RGb3JVcGxvYWRUZXN0OjpzaGFs
bG93Rmx1c2hDSFJPTUlVTSh2b2lkKQotewotICAgIG1fdGVzdC0+b25GbHVzaCgpOwotfQotCi12
b2lkIFRleHR1cmVVcGxvYWRlckZvclVwbG9hZFRlc3Q6OmJlZ2luVXBsb2FkcygpCi17Ci0gICAg
bV90ZXN0LT5vbkJlZ2luVXBsb2FkcygpOwotfQotCi12b2lkIFRleHR1cmVVcGxvYWRlckZvclVw
bG9hZFRlc3Q6OmVuZFVwbG9hZHMoKQotewotICAgIG1fdGVzdC0+b25FbmRVcGxvYWRzKCk7Ci19
Ci0KLXZvaWQgVGV4dHVyZVVwbG9hZGVyRm9yVXBsb2FkVGVzdDo6dXBsb2FkVGV4dHVyZShXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkNDUmVzb3VyY2VQ
cm92aWRlciosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBzb3VyY2VSZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYkNvcmU6OkludFJlY3QgZGVz
dFJlY3QpCi17Ci0gICAgbV90ZXN0LT5vblVwbG9hZCgpOwotfQotCi0KLS8vIFpFUk8gVVBMT0FE
UyBURVNUUwotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBaZXJvVXBsb2FkcykKLXsKLSAg
ICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigwKTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fk
c1RvVXBkYXRlcigwKTsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5n
ZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhwZWN0ZWQp
OwotCi0gICAgRVhQRUNUX0VRKDAsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEo
MCwgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMCwgbV9udW1QcmV2aW91c0ZsdXNo
ZXMpOwotICAgIEVYUEVDVF9FUSgwLCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLQotLy8g
T05FIFVQTE9BRCBURVNUUwotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVGdWxsVXBs
b2FkKQotewotICAgIGFwcGVuZEZ1bGxVcGxvYWRzVG9VcGRhdGVyKDEpOwotICAgIGFwcGVuZFBh
cnRpYWxVcGxvYWRzVG9VcGRhdGVyKDApOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgp
LCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0K
LSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBt
X251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bVByZXZpb3VzRmx1c2hlcyk7
Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotVEVTVF9GKEND
VGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVQYXJ0aWFsVXBsb2FkKQotewotICAgIGFwcGVuZEZ1bGxV
cGxvYWRzVG9VcGRhdGVyKDApOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKDEp
OwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRl
ci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVy
LCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1C
ZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVY
UEVDVF9FUSgxLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVt
UHJldmlvdXNVcGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBPbmVG
dWxsT25lUGFydGlhbFVwbG9hZCkKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigx
KTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcigxKTsKLSAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3Vy
Y2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENv
dW50RXhwZWN0ZWQpOwotCi0gICAgLy8gV2UgZXhwZWN0IHRoZSBmdWxsIHVwbG9hZHMgdG8gYmUg
Zm9sbG93ZWQgYnkgYSBmbHVzaAotICAgIC8vIGJlZm9yZSB0aGUgcGFydGlhbCB1cGxvYWRzIGJl
Z2luLgotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VR
KDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDIsIG1fbnVtUHJldmlvdXNGbHVz
aGVzKTsKLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1QcmV2aW91c1VwbG9hZHMpOwotfQotCi0KLS8v
IE5PIFJFTUFJTkRFUiBURVNUUwotLy8gVGhpcyBjbGFzcyBvZiB0ZXN0cyB1cGxvYWQgYSBudW1i
ZXIgb2YgdGV4dHVyZXMgdGhhdCBpcyBhIG11bHRpcGxlIG9mIHRoZSBmbHVzaCBwZXJpb2QuCi1j
b25zdCBpbnQgZnVsbFVwbG9hZEZsdXNoTXVsdGlwbGVyID0gNzsKLWNvbnN0IGludCBmdWxsTm9S
ZW1haW5kZXJDb3VudCA9IGZ1bGxVcGxvYWRGbHVzaE11bHRpcGxlciAqIGtGbHVzaFBlcmlvZEZ1
bGw7Ci0KLWNvbnN0IGludCBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIgPSAxMTsKLWNvbnN0
IGludCBwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCA9IHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxl
ciAqIGtGbHVzaFBlcmlvZFBhcnRpYWw7Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwg
TWFueUZ1bGxVcGxvYWRzTm9SZW1haW5kZXIpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1Vw
ZGF0ZXIoZnVsbE5vUmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9V
cGRhdGVyKDApOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAg
IG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZt
X3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEo
MSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMp
OwotICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNG
bHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbE5vUmVtYWluZGVyQ291bnQsIG1fbnVtUHJldmlv
dXNVcGxvYWRzKTsKLX0KLQotVEVTVF9GKENDVGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55UGFydGlh
bFVwbG9hZHNOb1JlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcigw
KTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTm9SZW1haW5kZXJD
b3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91
cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBs
b2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBt
X251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0g
ICAgRVhQRUNUX0VRKHBhcnRpYWxVcGxvYWRGbHVzaE11bHRpcGxlciwgbV9udW1QcmV2aW91c0Zs
dXNoZXMpOwotICAgIEVYUEVDVF9FUShwYXJ0aWFsTm9SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2
aW91c1VwbG9hZHMpOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxs
TWFueVBhcnRpYWxVcGxvYWRzTm9SZW1haW5kZXIpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNU
b1VwZGF0ZXIoZnVsbE5vUmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRz
VG9VcGRhdGVyKHBhcnRpYWxOb1JlbWFpbmRlckNvdW50KTsKLSAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92
aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgbV90b3RhbFVwbG9hZENvdW50RXhw
ZWN0ZWQpOwotCi0gICAgRVhQRUNUX0VRKDEsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBF
Q1RfRVEoMSwgbV9udW1FbmRVcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbFVwbG9hZEZsdXNo
TXVsdGlwbGVyICsgcGFydGlhbFVwbG9hZEZsdXNoTXVsdGlwbGVyLCBtX251bVByZXZpb3VzRmx1
c2hlcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxOb1JlbWFpbmRlckNvdW50ICsgcGFydGlhbE5vUmVt
YWluZGVyQ291bnQsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLX0KLQotCi0vLyBNSU4vTUFYIFJF
TUFJTkRFUiBURVNUUwotLy8gVGhpcyBjbGFzcyBvZiB0ZXN0cyBtaXggYW5kIG1hdGNoIHVwbG9h
ZGluZyAxIG1vcmUgYW5kIDEgbGVzcyB0ZXh0dXJlCi0vLyB0aGFuIGEgbXVsdGlwbGUgb2YgdGhl
IGZsdXNoIHBlcmlvZC4KLQotY29uc3QgaW50IGZ1bGxNaW5SZW1haW5kZXJDb3VudCA9IGZ1bGxO
b1JlbWFpbmRlckNvdW50ICsgMTsKLWNvbnN0IGludCBmdWxsTWF4UmVtYWluZGVyQ291bnQgPSBm
dWxsTm9SZW1haW5kZXJDb3VudCAtIDE7Ci1jb25zdCBpbnQgcGFydGlhbE1pblJlbWFpbmRlckNv
dW50ID0gcGFydGlhbE5vUmVtYWluZGVyQ291bnQgKyAxOwotY29uc3QgaW50IHBhcnRpYWxNYXhS
ZW1haW5kZXJDb3VudCA9IHBhcnRpYWxOb1JlbWFpbmRlckNvdW50IC0gMTsKLQotVEVTVF9GKEND
VGV4dHVyZVVwZGF0ZXJUZXN0LCBNYW55RnVsbEFuZFBhcnRpYWxNaW5SZW1haW5kZXIpCi17Ci0g
ICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoZnVsbE1pblJlbWFpbmRlckNvdW50KTsKLSAg
ICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihwYXJ0aWFsTWluUmVtYWluZGVyQ291bnQp
OwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRl
ci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVy
LCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3RlZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1C
ZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVY
UEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0
aXBsZXIgKyAyLCBtX251bVByZXZpb3VzRmx1c2hlcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxNaW5S
ZW1haW5kZXJDb3VudCArIHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCwgbV9udW1QcmV2aW91c1Vw
bG9hZHMpOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIE1hbnlGdWxsQW5kUGFy
dGlhbFVwbG9hZHNNYXhSZW1haW5kZXIpCi17Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0
ZXIoZnVsbE1heFJlbWFpbmRlckNvdW50KTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBk
YXRlcihwYXJ0aWFsTWF4UmVtYWluZGVyQ291bnQpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVy
LmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBtX3RvdGFsVXBsb2FkQ291bnRFeHBlY3Rl
ZCk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9F
USgxLCBtX251bUVuZFVwbG9hZHMpOwotICAgIEVYUEVDVF9FUShmdWxsVXBsb2FkRmx1c2hNdWx0
aXBsZXIgKyBwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVz
KTsKLSAgICBFWFBFQ1RfRVEoZnVsbE1heFJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1heFJlbWFp
bmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVV
cGRhdGVyVGVzdCwgTWFueUZ1bGxNaW5SZW1haW5kZXJNYW55UGFydGlhbE1heFJlbWFpbmRlcikK
LXsKLSAgICBhcHBlbmRGdWxsVXBsb2Fkc1RvVXBkYXRlcihmdWxsTWluUmVtYWluZGVyQ291bnQp
OwotICAgIGFwcGVuZFBhcnRpYWxVcGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNYXhSZW1haW5kZXJD
b3VudCk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91
cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBs
b2FkZXIsIG1fdG90YWxVcGxvYWRDb3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBt
X251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0g
ICAgRVhQRUNUX0VRKChmdWxsVXBsb2FkRmx1c2hNdWx0aXBsZXIrMSkgKyBwYXJ0aWFsVXBsb2Fk
Rmx1c2hNdWx0aXBsZXIsIG1fbnVtUHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVs
bE1pblJlbWFpbmRlckNvdW50ICsgcGFydGlhbE1heFJlbWFpbmRlckNvdW50LCBtX251bVByZXZp
b3VzVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1RleHR1cmVVcGRhdGVyVGVzdCwgTWFueUZ1bGxN
YXhSZW1haW5kZXJNYW55UGFydGlhbE1pblJlbWFpbmRlcikKLXsKLSAgICBhcHBlbmRGdWxsVXBs
b2Fkc1RvVXBkYXRlcihmdWxsTWF4UmVtYWluZGVyQ291bnQpOwotICAgIGFwcGVuZFBhcnRpYWxV
cGxvYWRzVG9VcGRhdGVyKHBhcnRpYWxNaW5SZW1haW5kZXJDb3VudCk7Ci0gICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIG1fdG90YWxVcGxvYWRD
b3VudEV4cGVjdGVkKTsKLQotICAgIEVYUEVDVF9FUSgxLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0g
ICAgRVhQRUNUX0VRKDEsIG1fbnVtRW5kVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKGZ1bGxVcGxv
YWRGbHVzaE11bHRpcGxlciArIChwYXJ0aWFsVXBsb2FkRmx1c2hNdWx0aXBsZXIrMSksIG1fbnVt
UHJldmlvdXNGbHVzaGVzKTsKLSAgICBFWFBFQ1RfRVEoZnVsbE1heFJlbWFpbmRlckNvdW50ICsg
cGFydGlhbE1pblJlbWFpbmRlckNvdW50LCBtX251bVByZXZpb3VzVXBsb2Fkcyk7Ci19Ci0KLQot
Ly8gTVVMVElQTEUgVVBEQVRFIFRFU1RTCi0vLyBUaGVzZSB0ZXN0cyBhdHRlbXB0IHRvIHVwbG9h
ZCB0b28gbWFueSB0ZXh0dXJlcyBhdCBvbmNlLCByZXF1aXJpbmcKLS8vIG11bHRpcGxlIGNhbGxz
IHRvIHVwZGF0ZSgpLgotCi1pbnQgZXhwZWN0ZWRGbHVzaGVzKGludCB1cGxvYWRzLCBpbnQgZmx1
c2hQZXJpb2QpCi17Ci0gICAgcmV0dXJuICh1cGxvYWRzICsgZmx1c2hQZXJpb2QgLSAxKSAvIGZs
dXNoUGVyaW9kOwotfQotCi1URVNUX0YoQ0NUZXh0dXJlVXBkYXRlclRlc3QsIFRyaXBsZVVwZGF0
ZUZpbmFsVXBkYXRlRnVsbEFuZFBhcnRpYWwpCi17Ci0gICAgY29uc3QgaW50IGtNYXhVcGxvYWRz
UGVyVXBkYXRlID0gNDA7Ci0gICAgY29uc3QgaW50IGtGdWxsVXBsb2FkcyA9IDEwMDsKLSAgICBj
b25zdCBpbnQga1BhcnRpYWxVcGxvYWRzID0gMjA7Ci0KLSAgICBpbnQgZXhwZWN0ZWRQcmV2aW91
c0ZsdXNoZXMgPSAwOwotICAgIGludCBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IDA7Ci0KLSAg
ICBzZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0ZShrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0gICAg
YXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoa0Z1bGxVcGxvYWRzKTsKLSAgICBhcHBlbmRQYXJ0
aWFsVXBsb2Fkc1RvVXBkYXRlcihrUGFydGlhbFVwbG9hZHMpOwotCi0gICAgLy8gRmlyc3QgdXBk
YXRlICg0MCBmdWxsKQotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwot
ICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIs
ICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwg
bV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgxLCBtX251bUVuZFVwbG9hZHMpOwot
Ci0gICAgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZsdXNoZXMoa01heFVwbG9h
ZHNQZXJVcGRhdGUsIGtGbHVzaFBlcmlvZEZ1bGwpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFBy
ZXZpb3VzRmx1c2hlcywgbV9udW1QcmV2aW91c0ZsdXNoZXMpOwotCi0gICAgZXhwZWN0ZWRQcmV2
aW91c1VwbG9hZHMgPSBrTWF4VXBsb2Fkc1BlclVwZGF0ZTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsKLQotICAgIC8vIFNlY29u
ZCB1cGRhdGUgKDQwIGZ1bGwpCi0gICAgbV91cGRhdGVyLnVwZGF0ZShtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsIGtNYXhVcGxvYWRzUGVyVXBkYXRlKTsK
LQotICAgIEVYUEVDVF9FUSgyLCBtX251bUJlZ2luVXBsb2Fkcyk7Ci0gICAgRVhQRUNUX0VRKDIs
IG1fbnVtRW5kVXBsb2Fkcyk7Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzRmx1c2hlcyA9IGV4cGVj
dGVkRmx1c2hlcyhrTWF4VXBsb2Fkc1BlclVwZGF0ZSwga0ZsdXNoUGVyaW9kRnVsbCk7Ci0gICAg
RVhQRUNUX0VRKGV4cGVjdGVkUHJldmlvdXNGbHVzaGVzLCBtX251bVByZXZpb3VzRmx1c2hlcyk7
Ci0KLSAgICBleHBlY3RlZFByZXZpb3VzVXBsb2FkcyA9IGtNYXhVcGxvYWRzUGVyVXBkYXRlOwot
ICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzVXBsb2FkcywgbV9udW1QcmV2aW91c1VwbG9h
ZHMpOwotCi0gICAgLy8gVGhpcmQgdXBkYXRlICgyMCBmdWxsLCAyMCBwYXJ0aWFsKQotICAgIG1f
dXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3Vw
bG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMywgbV9udW1C
ZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9FUSgzLCBtX251bUVuZFVwbG9hZHMpOwotCi0gICAg
ZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBleHBlY3RlZEZsdXNoZXMoa0Z1bGxVcGxvYWRzLWtN
YXhVcGxvYWRzUGVyVXBkYXRlKjIsIGtGbHVzaFBlcmlvZEZ1bGwpICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4cGVjdGVkRmx1c2hlcyhrUGFydGlhbFVwbG9hZHMsIGtGbHVzaFBl
cmlvZFBhcnRpYWwpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzRmx1c2hlcywgbV9u
dW1QcmV2aW91c0ZsdXNoZXMpOwotCi0gICAgZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMgPSAoa0Z1
bGxVcGxvYWRzLWtNYXhVcGxvYWRzUGVyVXBkYXRlKjIpK2tQYXJ0aWFsVXBsb2FkczsKLSAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNVcGxvYWRzKTsK
LQotICAgIC8vIEZpbmFsIHNhbml0eSBjaGVja3MKLSAgICBFWFBFQ1RfRVEoa0Z1bGxVcGxvYWRz
ICsga1BhcnRpYWxVcGxvYWRzLCBtX251bVRvdGFsVXBsb2Fkcyk7Ci19Ci0KLVRFU1RfRihDQ1Rl
eHR1cmVVcGRhdGVyVGVzdCwgVHJpcGxlVXBkYXRlRmluYWxVcGRhdGVBbGxQYXJ0aWFsKQotewot
ICAgIGNvbnN0IGludCBrTWF4VXBsb2Fkc1BlclVwZGF0ZSA9IDQwOwotICAgIGNvbnN0IGludCBr
RnVsbFVwbG9hZHMgPSA3MDsKLSAgICBjb25zdCBpbnQga1BhcnRpYWxVcGxvYWRzID0gMzA7Ci0K
LSAgICBpbnQgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSAwOwotICAgIGludCBleHBlY3RlZFBy
ZXZpb3VzVXBsb2FkcyA9IDA7Ci0KLSAgICBzZXRNYXhVcGxvYWRDb3VudFBlclVwZGF0ZShrTWF4
VXBsb2Fkc1BlclVwZGF0ZSk7Ci0gICAgYXBwZW5kRnVsbFVwbG9hZHNUb1VwZGF0ZXIoa0Z1bGxV
cGxvYWRzKTsKLSAgICBhcHBlbmRQYXJ0aWFsVXBsb2Fkc1RvVXBkYXRlcihrUGFydGlhbFVwbG9h
ZHMpOwotCi0gICAgLy8gRmlyc3QgdXBkYXRlICg0MCBmdWxsKQotICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIG1fdXBkYXRlci51cGRhdGUobV9yZXNvdXJjZVBy
b3ZpZGVyLmdldCgpLCAmbV9jb3BpZXIsICZtX3VwbG9hZGVyLCBrTWF4VXBsb2Fkc1BlclVwZGF0
ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgbV9udW1CZWdpblVwbG9hZHMpOwotICAgIEVYUEVDVF9F
USgxLCBtX251bUVuZFVwbG9hZHMpOwotCi0gICAgZXhwZWN0ZWRQcmV2aW91c0ZsdXNoZXMgPSBl
eHBlY3RlZEZsdXNoZXMoa01heFVwbG9hZHNQZXJVcGRhdGUsIGtGbHVzaFBlcmlvZEZ1bGwpOwot
ICAgIEVYUEVDVF9FUShleHBlY3RlZFByZXZpb3VzRmx1c2hlcywgbV9udW1QcmV2aW91c0ZsdXNo
ZXMpOwotCi0gICAgZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMgPSBrTWF4VXBsb2Fkc1BlclVwZGF0
ZTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRQcmV2aW91c1VwbG9hZHMsIG1fbnVtUHJldmlvdXNV
cGxvYWRzKTsKLQotICAgIC8vIFNlY29uZCB1cGRhdGUgKDMwIGZ1bGwsIG9wdGlvbmFsbHkgMTAg
cGFydGlhbCkKLSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwg
Jm1fY29waWVyLCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwotCi0gICAgRVhQ
RUNUX0VRKDIsIG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMiwgbV9udW1FbmRV
cGxvYWRzKTsKLSAgICBFWFBFQ1RfTEUobV9udW1QcmV2aW91c1VwbG9hZHMsIGtNYXhVcGxvYWRz
UGVyVXBkYXRlKTsKLSAgICAvLyBCZSBsZW5pZW50IG9uIHRoZSBleGFjdCBudW1iZXIgb2YgZmx1
c2hlcyBoZXJlLCBhcyB0aGUgbnVtYmVyIG9mIGZsdXNoZXMKLSAgICAvLyB3aWxsIGRlcGVuZCBv
biB3aGV0aGVyIHNvbWUgcGFydGlhbCB1cGxvYWRzIHdlcmUgcGVyZm9ybWVkLgotICAgIC8vIG9u
Rmx1c2goKSwgb25VcGxvYWQoKSwgYW5kIG9uRW5kVXBsb2FkKCkgd2lsbCBkbyBiYXNpYyBmbHVz
aCBjaGVja3MgZm9yIHVzIGFueXdheS4KLQotICAgIC8vIFRoaXJkIHVwZGF0ZSAoMzAgcGFydGlh
bCBPUiAyMCBwYXJ0aWFsIGlmIDEwIHBhcnRpYWwgdXBsb2FkZWQgaW4gc2Vjb25kIHVwZGF0ZSkK
LSAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVy
LCAmbV91cGxvYWRlciwga01heFVwbG9hZHNQZXJVcGRhdGUpOwotCi0gICAgRVhQRUNUX0VRKDMs
IG1fbnVtQmVnaW5VcGxvYWRzKTsKLSAgICBFWFBFQ1RfRVEoMywgbV9udW1FbmRVcGxvYWRzKTsK
LSAgICBFWFBFQ1RfTEUobV9udW1QcmV2aW91c1VwbG9hZHMsIGtNYXhVcGxvYWRzUGVyVXBkYXRl
KTsKLSAgICAvLyBCZSBsZW5pZW50IG9uIHRoZSBleGFjdCBudW1iZXIgb2YgZmx1c2hlcyBoZXJl
IGFzIHdlbGwuCi0KLSAgICAvLyBGaW5hbCBzYW5pdHkgY2hlY2tzCi0gICAgRVhQRUNUX0VRKGtG
dWxsVXBsb2FkcyArIGtQYXJ0aWFsVXBsb2FkcywgbV9udW1Ub3RhbFVwbG9hZHMpOwotfQotCi0K
LX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDVGlsZWRMYXllclRlc3RDb21tb24uaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVyVGVzdENvbW1vbi5oCmluZGV4IGRlMWViNjZjNjFiNjQ0MWNkNTYyNTAwMDBj
OGQ0YTYyMGI4YzhmYzcuLjZjZDIyOGIzZDkwODZmYzMwMjY0MDNkZjNlNWIxY2RkNjhmN2VmMGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVyVGVz
dENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVy
VGVzdENvbW1vbi5oCkBAIC0xNTMsNyArMTUzLDcgQEAgcHJvdGVjdGVkOgogCiBjbGFzcyBGYWtl
VGV4dHVyZUNvcGllciA6IHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlQ29waWVyIHsKIHB1YmxpYzoK
LSAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmUodW5zaWduZWQsIHVuc2lnbmVkLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlKFBhcmFt
ZXRlcnMpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBmbHVzaCgpIHsgfQogfTsKIApAQCAtMTYyLDcg
KzE2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNCdXN5KCkgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5VcGxvYWRzKCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGVuZFVwbG9hZHMoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBsb2FkVGV4dHVyZShXZWJD
b3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBXZWJDb3JlOjpDQ1Jl
c291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qg
c291cmNlUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCBkZXN0UmVjdCkgeyB0ZXh0dXJlLT51
cGRhdGVSZWN0KHJlc291cmNlUHJvdmlkZXIsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsgfQorICAg
IHZpcnR1YWwgdm9pZCB1cGxvYWRUZXh0dXJlKFdlYkNvcmU6OkNDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlciwgUGFyYW1ldGVycyB1cGxvYWQpIHsgdXBsb2FkLnRleHR1cmUtPnVw
ZGF0ZVJlY3QocmVzb3VyY2VQcm92aWRlciwgdXBsb2FkLnNvdXJjZVJlY3QsIHVwbG9hZC5kZXN0
UmVjdCk7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGV4dHVyZUNvcGllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
ZXh0dXJlQ29waWVyVGVzdC5jcHAKaW5kZXggNzc2ZTIzYmZkMjYzMDYwMWExOGVjYjA1YTFiNTVk
YTg4YWZkMTBlNC4uYzlhZjYwZmMzNGE4M2NiNTc0ODU5YzAwNzVlMDllMmU3ZjVhNTM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UZXh0dXJlQ29waWVyVGVzdC5j
cHAKQEAgLTc2LDUgKzc2LDYgQEAgVEVTVChUZXh0dXJlQ29waWVyVGVzdCwgdGVzdERyYXdBcnJh
eXNDb3B5KQogICAgIGludCBkZXN0VGV4dHVyZUlkID0gMjsKICAgICBJbnRTaXplIHNpemUoMjU2
LCAxMjgpOwogICAgIE93blB0cjxBY2NlbGVyYXRlZFRleHR1cmVDb3BpZXI+IGNvcGllcihBY2Nl
bGVyYXRlZFRleHR1cmVDb3BpZXI6OmNyZWF0ZShtb2NrQ29udGV4dC5nZXQoKSwgZmFsc2UpKTsK
LSAgICBjb3BpZXItPmNvcHlUZXh0dXJlKHNvdXJjZVRleHR1cmVJZCwgZGVzdFRleHR1cmVJZCwg
c2l6ZSk7CisgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0
dXJlSWQsIGRlc3RUZXh0dXJlSWQsIHNpemUgfTsKKyAgICBjb3BpZXItPmNvcHlUZXh0dXJlKGNv
cHkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExh
eWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRM
YXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggOGQ2Yjc4OTQ4YWM0OTAzMGFkMTM0N2U1MWU5Y2Rm
MWU2N2MyYmQzZS4uMGI0NGI4NjRiYTc1YWU1NWYxODg0NGYwN2MzYjFiYjQyYjdiNThlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2MvQ0NPdmVyZHJhd01l
dHJpY3MuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlcmluZ1N0YXRzLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCisj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlQ29udHJvbGxlci5oIgogI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAK
QEAgLTg5LDcgKzkwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlcyhpbnQg
Y291bnQgPSA1MDApCiAgICAgewotICAgICAgICBtX3VwZGF0ZXIudXBkYXRlKG1fcmVzb3VyY2VQ
cm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRlciwgY291bnQpOworICAgICAgICBD
Q1RleHR1cmVVcGRhdGVDb250cm9sbGVyOjp1cGRhdGVUZXh0dXJlcyhtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCksICZtX2NvcGllciwgJm1fdXBsb2FkZXIsICZtX3VwZGF0ZXIsIGNvdW50KTsKICAg
ICB9CiBwdWJsaWM6CiAgICAgT3duUHRyPENDR3JhcGhpY3NDb250ZXh0PiBtX2NvbnRleHQ7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>