<?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>94752</bug_id>
          
          <creation_ts>2012-08-22 15:11:48 -0700</creation_ts>
          <short_desc>[chromium] Create sharedQuadState at same time as creating quads and give them to the quadSink</short_desc>
          <delta_ts>2012-08-23 14:01:10 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>702400</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-22 15:11:48 -0700</bug_when>
    <thetext>[chromium] Create sharedQuadState at same time as creating quads and give them to the quadSink</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702492</commentid>
    <comment_count>1</comment_count>
      <attachid>160027</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-22 16:02:35 -0700</bug_when>
    <thetext>Created attachment 160027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702498</commentid>
    <comment_count>2</comment_count>
      <attachid>160027</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-22 16:15:44 -0700</bug_when>
    <thetext>Comment on attachment 160027
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:101
&gt; +int CCQuadCuller::generateSharedQuadStateId() const
&gt; +{
&gt; +    return m_sharedQuadStateList.size();
&gt; +}

A potential foot gun is that you might think you could call generateSharedQuadStateId() n times and then add n states, which is wrong.  

As a potential suggestion, what about always having to appendSharedQuadState first prior to appending quads.  That function sets the id internally on the shared quad state and returns a raw pointer to the modified shared quad state (for convenience, since you released the other pointer).  You would use this pointer to pass to quads that you append (since you set the shared quad state id on quads and need it there).  Maybe CCDrawQuad could assert if you gave it a shared quad state that hadn&apos;t been appended yet.  At least that&apos;d be a runtime check that you&apos;d done the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703129</commentid>
    <comment_count>3</comment_count>
      <attachid>160027</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-23 10:32:52 -0700</bug_when>
    <thetext>Comment on attachment 160027
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:101
&gt;&gt; +}
&gt; 
&gt; A potential foot gun is that you might think you could call generateSharedQuadStateId() n times and then add n states, which is wrong.  
&gt; 
&gt; As a potential suggestion, what about always having to appendSharedQuadState first prior to appending quads.  That function sets the id internally on the shared quad state and returns a raw pointer to the modified shared quad state (for convenience, since you released the other pointer).  You would use this pointer to pass to quads that you append (since you set the shared quad state id on quads and need it there).  Maybe CCDrawQuad could assert if you gave it a shared quad state that hadn&apos;t been appended yet.  At least that&apos;d be a runtime check that you&apos;d done the right thing.

Brilliant. I was not satisfied with this either but was not sure what to do with it, this is perfect. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703209</commentid>
    <comment_count>4</comment_count>
      <attachid>160206</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-23 11:53:03 -0700</bug_when>
    <thetext>Created attachment 160206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703215</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-23 11:57:57 -0700</bug_when>
    <thetext>Done!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703219</commentid>
    <comment_count>6</comment_count>
      <attachid>160206</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-23 12:00:04 -0700</bug_when>
    <thetext>Comment on attachment 160206
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:106
&gt; +    m_currentSharedQuadState = sharedQuadState.get();

Why useSharedQuadState + this stateful &apos;current&apos; variable only used for an assert vs. just appendQuadState? If you&apos;re worried about writing an ASSERT, you could always just make sure that the passDrawQuad&apos;s quad state id in the quad state list has the same pointer as the passDrawQuad&apos;s quad state pointer?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703233</commentid>
    <comment_count>7</comment_count>
      <attachid>160206</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-23 12:10:21 -0700</bug_when>
    <thetext>Comment on attachment 160206
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:106
&gt;&gt; +    m_currentSharedQuadState = sharedQuadState.get();
&gt; 
&gt; Why useSharedQuadState + this stateful &apos;current&apos; variable only used for an assert vs. just appendQuadState? If you&apos;re worried about writing an ASSERT, you could always just make sure that the passDrawQuad&apos;s quad state id in the quad state list has the same pointer as the passDrawQuad&apos;s quad state pointer?

Actually I was thinking ahead to dropping the sharedQuadState if all quads for it were culled. So only allowing you to append quads when the sharedQuadState is active. Since this patch doesn&apos;t do that though, it doesn&apos;t need the m_current thing either, true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703254</commentid>
    <comment_count>8</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-23 12:27:02 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 160206 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=160206&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:106
&gt; &gt;&gt; +    m_currentSharedQuadState = sharedQuadState.get();
&gt; &gt; 
&gt; &gt; Why useSharedQuadState + this stateful &apos;current&apos; variable only used for an assert vs. just appendQuadState? If you&apos;re worried about writing an ASSERT, you could always just make sure that the passDrawQuad&apos;s quad state id in the quad state list has the same pointer as the passDrawQuad&apos;s quad state pointer?
&gt; 
&gt; Actually I was thinking ahead to dropping the sharedQuadState if all quads for it were culled. So only allowing you to append quads when the sharedQuadState is active. Since this patch doesn&apos;t do that though, it doesn&apos;t need the m_current thing either, true.

Ohhh, that makes a lot more sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703255</commentid>
    <comment_count>9</comment_count>
      <attachid>160206</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-23 12:30:32 -0700</bug_when>
    <thetext>Comment on attachment 160206
Patch

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

R=me, with a few nits.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadCuller.cpp:87
&gt; +    ASSERT(passDrawQuad-&gt;sharedQuadState() == m_currentSharedQuadState);

Could you also assert here that m_sharedQuadStateList[passDrawQuad-&gt;sharedQuadStateId()] == m_currentSharedQuadState and that m_currentSharedQuadState-&gt;id() == passDrawQuad-&gt;sharedQuadStateId()? There&apos;s a lot of duplicate state running around (which I think is necessary), but I just want extra sanity checks that everything is as expected.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCQuadSink.h:44
&gt; +    virtual CCSharedQuadState* useSharedQuadState(PassOwnPtr&lt;CCSharedQuadState&gt;) = 0;

Add a comment here describing that this needs to be set prior to calling append with a quad using it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703271</commentid>
    <comment_count>10</comment_count>
      <attachid>160218</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-23 12:52:13 -0700</bug_when>
    <thetext>Created attachment 160218
Patch

Ok I added some more asserts, thanks. I don&apos;t want to assert that id == array index, because it doesn&apos;t have to be. So instead I assert that it&apos;s the last thing in the array (it&apos;s current so it should be most recently added).

I stuck the comment in CCQuadSink (and added the missing &quot;CCQuadSink implementation&quot; comment to CCQuadCuller).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703334</commentid>
    <comment_count>11</comment_count>
      <attachid>160218</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 14:01:06 -0700</bug_when>
    <thetext>Comment on attachment 160218
Patch

Clearing flags on attachment: 160218

Committed r126482: &lt;http://trac.webkit.org/changeset/126482&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>703335</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-23 14:01:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160027</attachid>
            <date>2012-08-22 16:02:35 -0700</date>
            <delta_ts>2012-08-23 11:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94752-20120822190232.patch</filename>
            <type>text/plain</type>
            <size>63553</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmMzAyYjA5MWQ1MTZm
YTAyMGRjYThmMjllYzI5YjE0OWEyYzcyYS4uOTVkMmM2NTViM2QzODg0N2UwZTU0NmUzOTkyZDhm
ZDA1Y2E0MmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgwIEBACisyMDEyLTA4LTIyICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Jl
YXRlIHNoYXJlZFF1YWRTdGF0ZSBhdCBzYW1lIHRpbWUgYXMgY3JlYXRpbmcgcXVhZHMgYW5kIGdp
dmUgdGhlbSB0byB0aGUgcXVhZFNpbmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk0NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgQ0NSZW5kZXJQYXNzIHdvdWxkIGNyZWF0ZSBhIHNo
YXJlZFF1YWRTdGF0ZSBmb3IgYSBsYXllciwKKyAgICAgICAgYW5kIHBhc3MgaXQgaW4gdG8gdGhl
IGxheWVyLiBUaGVuIHRoZSBsYXllciB3b3VsZCBwb2ludCBhbGwgaXRzIHF1YWRzCisgICAgICAg
IGF0IHRoZSBzaGFyZWRRdWFkU3RhdGUuCisKKyAgICAgICAgQWZ0ZXIgdGhpcyBjaGFuZ2UsIHRo
ZSBsYXllciBjcmVhdGVzIGl0cyBvd24gc2hhcmVkUXVhZFN0YXRlLCBwb2ludHMKKyAgICAgICAg
aXRzIHF1YWRzIGF0IGl0LiBJdCB0aGVuIHBhc3NlcyBpdHMgcXVhZHMsIGFuZCBpdHMgc2hhcmVk
UXVhZFN0YXRlCisgICAgICAgIGJhY2sgdG8gdGhlIFJlbmRlclBhc3MgdG8gaG9sZCBvbnRvLgor
CisgICAgICAgIFRoaXMgYXBwcm9hY2ggYWxsb3dzIGEgbGF5ZXIgdG8gZ2VuZXJhdGUgbW9yZSB0
aGFuIG9uZSBzaGFyZWRRdWFkU3RhdGUKKyAgICAgICAgd2l0aCBkaWZmZXJlbnQgcXVhZHMgcG9p
bnRpbmcgdG8gZGlmZmVyZW50IHNoYXJlZCBzdGF0ZXMuIEFsc28sIHRoaXMKKyAgICAgICAgd2ls
bCBhbGxvdyB0aGUgbGF5ZXIgcmVwcmVzZW50aW5nIGEgZGVsZWdhdGluZyByZW5kZXJlciAodmlh
IHViZXJjb21wKQorICAgICAgICB0byBjb3B5IHNoYXJlZFF1YWRTdGF0ZXMgZnJvbSB0aGUgZGVs
ZWdhdGluZyByZW5kZXJlciBpbiBvcmRlciB0bworICAgICAgICBtZXJnZSBpdHMgcXVhZHMgaW50
byB0aGUgUmVuZGVyUGFzcyBmb3IgdGhlIGN1cnJlbnQgcmVuZGVyZXIuCisKKyAgICAgICAgQ292
ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91ci4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXlMYXllckltcGwuaDoKKyAgICAgICAgKENDSGVhZHNVcERpc3BsYXlMYXllcklt
cGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSU9TdXJmYWNlTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
T1N1cmZhY2VMYXllckltcGwuaDoKKyAgICAgICAgKENDSU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKENDTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRD
dWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjpnZW5lcmF0ZVNoYXJlZFF1YWRTdGF0
ZUlkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVy
OjphcHBlbmRTaGFyZWRRdWFkU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChD
Q1F1YWRDdWxsZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZFNpbmsuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NRdWFkU2luayk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFj
ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0Zp
bGxTY3JlZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVu
ZGVyUGFzcy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1JlbmRlclBhc3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoK
KyAgICAgICAgKENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oOgorICAgICAgICAoQ0NT
Y3JvbGxiYXJMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlk
Q29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKENDU29saWRD
b2xvckxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZUxheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5oOgorICAgICAgICAoQ0NUZXh0dXJlTGF5ZXJJbXBsKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChDQ1RpbGVkTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1ZpZGVvTGF5
ZXJJbXBsKToKKwogMjAxMi0wOC0yMiAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTI1NTc4KTogZmFzdC9yZWdleC91bmljb2RlQ2FzZUlu
c2Vuc2l0aXZlLmh0bWwgY3Jhc2ggb24gTGludXggRGVidWcgQ2hyb21pdW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNzgwNGVjZDk3ZjE0OWJmMDgzNDkwMzIzMGU3N2IwMDE3Mjk0MTIy
Zi4uY2NkNzRjZDA1MzE3MDg4YzQ3YzYxMTQzNDNkNDc2NmNkNTdlYTExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wOC0yMiAgRGFuYSBKYW5zZW5z
ICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENyZWF0ZSBzaGFy
ZWRRdWFkU3RhdGUgYXQgc2FtZSB0aW1lIGFzIGNyZWF0aW5nIHF1YWRzIGFuZCBnaXZlIHRoZW0g
dG8gdGhlIHF1YWRTaW5rCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NDc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRl
c3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpFdmljdGlvblRlc3RM
YXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0
LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAg
KiB0ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJU
ZXN0Q29tbW9uOjpURVNUKToKKyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5j
cHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgIChDQ0xheWVy
VGVzdENvbW1vbjo6Z2V0UXVhZHMpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmNvdmVy
YWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29t
bW9uOjpjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKToKKyAgICAgICAgKENDTGF5
ZXJUZXN0Q29tbW9uOjpjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk6CisgICAg
ICAgICogdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0ND
UXVhZEN1bGxlcjo6TW9ja0NDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0NR
dWFkQ3VsbGVyOjpoYWRNaXNzaW5nVGlsZXMpOgorICAgICAgICAoTW9ja0NDUXVhZEN1bGxlcik6
CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0NRdWFkQ3VsbGVyOjpxdWFkTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrQ0NRdWFkQ3VsbGVyOjpzaGFyZWRRdWFkU3RhdGVMaXN0KToKKwogMjAx
Mi0wOC0yMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hl
YWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcAppbmRleCA1ZmRkMmNkNjlhZGVkNzBiYzAwZTYwNjBj
Y2QwNzgyNzZkM2Y2YTI5Li5mMWQ5MDhhMTRjNzU5MzY5MzRlMjkxMzM5NDJhZWQ1MGRjY2IxNDE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcApA
QCAtOTEsMTYgKzkxLDE5IEBAIHZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6d2lsbERy
YXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICBtX2h1ZFRl
eHR1cmUtPmFsbG9jYXRlKENDUmVuZGVyZXI6OkltcGxQb29sLCBib3VuZHMoKSwgR3JhcGhpY3ND
b250ZXh0M0Q6OlJHQkEsIENDUmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKIH0K
IAotdm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9v
bCYpCit2b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBib29sJikKIHsKICAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGUgPSBjcmVhdGVTaGFyZWRRdWFkU3RhdGUocXVhZFNpbmsuZ2VuZXJhdGVTaGFyZWRRdWFk
U3RhdGVJZCgpKTsKKwogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkp
OwogICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhhID0gdHJ1ZTsKICAgICBGbG9hdFJlY3QgdXZS
ZWN0KDAsIDAsIDEsIDEpOwogICAgIGJvb2wgZmxpcHBlZCA9IGZhbHNlOwotICAgIHF1YWRMaXN0
LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJl
Y3QsIG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBw
ZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIHF1YWRSZWN0LCBtX2h1ZFRleHR1cmUtPmlkKCksIHByZW11bHRp
cGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgcXVhZFNpbmsuYXBwZW5kU2hhcmVk
UXVhZFN0YXRlKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQogCiB2b2lkIENDSGVhZHNV
cERpc3BsYXlMYXllckltcGw6OnVwZGF0ZUh1ZFRleHR1cmUoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVy
SW1wbC5oCmluZGV4IDFlZTI0YzQ3ZThhZTUyZWRlNzk2MWYwNDU0YzUxODZlYTUzMmNhMDcuLmY3
ZDQ3N2ZmZjk4ZGUwNzk2MGZhYjMwN2YyNTEwYzcwYTgwNDNmODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlM
YXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRsYXM+KTsKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJ
REU7CiAgICAgdm9pZCB1cGRhdGVIdWRUZXh0dXJlKENDUmVzb3VyY2VQcm92aWRlciopOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lPU3VyZmFjZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKaW5kZXggMjgzYjdjOTlhMGVk
YzJjOTdmZTUwMTljNzc2MDc1ZGQ5ZWVhMzU3MS4uYTJmNzQzYWQwNmVhNzQzZGRiZWFlZjI3NmNk
ZTdmZDJiZGVlZjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNw
cApAQCAtOTYsMTAgKzk2LDE0IEBAIHZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OndpbGxEcmF3
KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICB9CiB9CiAKLXZvaWQg
Q0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBj
b25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NJ
T1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29s
JikKIHsKKyAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGNy
ZWF0ZVNoYXJlZFF1YWRTdGF0ZShxdWFkU2luay5nZW5lcmF0ZVNoYXJlZFF1YWRTdGF0ZUlkKCkp
OworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlLmdl
dCgpKTsKKwogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygp
KTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZhY2VUZXh0dXJl
SWQsIENDSU9TdXJmYWNlRHJhd1F1YWQ6OkZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmQo
Q0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgcXVhZFJl
Y3QsIG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZhY2VUZXh0dXJlSWQsIENDSU9TdXJmYWNlRHJh
d1F1YWQ6OkZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmRTaGFyZWRRdWFkU3RhdGUoc2hh
cmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6
OmR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaAppbmRleCAwMTliOGZlMmRhYTY2NWU3
NmY4N2Y4YWMwY2JmMjVlZjg4ZDU5YzI1Li4zYTU1YmYyZTJlNmYyYWYzMzA0ZTAwMDc1YWZkMzgz
NzIyZTQ3OWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVu
c2lnbmVkIGlvU3VyZmFjZUlkLCBjb25zdCBJbnRTaXplJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYg
aGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIGRpZExvc2VDb250ZXh0KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApp
bmRleCBlOTUxYzVkN2M0NjUyM2RiM2FkYWFmNmE3ZTU0YmFmMTI5ZjgzYjlmLi4yNDA4ZDA3YWIz
YmE1ZjQxOTVjNmU0YWFmZWQ3ZjViYmMwYmFkNzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAg
LTk1LDkgKzk1LDggQEAgcHVibGljOgogICAgIC8vIHRoZSBsYXllciBpcyBkZXN0cm95ZWQuIFRv
IGVuZm9yY2UgdGhpcywgYW55IGNsYXNzIHRoYXQgb3ZlcnJpZGVzCiAgICAgLy8gd2lsbERyYXcv
ZGlkRHJhdyBtdXN0IGNhbGwgdGhlIGJhc2UgY2xhc3MgdmVyc2lvbi4KICAgICB2aXJ0dWFsIHZv
aWQgd2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGVu
ZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgeyB9CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
LCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KEND
UmVzb3VyY2VQcm92aWRlciopOwotICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVh
ZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OwogCiAgICAgdmlydHVhbCBD
Q1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgY29udGVudHNSZXNvdXJjZUlkKCkgY29uc3Q7
CiAKQEAgLTI3NSw2ICsyNzQsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q0NMYXllckltcGwoaW50KTsKIAorICAgIHZvaWQgYXBwZW5kRGVidWdCb3JkZXJRdWFkKENDUXVh
ZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSopIGNvbnN0OworCiAgICAgdmlydHVhbCB2
b2lkIGR1bXBMYXllclByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0Owog
ICAgIHN0YXRpYyB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKaW5kZXggZjJlOWU5ZmZlZmI2YWY1NjVlNzFkODRhNjU4
OTQzMjc5ZGQzNGI3NC4uMGI3NWQyY2IzMDM2OGMxYWM2MDJkOTg2NTU3MTc4M2EzNmZiZjUyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkQ3VsbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCkBAIC00OCw4ICs0OCw5IEBAIHN0YXRpYyBjb25z
dCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQgPSAxNjA7CiBzdGF0aWMgY29uc3QgaW50IGRl
YnVnVGlsZUJvcmRlckNvbG9yR3JlZW4gPSAxMDA7CiBzdGF0aWMgY29uc3QgaW50IGRlYnVnVGls
ZUJvcmRlckNvbG9yQmx1ZSA9IDA7CiAKLUNDUXVhZEN1bGxlcjo6Q0NRdWFkQ3VsbGVyKENDUXVh
ZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDT2NjbHVzaW9uVHJh
Y2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdCb3Jk
ZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKQorQ0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIoQ0NR
dWFkTGlzdCYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYgc2hhcmVkUXVhZFN0YXRl
TGlzdCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQ09jY2x1c2lvblRyYWNrZXJJbXBsKiBv
Y2NsdXNpb25UcmFja2VyLCBib29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMsIGJv
b2wgZm9yU3VyZmFjZSkKICAgICA6IG1fcXVhZExpc3QocXVhZExpc3QpCisgICAgLCBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3Qoc2hhcmVkUXVhZFN0YXRlTGlzdCkKICAgICAsIG1fbGF5ZXIobGF5ZXIp
CiAgICAgLCBtX29jY2x1c2lvblRyYWNrZXIob2NjbHVzaW9uVHJhY2tlcikKICAgICAsIG1fc2hv
d0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcyhzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1
YWRzKQpAQCAtOTQsNSArOTUsMTUgQEAgYm9vbCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3du
UHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkKICAgICByZXR1cm4gYXBwZW5kUXVhZEludGVy
bmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVjdCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJh
Y2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKTsKIH0KIAoraW50IENDUXVh
ZEN1bGxlcjo6Z2VuZXJhdGVTaGFyZWRRdWFkU3RhdGVJZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5zaXplKCk7Cit9CisKK3ZvaWQgQ0NRdWFkQ3VsbGVyOjph
cHBlbmRTaGFyZWRRdWFkU3RhdGUoUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gcGFzc1No
YXJlZFF1YWRTdGF0ZSkKK3sKKyAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHBhc3NT
aGFyZWRRdWFkU3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAppbmRleCBl
NjdiNDQ2OGQ2OGIxMjg3ZjRiMjkwOTVhNGI2NTY3ODQzNDU5MWUxLi42YmRiZDJhNzcwYWRiZDA4
MWY1ZjczNDY4NDJmYzY3OGRiOWYwOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApAQCAtMjcs
MjcgKzI3LDMwIEBACiAjZGVmaW5lIENDUXVhZEN1bGxlcl9oCiAKICNpbmNsdWRlICJDQ1F1YWRT
aW5rLmgiCisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwotY2xhc3MgQ0NRdWFk
TGlzdDsKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgU3VyZmFjZVR5cGU+
CiBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlOwogCiBjbGFzcyBDQ1F1YWRDdWxsZXIgOiBw
dWJsaWMgQ0NRdWFkU2luayB7CiBwdWJsaWM6Ci0gICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3Qm
LCBDQ0xheWVySW1wbCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGws
IENDUmVuZGVyU3VyZmFjZT4qLCBib29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMs
IGJvb2wgZm9yU3VyZmFjZSk7Ci0KKyAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIENDU2hh
cmVkUXVhZFN0YXRlTGlzdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2Vy
QmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiosIGJvb2wgc2hvd0N1bGxpbmdXaXRo
RGVidWdCb3JkZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKTsKICAgICB2aXJ0dWFsIH5DQ1F1YWRD
dWxsZXIoKSB7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0
byB0aGUgbGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KLSAg
ICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFk
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVh
ZD4pIE9WRVJSSURFOworCisgICAgdmlydHVhbCBpbnQgZ2VuZXJhdGVTaGFyZWRRdWFkU3RhdGVJ
ZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRTaGFyZWRRdWFkU3Rh
dGUoUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4pIE9WRVJSSURFOwogCiAgICAgYm9vbCBo
YXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKSB7IHJldHVybiBtX2hhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsgfQogCiBwcml2YXRlOgogICAgIENDUXVhZExp
c3QmIG1fcXVhZExpc3Q7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBtX3NoYXJlZFF1YWRT
dGF0ZUxpc3Q7CiAgICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7CiAgICAgY29uc3QgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiogbV9vY2NsdXNpb25U
cmFja2VyOwogICAgIGJvb2wgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NR
dWFkU2luay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NRdWFkU2luay5oCmluZGV4IDRhZTZmMjM4YTQ1ZmNhMGYxNjk5Y2FiYWMyM2ZhNDMwMGU5OWFh
MzcuLjRkMjllNDRiNzZiMzcwMjVlNWUzNDk4NWJiNDU1ZmQ3YTY2MDg0MzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1
YWRTaW5rLmgKQEAgLTMyLDEyICszMiwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENDRHJhd1F1YWQ7CiAKK3N0cnVjdCBDQ1NoYXJlZFF1YWRTdGF0ZTsKKwogY2xhc3MgQ0NRdWFk
U2luayB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NRdWFkU2luaygpIHsgfQogCiAgICAgLy8g
UmV0dXJucyB0cnVlIGlmIHRoZSBxdWFkIGlzIGFkZGVkIHRvIHRoZSBsaXN0LCBhbmQgZmFsc2Ug
aWYgdGhlIHF1YWQgaXMgZW50aXJlbHkgY3VsbGVkLgogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQo
UGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpID0gMDsKKworICAgIHZpcnR1YWwg
aW50IGdlbmVyYXRlU2hhcmVkUXVhZFN0YXRlSWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGFwcGVuZFNoYXJlZFF1YWRTdGF0ZShQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPikg
PSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMzEzM2UyM2Q1Yjc2
ZThiMGRlNDQxYThjNjljYzQyNWM0YjM3MWQwMC4uMWU5M2UyNzBhNjdhZWZmZmQxOTViMGRjYzg0
Zjg2ZDVjMzhiYmYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01Nyw0MCArNTcs
MjYgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRT
dXJmYWNlLCBpbnQgaWQpCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihD
Q0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNr
ZXIsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKIHsKICAgICBjb25zdCBib29sIGZvclN1cmZhY2Ug
PSBmYWxzZTsKLSAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwg
b2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsK
KyAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBtX3NoYXJlZFF1YWRTdGF0
ZUxpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCks
IGZvclN1cmZhY2UpOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKG1fc2hhcmVkUXVhZFN0YXRlTGlz
dC5zaXplKCkpOwotICAgIGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZEN1bGxlciwg
c2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwotICAgIG1fc2hhcmVk
UXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisgICAgbGF5
ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICBtX2hh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1
c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQogCiB2b2lkIENDUmVuZGVyUGFzczo6
YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25z
dCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwqIG9jY2x1c2lvblRyYWNrZXIpCiB7Ci0gICAgLy8gRklYTUU6IHJlbmRlciBzdXJmYWNl
IGxheWVycyBzaG91bGQgYmUgYSBDQ0xheWVySW1wbC1kZXJpdmVkIGNsYXNzIGFuZAotICAgIC8v
IG5vdCBiZSBoYW5kbGVkIHNwZWNpYWxseSBoZXJlLgogICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFj
ZSA9IHRydWU7Ci0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIs
IG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZm9yU3VyZmFjZSk7
Ci0KLSAgICBDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgp
OworICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKG1fcXVhZExpc3QsIG1fc2hhcmVkUXVhZFN0
YXRlTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMo
KSwgZm9yU3VyZmFjZSk7CiAKLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IHN1cmZhY2UtPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShtX3NoYXJlZFF1YWRTdGF0
ZUxpc3Quc2l6ZSgpKTsKICAgICBib29sIGlzUmVwbGljYSA9IGZhbHNlOwotICAgIHN1cmZhY2Ut
PmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNh
LCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKLSAgICBtX3NoYXJlZFF1YWRTdGF0ZUxp
c3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwotCi0gICAgbV9oYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5oYXNPY2NsdXNpb25Gcm9t
T3V0c2lkZVRhcmdldFN1cmZhY2UoKTsKLQotICAgIGlmICghbGF5ZXItPmhhc1JlcGxpY2EoKSkK
LSAgICAgICAgcmV0dXJuOworICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7CiAK
ICAgICAvLyBBZGQgcmVwbGljYSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0aGF0IGl0IGFwcGVhcnMg
YmVsb3cgdGhlIHN1cmZhY2UuCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByZXBsaWNh
U2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZSht
X3NoYXJlZFF1YWRTdGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBpc1JlcGxpY2EgPSB0cnVlOwotICAg
IHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUu
Z2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7Ci0gICAgbV9z
aGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChyZXBsaWNhU2hhcmVkUXVhZFN0YXRlLnJlbGVhc2Uo
KSk7CisgICAgaWYgKGxheWVyLT5oYXNSZXBsaWNhKCkpIHsKKyAgICAgICAgaXNSZXBsaWNhID0g
dHJ1ZTsKKyAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKKyAgICB9CiAK
ICAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVy
Lmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQpAQCAtMTA0LDEzICs5
MCwxNiBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXll
ckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZQogICAgIGlmIChmaWxsUmVnaW9uLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBmb3JTdXJmYWNlID0gZmFsc2U7Cisg
ICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVM
aXN0LCByb290TGF5ZXIsICZvY2NsdXNpb25UcmFja2VyLCByb290TGF5ZXItPmhhc0RlYnVnQm9y
ZGVycygpLCBmb3JTdXJmYWNlKTsKKwogICAgIC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUgcXVhZCBz
dGF0ZSBmb3IgdGhlIGd1dHRlciBxdWFkcywgYXMgdGhlIHJvb3QgbGF5ZXIKICAgICAvLyBkb2Vz
bid0IGhhdmUgYW55IGJvdW5kcyBhbmQgc28gY2FuJ3QgZ2VuZXJhdGUgdGhpcyBpdHNlbGYuCiAg
ICAgLy8gRklYTUU6IE1ha2UgdGhlIGd1dHRlciBxdWFkcyBnZW5lcmF0ZWQgYnkgdGhlIHNvbGlk
IGNvbG9yIGxheWVyIChtYWtlIGl0IHNtYXJ0ZXIgYWJvdXQgZ2VuZXJhdGluZyBxdWFkcyB0byBm
aWxsIHVub2NjbHVkZWQgYXJlYXMpLgogICAgIEludFJlY3Qgcm9vdFRhcmdldFJlY3QgPSByb290
TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJlY3QoKTsKICAgICBmbG9hdCBvcGFjaXR5
ID0gMTsKICAgICBib29sIG9wYXF1ZSA9IHRydWU7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKDAsIHJvb3RM
YXllci0+ZHJhd1RyYW5zZm9ybSgpLCByb290VGFyZ2V0UmVjdCwgcm9vdFRhcmdldFJlY3QsIG9w
YWNpdHksIG9wYXF1ZSk7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFk
U3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRDdWxsZXIuZ2VuZXJhdGVTaGFy
ZWRRdWFkU3RhdGVJZCgpLCByb290TGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSwgcm9vdFRhcmdldFJl
Y3QsIHJvb3RUYXJnZXRSZWN0LCBvcGFjaXR5LCBvcGFxdWUpOwogICAgIEFTU0VSVChyb290TGF5
ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkuaXNJbnZlcnRpYmxlKCkpOwogICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSA9IHJvb3RMYXllci0+c2NyZWVu
U3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCk7CiAgICAgVmVjdG9yPEludFJlY3Q+IGZpbGxSZWN0
cyA9IGZpbGxSZWdpb24ucmVjdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNjdlY2I0
MzA2YTBmNjc0YzZhYzc1MmRlM2YxYTY0MDYxNWFlMGI4Mi4uOTMwYzhhN2M0MzFhOWNhMmMzM2Q3
ZjMyMGQyM2YxMjljZTFkZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTUzLDYgKzUz
LDggQEAgcHVibGljOgogICAgIGlubGluZSBjb25zdEJhY2tUb0Zyb250SXRlcmF0b3IgYmFja1Rv
RnJvbnRFbmQoKSBjb25zdCB7IHJldHVybiByZW5kKCk7IH0KIH07CiAKK3R5cGVkZWYgVmVjdG9y
PE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3Q7CisKIGNs
YXNzIENDUmVuZGVyUGFzcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNz
KTsKIHB1YmxpYzoKQEAgLTkyLDEwICs5NCwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBpbnQgbV9p
ZDsKICAgICBDQ1F1YWRMaXN0IG1fcXVhZExpc3Q7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0
IG1fc2hhcmVkUXVhZFN0YXRlTGlzdDsKICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0OwogICAgIEludFJlY3QgbV9vdXRwdXRSZWN0Owog
ICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7Ci0gICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gPiBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Q7CiAgICAgYm9vbCBtX2hhc1RyYW5zcGFy
ZW50QmFja2dyb3VuZDsKICAgICBib29sIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRT
dXJmYWNlOwogICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Jl
bmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCAxMWVkYmZhODhiNDAwNmYyODcxN2VlZWEw
NmFjMmJkOWJmNWZmNTk1Li5lZDNhMzU2MTI3MjRkYjliY2JlMzc2YTlmOGQ5NDUxOTA3MGNiZmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTE4MSwzMCArMTgxLDIxIEBA
IHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBlZFJlY3RJblRhcmdldChjb25zdCBD
Q0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJuIGNsaXBwZWRSZWN0SW5UYXJnZXQ7
CiB9CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDUmVuZGVyU3VyZmFjZTo6Y3Jl
YXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3QKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjph
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVu
ZGVyUGFzc0lkKQogewotICAgIEludFJlY3QgY2xpcHBlZFJlY3RJblRhcmdldCA9IGNvbXB1dGVD
bGlwcGVkUmVjdEluVGFyZ2V0KG1fb3duaW5nTGF5ZXIpOwotICAgIGJvb2wgaXNPcGFxdWUgPSBm
YWxzZTsKLSAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpZCwgbV9kcmF3VHJh
bnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBjbGlwcGVkUmVjdEluVGFyZ2V0LCBtX2RyYXdPcGFjaXR5
LCBpc09wYXF1ZSk7Ci19CisgICAgQVNTRVJUKCFmb3JSZXBsaWNhIHx8IG1fb3duaW5nTGF5ZXIt
Pmhhc1JlcGxpY2EoKSk7CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDUmVuZGVy
U3VyZmFjZTo6Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0Ci17CiAg
ICAgSW50UmVjdCBjbGlwcGVkUmVjdEluVGFyZ2V0ID0gY29tcHV0ZUNsaXBwZWRSZWN0SW5UYXJn
ZXQobV9vd25pbmdMYXllcik7CiAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNlOwotICAgIHJldHVy
biBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBt
X2NvbnRlbnRSZWN0LCBjbGlwcGVkUmVjdEluVGFyZ2V0LCBtX2RyYXdPcGFjaXR5LCBpc09wYXF1
ZSk7Ci19Ci0KLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBx
dWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQotewotICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293
bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOworICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBkcmF3VHJhbnNmb3JtID0gZm9yUmVwbGljYSA/IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0g
OiBtX2RyYXdUcmFuc2Zvcm07CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRR
dWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKHF1YWRTaW5rLmdlbmVyYXRlU2hh
cmVkUXVhZFN0YXRlSWQoKSwgZHJhd1RyYW5zZm9ybSwgbV9jb250ZW50UmVjdCwgY2xpcHBlZFJl
Y3RJblRhcmdldCwgbV9kcmF3T3BhY2l0eSwgaXNPcGFxdWUpOwogCiAgICAgaWYgKG1fb3duaW5n
TGF5ZXItPmhhc0RlYnVnQm9yZGVycygpKSB7CiAgICAgICAgIGludCByZWQgPSBmb3JSZXBsaWNh
ID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JSZWQgOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvclJl
ZDsKICAgICAgICAgaW50IGdyZWVuID0gZm9yUmVwbGljYSA/ICBkZWJ1Z1JlcGxpY2FCb3JkZXJD
b2xvckdyZWVuIDogZGVidWdTdXJmYWNlQm9yZGVyQ29sb3JHcmVlbjsKICAgICAgICAgaW50IGJs
dWUgPSBmb3JSZXBsaWNhID8gZGVidWdSZXBsaWNhQm9yZGVyQ29sb3JCbHVlIDogZGVidWdTdXJm
YWNlQm9yZGVyQ29sb3JCbHVlOwogICAgICAgICBTa0NvbG9yIGNvbG9yID0gU2tDb2xvclNldEFS
R0IoZGVidWdTdXJmYWNlQm9yZGVyQWxwaGEsIHJlZCwgZ3JlZW4sIGJsdWUpOwotICAgICAgICBx
dWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsKKyAg
ICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZS5nZXQoKSwgY29udGVudFJlY3QoKSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRl
cldpZHRoKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEJ5IHVzaW5nIHRoZSBzYW1lIFJlbmRl
clN1cmZhY2UgZm9yIGJvdGggdGhlIGNvbnRlbnQgYW5kIGl0cyByZWZsZWN0aW9uLApAQCAtMjM3
LDggKzIyOCw5IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlCiAgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1hc2tSZXNvdXJjZUlkID0gbWFza0xheWVyID8gbWFza0xheWVyLT5j
b250ZW50c1Jlc291cmNlSWQoKSA6IDA7CiAgICAgSW50UmVjdCBjb250ZW50c0NoYW5nZWRTaW5j
ZUxhc3RGcmFtZSA9IGNvbnRlbnRzQ2hhbmdlZCgpID8gbV9jb250ZW50UmVjdCA6IEludFJlY3Qo
KTsKIAotICAgIHF1YWRMaXN0LmFwcGVuZChDQ1JlbmRlclBhc3NEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgY29udGVudFJlY3QoKSwgcmVuZGVyUGFzc0lkLCBmb3JSZXBsaWNhLCBt
YXNrUmVzb3VyY2VJZCwgY29udGVudHNDaGFuZ2VkU2luY2VMYXN0RnJhbWUsCisgICAgcXVhZFNp
bmsuYXBwZW5kKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdl
dCgpLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIG1hc2tSZXNvdXJj
ZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXNrVGV4Q29vcmRTY2FsZVgsIG1hc2tUZXhD
b29yZFNjYWxlWSwgbWFza1RleENvb3JkT2Zmc2V0WCwgbWFza1RleENvb3JkT2Zmc2V0WSkpOwor
ICAgIHF1YWRTaW5rLmFwcGVuZFNoYXJlZFF1YWRTdGF0ZShzaGFyZWRRdWFkU3RhdGUucmVsZWFz
ZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCAwZTUxOGIyYWFm
NDg3NTE4NmRmMmU2OTU2YTY1YTFhNDI1NzgxYmVmLi4yZjNkYjUwMDA4NzQyNTBlOTE4MDA5Zjgw
MTk4Y2NiMTRjNjJjZjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtMTA0LDEw
ICsxMDQsNyBAQCBwdWJsaWM6CiAKICAgICBDQ0RhbWFnZVRyYWNrZXIqIGRhbWFnZVRyYWNrZXIo
KSBjb25zdCB7IHJldHVybiBtX2RhbWFnZVRyYWNrZXIuZ2V0KCk7IH0KIAotICAgIFBhc3NPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0
OwotICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVJlcGxpY2FTaGFyZWRR
dWFkU3RhdGUoaW50IGlkKSBjb25zdDsKLQotICAgIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYsIENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lk
KTsKKyAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sIGZvclJlcGxpY2EsIGlu
dCByZW5kZXJQYXNzSWQpOwogCiBwcml2YXRlOgogICAgIENDTGF5ZXJJbXBsKiBtX293bmluZ0xh
eWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCmluZGV4IGUyOTkz
MTg4NDZlZTQ1MjViNTYxMTcyYmNmNjY3MzNhMGZjNzkxNGYuLmE0ZmE5ZjEyN2E1NDMwNzIxMzIy
YmNlNjBmMmMyOGM1ZWM1ZTkyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIEZsb2F0UmVjdCB0b1VWUmVjdChjb25z
dCBXZWJSZWN0JiByLCBjb25zdCBJbnRSZWN0JiBib3VuZHMpCiAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxmbG9hdD4oci53aWR0aCkgLyBib3VuZHMud2lkdGgoKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KHIuaGVpZ2h0KSAvIGJvdW5kcy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgQ0NTY3Jv
bGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTY3JvbGxi
YXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIHsK
ICAgICBib29sIHByZW11bHRpcGxlZEFscGhhID0gZmFsc2U7CiAgICAgYm9vbCBmbGlwcGVkID0g
ZmFsc2U7CkBAIC0xMDEsMjMgKzEwMSwyOCBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkUwogICAg
IGlmICghbV9nZW9tZXRyeS0+aGFzVGh1bWIoJm1fc2Nyb2xsYmFyKSkKICAgICAgICAgdGh1bWJS
ZWN0ID0gV2ViUmVjdCgpOwogCisgICAgaWYgKCFtX2JhY2tUcmFja1Jlc291cmNlSWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlID0gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKHF1YWRTaW5rLmdlbmVyYXRlU2hhcmVkUXVhZFN0
YXRlSWQoKSk7CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCkpOworCiAgICAgaWYgKG1fdGh1bWJSZXNvdXJjZUlkICYmICF0aHVtYlJlY3Qu
aXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxDQ1RleHR1cmVEcmF3UXVhZD4gcXVhZCA9IEND
VGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBJbnRSZWN0KHRodW1iUmVj
dC54LCB0aHVtYlJlY3QueSwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KSwgbV90
aHVtYlJlc291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOworICAg
ICAgICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHF1YWQgPSBDQ1RleHR1cmVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgSW50UmVjdCh0aHVtYlJlY3QueCwgdGh1bWJS
ZWN0LnksIHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGh1bWJSZXNvdXJj
ZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKICAgICAgICAgcXVhZC0+
c2V0TmVlZHNCbGVuZGluZygpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQocXVhZC5yZWxlYXNl
KCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQocXVhZC5yZWxlYXNlKCkpOwogICAgIH0KIAot
ICAgIGlmICghbV9iYWNrVHJhY2tSZXNvdXJjZUlkKQotICAgICAgICByZXR1cm47Ci0KICAgICAv
LyBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBpbiB0d28gcGFydHMgaWYgd2Ugd2VyZSBnaXZlbiBh
IHRleHR1cmUgZm9yIHRoZSBmb3J3YXJkIHRyYWNrIHBhcnQuCiAgICAgaWYgKG1fZm9yZVRyYWNr
UmVzb3VyY2VJZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRMaXN0
LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVj
dChmb3JlVHJhY2tSZWN0LngsIGZvcmVUcmFja1JlY3QueSwgZm9yZVRyYWNrUmVjdC53aWR0aCwg
Zm9yZVRyYWNrUmVjdC5oZWlnaHQpLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQsIHByZW11bHRpcGxl
ZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCkpOwor
ICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRR
dWFkU3RhdGUuZ2V0KCksIEludFJlY3QoZm9yZVRyYWNrUmVjdC54LCBmb3JlVHJhY2tSZWN0Lnks
IGZvcmVUcmFja1JlY3Qud2lkdGgsIGZvcmVUcmFja1JlY3QuaGVpZ2h0KSwgbV9mb3JlVHJhY2tS
ZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwgYm91
bmRzUmVjdCksIGZsaXBwZWQpKTsKIAogICAgIC8vIE9yZGVyIG1hdHRlcnMgaGVyZTogc2luY2Ug
dGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0aGUgZW50aXJlIGNvbnRl
bnRzIHJlY3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBhbmQKICAgICAvLyBm
b3JlIHRyYWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNvbnRhaW5zIChhbmQgZGlz
cGxheXMpIHRoZSBidXR0b25zLgogICAgIGlmICghYm91bmRzUmVjdC5pc0VtcHR5KCkpCi0gICAg
ICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgSW50UmVjdChib3VuZHNSZWN0KSwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0
aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChD
Q1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgSW50UmVjdChi
b3VuZHNSZWN0KSwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZS
ZWN0LCBmbGlwcGVkKSk7CisKKyAgICBxdWFkU2luay5hcHBlbmRTaGFyZWRRdWFkU3RhdGUoc2hh
cmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6
OmRpZExvc2VDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmlu
ZGV4IGNhNDBkMDk5ZmZiYzVhMmMxYTBiN2ExMDQ5Y2ViMWM0OWZhMDkyY2YuLmY4ZmQ3YmY4YzI1
ZDFhOWJjNTNkYWQwZjY1ZDI0MDdhMTc3MjM2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6Oldl
YlNjcm9sbGJhcjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQo
KSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAK
aW5kZXggMjM5ODRmOWQ0ZmFkYmZhOGZlNTE3N2EzOTYxMDY0N2FhOGQ3NTQwYi4uMjBhOTc3OTVi
MmRhMzg0MGU3YWZkMzg1MGNiNjFlMDBjN2FiMGUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nv
bGlkQ29sb3JMYXllckltcGwuY3BwCkBAIC00OSw4ICs0OSwxMSBAQCBDQ1NvbGlkQ29sb3JMYXll
ckltcGw6On5DQ1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi12b2lkIENDU29saWRDb2xv
ckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1NvbGlkQ29sb3JM
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIHsKKyAg
ICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGNyZWF0ZVNoYXJl
ZFF1YWRTdGF0ZShxdWFkU2luay5nZW5lcmF0ZVNoYXJlZFF1YWRTdGF0ZUlkKCkpOworICAgIGFw
cGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKwog
ICAgIC8vIFdlIGNyZWF0ZSBhIHNlcmllcyBvZiBzbWFsbGVyIHF1YWRzIGluc3RlYWQgb2YganVz
dCBvbmUgbGFyZ2Ugb25lIHNvIHRoYXQgdGhlCiAgICAgLy8gY3VsbGVyIGNhbiByZWR1Y2UgdGhl
IHRvdGFsIHBpeGVscyBkcmF3bi4KICAgICBpbnQgd2lkdGggPSBjb250ZW50Qm91bmRzKCkud2lk
dGgoKTsKQEAgLTU4LDkgKzYxLDExIEBAIHZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkCiAgICAgZm9y
IChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCArPSBtX3RpbGVTaXplKSB7CiAgICAgICAgIGZvciAo
aW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IG1fdGlsZVNpemUpIHsKICAgICAgICAgICAgIElu
dFJlY3Qgc29saWRUaWxlUmVjdCh4LCB5LCBtaW4od2lkdGggLSB4LCBtX3RpbGVTaXplKSwgbWlu
KGhlaWdodCAtIHksIG1fdGlsZVNpemUpKTsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChD
Q1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgc29saWRUaWxlUmVj
dCwgYmFja2dyb3VuZENvbG9yKCkpKTsKKyAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1Nv
bGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc29saWRUaWxl
UmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKICAgICAgICAgfQogICAgIH0KKworICAgIHF1YWRT
aW5rLmFwcGVuZFNoYXJlZFF1YWRTdGF0ZShzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXll
ckltcGwuaAppbmRleCBkMTlhMjMwZGNlNjk0NmQzMzgyMmFlOTk1YjNkNGNkZTU4ZWJiMmQxLi5k
OTMwODIyYzMxODVkMjNiNTY2MTI3YTQ4MWUxNmFkMDU3NzRlZmYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXll
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NvbGlkQ29sb3JMYXllckltcGwuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
fQogICAgIHZpcnR1YWwgfkNDU29saWRDb2xvckxheWVySW1wbCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJv
b2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1
YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKGludCBpZCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAppbmRleCBiOTgxZjcxM2QxYWZmY2ZhMTVl
OTUyMTliMTI4ZDZiYTAwYjBiMDVjLi4yNDA0MDUzNzlmZGVmZTI0MzM0OGI5OWQ2YjA3Y2UxNzI2
MDYzNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAKQEAgLTU4LDEy
ICs1OCwxNyBAQCB2b2lkIENDVGV4dHVyZUxheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgIG1fZXh0ZXJuYWxUZXh0dXJlUmVzb3VyY2Ug
PSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZUZyb21FeHRlcm5hbFRleHR1cmUobV90
ZXh0dXJlSWQpOwogfQogCi12b2lkIENDVGV4dHVyZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKQordm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBib29sJikKIHsKICAgICBpZiAoIW1fZXh0ZXJuYWxUZXh0dXJlUmVzb3Vy
Y2UpCiAgICAgICAgIHJldHVybjsKKworICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hh
cmVkUXVhZFN0YXRlID0gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKHF1YWRTaW5rLmdlbmVyYXRlU2hh
cmVkUXVhZFN0YXRlSWQoKSk7CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCkpOworCiAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgp
LCBjb250ZW50Qm91bmRzKCkpOwotICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVh
ZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1fZXh0ZXJuYWxUZXh0dXJlUmVz
b3VyY2UsIG1fcHJlbXVsdGlwbGllZEFscGhhLCBtX3V2UmVjdCwgbV9mbGlwcGVkKSk7CisgICAg
cXVhZFNpbmsuYXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LmdldCgpLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgbV9wcmVtdWx0aXBs
aWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmRTaGFy
ZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgQ0NUZXh0
dXJlTGF5ZXJJbXBsOjpkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRl
cikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKaW5kZXggMTUzZWI5MThlYmQxZjlh
YTRiZDAwOGY4M2EyYmQ5MDg2ODUyOWI2NS4uNTVkNDhiNDUxM2FkMzYxODQ2ZjZhN2U1ZGIxMTYw
MjUxMzRkNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTM5LDcg
KzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkNDVGV4dHVyZUxheWVySW1wbCgpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRR
dWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVS
UklERTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3NlQ29udGV4dCgpIE9WRVJSSURFOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCBhZDk5M2NhMTUwNmExMTliYTQ4YjJh
MjUzYWM4Zjg0ZDkxNmNhMDU3Li40ZThlMzdjNDNkYjc1MTdjNjFiYWViNTJhMjhkMWE1NzhmOGE1
Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMTI1LDEzICsxMjUs
MTYgQEAgRHJhd2FibGVUaWxlKiBDQ1RpbGVkTGF5ZXJJbXBsOjpjcmVhdGVUaWxlKGludCBpLCBp
bnQgaikKICAgICByZXR1cm4gYWRkZWRUaWxlOwogfQogCi12b2lkIENDVGlsZWRMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCit2b2lkIENDVGlsZWRM
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJiBoYWRNaXNz
aW5nVGlsZXMpCiB7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QgPSB2aXNpYmxlQ29u
dGVudFJlY3QoKTsKIAogICAgIGlmICghbV90aWxlciB8fCBtX3RpbGVyLT5oYXNFbXB0eUJvdW5k
cygpIHx8IGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBjcmVhdGVTaGFyZWRRdWFk
U3RhdGUocXVhZFNpbmsuZ2VuZXJhdGVTaGFyZWRRdWFkU3RhdGVJZCgpKTsKKyAgICBhcHBlbmRE
ZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSk7CisKICAgICBp
bnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9U
aWxlSW5kaWNlcyhjb250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKIApAQCAt
MTQ2LDEzICsxNDksMTUgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUKICAgICAgICAgICAgICAg
ICAgICAgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVCb3JkZXJBbHBoYSwg
ZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyTWlzc2lu
Z1RpbGVDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yQmx1ZSk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNr
Q29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJl
ZCwgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlKTsK
LSAgICAgICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYm9yZGVyQ29sb3IsIGRlYnVnVGlsZUJv
cmRlcldpZHRoKSk7CisgICAgICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3Jk
ZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgdGlsZVJlY3QsIGJvcmRl
ckNvbG9yLCBkZWJ1Z1RpbGVCb3JkZXJXaWR0aCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKG1fc2tpcHNEcmF3KQorICAgIGlmIChtX3NraXBzRHJhdykgewor
ICAgICAgICBxdWFkU2luay5hcHBlbmRTaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlLnJl
bGVhc2UoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3IgKGludCBqID0gdG9w
OyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJp
Z2h0OyArK2kpIHsKQEAgLTE2Nyw5ICsxNzIsOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQog
CiAgICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPnJlc291cmNlSWQoKSkgewogICAgICAg
ICAgICAgICAgIGlmIChkcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkTGlzdC5hcHBlbmQoQ0NDaGVja2Vy
Ym9hcmREcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QpKTsKKyAgICAg
ICAgICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRTaW5rLmFwcGVuZChDQ0NoZWNr
ZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB0aWxlUmVjdCkp
OwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1Rp
bGVzIHw9IHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJhY2tncm91bmRDb2xvcigpKSk7CisgICAgICAgICAgICAg
ICAgICAgIGhhZE1pc3NpbmdUaWxlcyB8PSBxdWFkU2luay5hcHBlbmQoQ0NTb2xpZENvbG9yRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHRpbGVSZWN0LCBiYWNrZ3JvdW5k
Q29sb3IoKSkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCkBA
IC0xOTUsOSArMjAwLDExIEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAgICAgICAgICAgICBi
b29sIGJvdHRvbUVkZ2VBQSA9IGogPT0gbV90aWxlci0+bnVtVGlsZXNZKCkgLSAxICYmIHVzZUFB
OwogCiAgICAgICAgICAgICBjb25zdCBHQzNEaW50IHRleHR1cmVGaWx0ZXIgPSBtX3RpbGVyLT5o
YXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0Nv
bnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RpbGVEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0
aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0dXJlRmls
dGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdl
QUEsIGJvdHRvbUVkZ2VBQSkpOworICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDVGlsZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCB0aWxlUmVjdCwgdGlsZU9wYXF1
ZVJlY3QsIHRpbGUtPnJlc291cmNlSWQoKSwgdGV4dHVyZU9mZnNldCwgdGV4dHVyZVNpemUsIHRl
eHR1cmVGaWx0ZXIsIGNvbnRlbnRzU3dpenpsZWQoKSwgbGVmdEVkZ2VBQSwgdG9wRWRnZUFBLCBy
aWdodEVkZ2VBQSwgYm90dG9tRWRnZUFBKSk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBxdWFk
U2luay5hcHBlbmRTaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9
CiAKIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6c2V0VGlsaW5nRGF0YShjb25zdCBDQ0xheWVyVGls
aW5nRGF0YSYgdGlsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggNmI4Nzdi
MzQxMTBiZDg1MmFkZTJjYTU5NDk5MzI1ZDc2Mzk1NjdkMi4uMWJjNjBhYmE0NzEzN2IwYzIxOGVh
MDVjOGU5YzlmMzA2YWQzODlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAt
NDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgfkNDVGlsZWRMYXllcklt
cGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJj
ZUlkIGNvbnRlbnRzUmVzb3VyY2VJZCgpIGNvbnN0IE9WRVJSSURFOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuY3BwCmluZGV4IDE0Y2IzMjcyNmU1MTQ0ZWM5ZjhiZjkxNWVmYmQ5MjIz
ZWU4OGRlOGMuLmUyZmFiZWJhMGZlN2E3NmU2NWY0NjlmMTY0YjQ5ZWUwYWZmYTZkNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlk
ZW9MYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCkBAIC0xNzcsMTMgKzE3NywxNiBAQCB2b2lk
IENDVmlkZW9MYXllckltcGw6OndpbGxEcmF3SW50ZXJuYWwoQ0NSZXNvdXJjZVByb3ZpZGVyKiBy
ZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVz
b3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fZnJhbWUt
PnRleHR1cmVJZCgpKTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgYm9vbCYpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRTaW5rLCBib29sJikKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFk
KCkpOwogCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAKKyAgICBPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGNyZWF0ZVNoYXJlZFF1YWRTdGF0
ZShxdWFkU2luay5nZW5lcmF0ZVNoYXJlZFF1YWRTdGF0ZUlkKCkpOworICAgIGFwcGVuZERlYnVn
Qm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKKwogICAgIC8vIEZJ
WE1FOiBXaGVuIHdlIHBhc3MgcXVhZHMgb3V0IG9mIHByb2Nlc3MsIHdlIG5lZWQgdG8gZG91Ymxl
LWJ1ZmZlciwgb3IKICAgICAvLyBvdGhlcndpc2Ugc3luY2hvbml6ZSB1c2Ugb2YgYWxsIHRleHR1
cmVzIGluIHRoZSBxdWFkLgogCkBAIC0xOTUsOCArMTk4LDggQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
U3RhdGUKICAgICAgICAgY29uc3QgRnJhbWVQbGFuZSYgeVBsYW5lID0gbV9mcmFtZVBsYW5lc1tX
ZWJLaXQ6OldlYlZpZGVvRnJhbWU6OnlQbGFuZV07CiAgICAgICAgIGNvbnN0IEZyYW1lUGxhbmUm
IHVQbGFuZSA9IG1fZnJhbWVQbGFuZXNbV2ViS2l0OjpXZWJWaWRlb0ZyYW1lOjp1UGxhbmVdOwog
ICAgICAgICBjb25zdCBGcmFtZVBsYW5lJiB2UGxhbmUgPSBtX2ZyYW1lUGxhbmVzW1dlYktpdDo6
V2ViVmlkZW9GcmFtZTo6dlBsYW5lXTsKLSAgICAgICAgT3duUHRyPENDWVVWVmlkZW9EcmF3UXVh
ZD4geXV2VmlkZW9RdWFkID0gQ0NZVVZWaWRlb0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCBxdWFkUmVjdCwgeVBsYW5lLCB1UGxhbmUsIHZQbGFuZSk7Ci0gICAgICAgIHF1YWRMaXN0
LmFwcGVuZCh5dXZWaWRlb1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgT3duUHRyPENDWVVWVmlk
ZW9EcmF3UXVhZD4geXV2VmlkZW9RdWFkID0gQ0NZVVZWaWRlb0RyYXdRdWFkOjpjcmVhdGUoc2hh
cmVkUXVhZFN0YXRlLmdldCgpLCBxdWFkUmVjdCwgeVBsYW5lLCB1UGxhbmUsIHZQbGFuZSk7Cisg
ICAgICAgIHF1YWRTaW5rLmFwcGVuZCh5dXZWaWRlb1F1YWQucmVsZWFzZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6IHsKQEAgLTIw
Nyw4ICsyMTAsOCBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNp
bmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICBib29sIHByZW11
bHRpcGxpZWRBbHBoYSA9IHRydWU7CiAgICAgICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgd2lk
dGhTY2FsZUZhY3RvciwgMSk7CiAgICAgICAgIGJvb2wgZmxpcHBlZCA9IGZhbHNlOwotICAgICAg
ICBPd25QdHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBwbGFuZS5yZXNvdXJjZUlkLCBw
cmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7Ci0gICAgICAgIHF1YWRMaXN0LmFw
cGVuZCh0ZXh0dXJlUXVhZC5yZWxlYXNlKCkpOworICAgICAgICBPd25QdHI8Q0NUZXh0dXJlRHJh
d1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIHF1YWRSZWN0LCBwbGFuZS5yZXNvdXJjZUlkLCBwcmVtdWx0aXBsaWVkQWxw
aGEsIHV2UmVjdCwgZmxpcHBlZCk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCh0ZXh0dXJlUXVh
ZC5yZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRDogewpAQCAtMjE2LDI1ICsyMTksMjcgQEAgdm9pZCBDQ1ZpZGVv
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUKICAgICAgICAgYm9vbCBwcmVtdWx0aXBsaWVkQWxwaGEgPSB0cnVlOwogICAg
ICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIDEsIDEpOwogICAgICAgICBib29sIGZsaXBwZWQg
PSBmYWxzZTsKLSAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9
IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9l
eHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBw
ZWQpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKKyAg
ICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBxdWFkUmVjdCwgbV9leHRlcm5h
bFRleHR1cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwor
ICAgICAgICBxdWFkU2luay5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgRXh0ZW5zaW9uczNEOjpURVhUVVJFX1JFQ1RBTkdMRV9B
UkI6IHsKICAgICAgICAgSW50U2l6ZSB0ZXh0dXJlU2l6ZShtX2ZyYW1lLT53aWR0aCgpLCBtX2Zy
YW1lLT5oZWlnaHQoKSk7IAotICAgICAgICBPd25QdHI8Q0NJT1N1cmZhY2VEcmF3UXVhZD4gaW9T
dXJmYWNlUXVhZCA9IENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IHF1YWRSZWN0LCB0ZXh0dXJlU2l6ZSwgbV9mcmFtZS0+dGV4dHVyZUlkKCksIENDSU9TdXJmYWNl
RHJhd1F1YWQ6OlVuZmxpcHBlZCk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChpb1N1cmZhY2VR
dWFkLnJlbGVhc2UoKSk7CisgICAgICAgIE93blB0cjxDQ0lPU3VyZmFjZURyYXdRdWFkPiBpb1N1
cmZhY2VRdWFkID0gQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5n
ZXQoKSwgcXVhZFJlY3QsIHRleHR1cmVTaXplLCBtX2ZyYW1lLT50ZXh0dXJlSWQoKSwgQ0NJT1N1
cmZhY2VEcmF3UXVhZDo6VW5mbGlwcGVkKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKGlvU3Vy
ZmFjZVF1YWQucmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRXh0
ZW5zaW9uczNEQ2hyb21pdW06OkdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOiB7CiAgICAgICAgIC8v
IFN0cmVhbVRleHR1cmUgaGFyZHdhcmUgZGVjb2Rlci4KLSAgICAgICAgT3duUHRyPENDU3RyZWFt
VmlkZW9EcmF3UXVhZD4gc3RyZWFtVmlkZW9RdWFkID0gQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9mcmFtZS0+dGV4dHVyZUlkKCksIG1f
c3RyZWFtVGV4dHVyZU1hdHJpeCk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChzdHJlYW1WaWRl
b1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgT3duUHRyPENDU3RyZWFtVmlkZW9EcmF3UXVhZD4g
c3RyZWFtVmlkZW9RdWFkID0gQ0NTdHJlYW1WaWRlb0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCBxdWFkUmVjdCwgbV9mcmFtZS0+dGV4dHVyZUlkKCksIG1fc3RyZWFtVGV4
dHVyZU1hdHJpeCk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChzdHJlYW1WaWRlb1F1YWQucmVs
ZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIENS
QVNIKCk7IC8vIFNvbWVvbmUgdXBkYXRlZCBjb252ZXJ0VkZDRm9ybWF0VG9HQzNERm9ybWF0IGFi
b3ZlIGJ1dCB1cGRhdGUgdGhpcyEKICAgICB9CisKKyAgICBxdWFkU2luay5hcHBlbmRTaGFyZWRR
dWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgQ0NWaWRlb0xh
eWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ZpZGVvTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKaW5kZXggMzAwNzBjOGMxNzAwYzFhM2VjMTUyMzhl
ZmU4NjlmZTcwMThhNzNlMy4uMmM1NGUzNTEzOWMyM2YyY2MyMDBmYTc0ZGFhYjUyMTYzOGJiNjcy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+Q0NWaWRlb0xheWVySW1wbCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29s
JiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKIAogICAgIHZp
cnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBj
b25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNmVjMGNlNWQ3YWI1ZTJlMWQ2NTBm
MDljNjg5OGE5MDE1YTdiM2E3ZS4uMzcwMWEzZjY3OWEzYjc4MzZjNDQ2MDAxZTQzNWEzNjBjODYy
YThjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIGNsYXNzIEJsZW5k
U3RhdGVDaGVja0xheWVyIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUGFzc093blB0cjxCbGVuZFN0YXRlQ2hlY2tMYXllcj4gY3JlYXRlKGludCBpZCwgQ0NSZXNv
dXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgQmxl
bmRTdGF0ZUNoZWNrTGF5ZXIoaWQsIHJlc291cmNlUHJvdmlkZXIpKTsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKSBPVkVSUklERQogICAg
IHsKICAgICAgICAgbV9xdWFkc0FwcGVuZGVkID0gdHJ1ZTsKIApAQCAtMTM1NCwxMSArMTM1NCwx
NCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvcGFxdWVSZWN0ID0gbV9xdWFkUmVjdDsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgb3BhcXVlUmVjdCA9IG1fb3BhcXVlQ29udGVudFJlY3Q7Ci0g
ICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiB0ZXN0QmxlbmRpbmdEcmF3UXVhZCA9IENDVGlsZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBtX3F1YWRSZWN0LCBvcGFxdWVSZWN0LCBt
X3Jlc291cmNlSWQsIEludFBvaW50KCksIEludFNpemUoMSwgMSksIDAsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisKKyAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSBjcmVhdGVTaGFyZWRRdWFkU3RhdGUocXVhZFNpbmsuZ2VuZXJh
dGVTaGFyZWRRdWFkU3RhdGVJZCgpKTsKKyAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IHRlc3RC
bGVuZGluZ0RyYXdRdWFkID0gQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUu
Z2V0KCksIG1fcXVhZFJlY3QsIG9wYXF1ZVJlY3QsIG1fcmVzb3VyY2VJZCwgSW50UG9pbnQoKSwg
SW50U2l6ZSgxLCAxKSwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKICAg
ICAgICAgdGVzdEJsZW5kaW5nRHJhd1F1YWQtPnNldFF1YWRWaXNpYmxlUmVjdChtX3F1YWRWaXNp
YmxlUmVjdCk7CiAgICAgICAgIEVYUEVDVF9FUShtX2JsZW5kLCB0ZXN0QmxlbmRpbmdEcmF3UXVh
ZC0+bmVlZHNCbGVuZGluZygpKTsKICAgICAgICAgRVhQRUNUX0VRKG1faGFzUmVuZGVyU3VyZmFj
ZSwgISFyZW5kZXJTdXJmYWNlKCkpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGVzdEJsZW5k
aW5nRHJhd1F1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRlc3RCbGVu
ZGluZ0RyYXdRdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZFNoYXJlZFF1
YWRTdGF0ZShzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNl
dEV4cGVjdGF0aW9uKGJvb2wgYmxlbmQsIGJvb2wgaGFzUmVuZGVyU3VyZmFjZSkKQEAgLTE4Nzcs
MTIgKzE4ODAsMTUgQEAgY2xhc3MgRmFrZUxheWVyV2l0aFF1YWRzIDogcHVibGljIENDTGF5ZXJJ
bXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGYWtlTGF5ZXJXaXRoUXVhZHM+
IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlTGF5ZXJXaXRoUXVhZHMo
aWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRM
aXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZF
UlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmss
IGJvb2wmKSBPVkVSUklERQogICAgIHsKKyAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSBjcmVhdGVTaGFyZWRRdWFkU3RhdGUocXVhZFNpbmsuZ2VuZXJh
dGVTaGFyZWRRdWFkU3RhdGVJZCgpKTsKKwogICAgICAgICBTa0NvbG9yIGdyYXkgPSBTa0NvbG9y
U2V0UkdCKDEwMCwgMTAwLCAxMDApOwogICAgICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50
KDAsIDApLCBjb250ZW50Qm91bmRzKCkpOwotICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gbXlR
dWFkID0gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRS
ZWN0LCBncmF5KTsKLSAgICAgICAgcXVhZExpc3QuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOwor
ICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4gbXlRdWFkID0gQ0NTb2xpZENvbG9yRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIHF1YWRSZWN0LCBncmF5KTsKKyAgICAgICAg
cXVhZFNpbmsuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBl
bmRTaGFyZWRRdWFkU3RhdGUoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiAgICAgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAKaW5kZXggNTIwMjIwOGI5NGYzZDVlZmE3YmFlZjgwYjJlM2E2MmE1OGUz
YmU5Yi4uMmI0NDUyZGQzNWRmOTFlNWYxMTRhNGRhOTA0MTE2YWU4N2M2ZjNhMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3Bw
CkBAIC0yNDA5LDcgKzI0MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRXZpY3Rpb25UZXN0TGF5ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkV2aWN0
aW9uVGVzdExheWVySW1wbCgpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1
YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMp
CisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNz
aW5nVGlsZXMpCiAgICAgewogICAgICAgICBBU1NFUlRfVFJVRShtX2hhc1RleHR1cmUpOwogICAg
ICAgICBBU1NFUlRfTkUoMHUsIGxheWVyVHJlZUhvc3RJbXBsKCktPnJlc291cmNlUHJvdmlkZXIo
KS0+bnVtUmVzb3VyY2VzKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZjczMmNkYzY4Y2IzZTRhZTBhZThkNjU3MTU5MjJh
NDA1N2U2MzVlMC4uMmM1ZTg4NTljMDEzNmQxZjZjZjA2YjZjZWFkYzY0MWYxYzVhMjJmZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3Bw
CkBAIC05NiwxNCArOTYsMTIgQEAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
bWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwgY29uc3QgV2UKICAgICByZXR1cm4g
bGF5ZXIucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0
JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiYgc2hhcmVkU3Rh
dGVMaXN0LCBDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllciwgQ0NMYXllckl0ZXJhdG9yVHlwZSYgaXQs
IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCitzdGF0aWMgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBz
aGFyZWRTdGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRlcmF0b3JU
eXBlJiBpdCwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKIHsKICAg
ICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwotICAgIENDUXVhZEN1bGxlciBxdWFk
Q3VsbGVyKHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+
Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOworICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1
YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlciwgZmFsc2Us
IGZhbHNlKTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdU
aWxlcyk7Ci0gICAgc2hhcmVkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFz
ZSgpKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVz
KTsKICAgICBvY2NsdXNpb25UcmFja2VyLmxlYXZlTGF5ZXIoaXQpOwogICAgICsraXQ7CiB9CkBA
IC0xMTEsOSArMTA5LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVh
ZExpc3QsIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4KICNkZWZpbmUgREVDTEFS
RV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAgICAgICAgICAgXAogICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgQ0NRdWFk
TGlzdCBxdWFkTGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBWZWN0
b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IHNoYXJlZFN0YXRlTGlzdDsgXAorICAgIEND
U2hhcmVkUXVhZFN0YXRlTGlzdCBzaGFyZWRTdGF0ZUxpc3Q7ICAgICAgICAgICAgICBcCiAgICAg
VmVjdG9yPENDTGF5ZXJJbXBsKj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsgICAgICAgIFwKLSAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAgICAgICAgICAgICAg
XAorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOyAgICAgICAgICAg
ICBcCiAgICAgSW50U2l6ZSByb290U2l6ZSA9IEludFNpemUoMzAwLCAzMDApOyAgICAgICAgICAg
ICAgIFwKICAgICBJbnRSZWN0IHJvb3RSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCByb290U2l6
ZSk7ICAgXAogICAgIEludFNpemUgY2hpbGRTaXplID0gSW50U2l6ZSgyMDAsIDIwMCk7ICAgICAg
ICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVu
ZGVyU3VyZmFjZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRl
clN1cmZhY2VUZXN0LmNwcAppbmRleCBhNmE0MjJlMzI3ZGU3OTAyMmFlMTk1NjkyY2VjNWFhODYz
MTYzMzIwLi4wNWQ3MTY2NDEzMmNkMDQzM2Q4MzgyYjdiOTM4ZTkwODBlYjZlNTY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgogI2luY2x1ZGUg
IkNDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgor
I2luY2x1ZGUgIk1vY2tDQ1F1YWRDdWxsZXIuaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgog
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0
aW9uTWF0cml4Lmg+CkBAIC0xMTUsNyArMTE2LDE1IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVz
dCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAgICAg
cmVuZGVyU3VyZmFjZS0+c2V0Q2xpcFJlY3QoY2xpcFJlY3QpOwogICAgIHJlbmRlclN1cmZhY2Ut
PnNldERyYXdPcGFjaXR5KDEpOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSByZW5kZXJTdXJmYWNlLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7Cisg
ICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3Qgc2hhcmVk
U3RhdGVMaXN0OworICAgIE1vY2tDQ1F1YWRDdWxsZXIgbW9ja1F1YWRDdWxsZXIocXVhZExpc3Qs
IHNoYXJlZFN0YXRlTGlzdCk7CisKKyAgICBib29sIGZvclJlcGxpY2EgPSBmYWxzZTsKKyAgICBy
ZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgZm9yUmVwbGljYSwgMSk7
CisKKyAgICBBU1NFUlRfRVEoMXUsIHNoYXJlZFN0YXRlTGlzdC5zaXplKCkpOworICAgIENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBzaGFyZWRTdGF0ZUxpc3RbMF0uZ2V0KCk7
CiAKICAgICBFWFBFQ1RfRVEoMzAsIHNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybS5tNDEo
KSk7CiAgICAgRVhQRUNUX0VRKDQwLCBzaGFyZWRRdWFkU3RhdGUtPnF1YWRUcmFuc2Zvcm0ubTQy
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29s
b3JMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMWViYTk5MWMzMzViMGIzOGU1MmY5NzE0YTA3
NWNkNzIwNWIwMWZlNS4uMjIwMTg5YjQxNjQzY2Q5N2RkNWFkZGMwMzY2Y2RmNzU4ZWJmOGE4ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXll
ckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRD
b2xvckxheWVySW1wbFRlc3QuY3BwCkBAIC01Myw5ICs1Myw4IEBAIFRFU1QoQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsVGVzdCwgdmVyaWZ5VGlsaW5nQ29tcGxldGVBbmROb092ZXJsYXApCiAgICAgbGF5
ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBsYXllci0+c2V0UmVuZGVyVGFyZ2V0KGxh
eWVyLmdldCgpKTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0
YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKICAgICBib29sIGhhZE1pc3Np
bmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFy
ZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICB2ZXJpZnlRdWFkc0V4YWN0
bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCB2aXNpYmxlQ29udGVudFJlY3QpOwog
fQpAQCAtNzgsOSArNzcsOCBAQCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlm
eUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKICAgICBsYXllci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyLmdldCgpKTsKIAotICAg
IE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0
ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwot
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCks
IGhhZE1pc3NpbmdUaWxlcyk7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhh
ZE1pc3NpbmdUaWxlcyk7CiAKICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNp
emUoKSwgMVUpOwogICAgIEVYUEVDVF9FUShDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxD
YXN0KHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS5nZXQoKSktPmNvbG9yKCksIHRlc3RDb2xvcik7
CkBAIC0xMDQsOSArMTAyLDggQEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJp
ZnlDb3JyZWN0T3BhY2l0eUluUXVhZCkKICAgICBsYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgp
OwogICAgIGxheWVyLT5zZXRSZW5kZXJUYXJnZXQobGF5ZXIuZ2V0KCkpOwogCi0gICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKDApOwogICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgbGF5
ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlz
c2luZ1RpbGVzKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2lu
Z1RpbGVzKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAx
VSk7CiAgICAgRVhQRUNUX0VRKG9wYWNpdHksIENDU29saWRDb2xvckRyYXdRdWFkOjptYXRlcmlh
bENhc3QocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLmdldCgpKS0+b3BhY2l0eSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3Qu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5j
cHAKaW5kZXggNjIzMzZiYjUwYzQ4ODY2MDQ4YWJiMzc0NjFhNWY4N2Y1NjY0MGQ4OC4uOGI0YmQy
MGU4ZDljYTIyMTQzZjEyZTlmN2NlNWZhNzdkOTcwZTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTc2LDkg
Kzc2LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKICAgICB7
CiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRp
bGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAg
ICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0
YXRlKDApOwogICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRN
aXNzaW5nVGlsZXMpOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFk
TWlzc2luZ1RpbGVzKTsKICAgICAgICAgY29uc3QgdW5zaWduZWQgbnVtVGlsZXMgPSBudW1UaWxl
c1ggKiBudW1UaWxlc1k7CiAgICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCku
c2l6ZSgpLCBudW1UaWxlcyk7CiAgICAgfQpAQCAtODksOSArODgsOCBAQCBURVNUKENDVGlsZWRM
YXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUNv
bnRlbnRSZWN0KEludFJlY3QoKSk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3Vs
bGVyOwotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CiAgICAgICAgIGJvb2wgaGFkTWlzc2lu
Z1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1Rf
RVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtMTAzLDkg
KzEwMSw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAg
ICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3Qob3V0c2lkZUJvdW5kcyk7CiAKICAgICAg
ICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUo
MCk7CiAgICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVy
LT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3Np
bmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNz
aW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUo
KSwgMHUpOwogICAgIH0KIApAQCAtMTE1LDkgKzExMiw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1w
bFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgICAgIGxheWVyLT5zZXRTa2lwc0RyYXcodHJ1ZSk7
CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRR
dWFkU3RhdGUoMCk7CiAgICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAg
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCks
IGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVy
LCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlz
dCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEzMiwxMyArMTI4LDEyIEBAIFRFU1QoQ0NU
aWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICBjb25zdCBJbnRTaXplIGxh
eWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNYLCB0aWxlU2l6ZS5oZWlnaHQoKSAq
IG51bVRpbGVzWSk7CiAKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVh
dGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0g
bGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKIAogICAgIC8vIE5vIGNoZWNrZXJib2Fy
ZGluZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwogICAgICAg
ICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVh
ZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwor
ICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsK
ICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDR1KTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKGhhZE1pc3NpbmdUaWxlcyk7CiAKQEAgLTE1NCw3ICsxNDksNyBA
QCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgewogICAg
ICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIGJvb2wgaGFkTWlzc2lu
Z1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFk
TGlzdCgpLnNpemUoKSwgNHUpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRD
dWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKQEAgLTE2MiwxNyArMTU3LDE1IEBAIFRFU1Qo
Q0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykKICAgICB9CiB9CiAKLXN0YXRp
YyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFk
cywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGls
aW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IEludFJl
Y3QmIHZpc2libGVDb250ZW50UmVjdCkKK3N0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3Qm
IHF1YWRzLCBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3QmIHNoYXJlZFN0YXRlcywgSW50U2l6ZSB0aWxl
U2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVy
VGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250
ZW50UmVjdCkKIHsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVM
YXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiAgICAgbGF5ZXIt
PnNldFZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlQ29udGVudFJlY3QpOwogICAgIGxheWVyLT5z
ZXRCb3VuZHMobGF5ZXJTaXplKTsKIAotICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihx
dWFkcyk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBs
YXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOworICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVh
ZEN1bGxlcihxdWFkcywgc2hhcmVkU3RhdGVzKTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9
IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgcmV0dXJuIHNoYXJlZFF1YWRTdGF0ZS5y
ZWxlYXNlKCk7IC8vIFRoZSBzaGFyZWQgZGF0YSBtdXN0IGJlIG93bmVkIGFzIGxvbmcgYXMgdGhl
IHF1YWQgbGlzdCBleGlzdHMuCisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhh
ZE1pc3NpbmdUaWxlcyk7CiB9CiAKIC8vIFRlc3Qgd2l0aCBib3RoIGJvcmRlciB0ZXhlbHMgYW5k
IHdpdGhvdXQuCkBAIC0xOTIsOCArMTg1LDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxl
UmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKIAog
ICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAsIDEwMDApOwogICAgIENDUXVhZExpc3QgcXVhZHM7
Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRT
dGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3Jk
ZXJzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkpOworICAgIENDU2hhcmVkUXVhZFN0
YXRlTGlzdCBzaGFyZWRTdGF0ZXM7CisgICAgZ2V0UXVhZHMocXVhZHMsIHNoYXJlZFN0YXRlcywg
SW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2ludCgp
LCBsYXllclNpemUpKTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIElu
dFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRF
Ul9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKTsKQEAgLTIwOSw4ICsy
MDIsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKEND
TGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdAogCiAgICAgSW50U2l6ZSBsYXllclNpemUo
MjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJ
bnRTaXplKDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVM
aXN0IHNoYXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCBJbnRT
aXplKDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3Jk
ZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292
ZXJSZWN0KHF1YWRzLCB2aXNpYmxlQ29udGVudFJlY3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9C
T1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKTsKQEAgLTIyMiw4
ICsyMTUsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5k
cyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcAogICAgIEludFNpemUgbGF5ZXJTaXpl
KDIyMCwgMjEwKTsKICAgICBJbnRSZWN0IHZpc2libGVDb250ZW50UmVjdChJbnRQb2ludCgpLCBs
YXllclNpemUpOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJ
bnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNo
YXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCBJbnRTaXplKDEw
MCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZp
c2libGVDb250ZW50UmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRz
LCB2aXNpYmxlQ29udGVudFJlY3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChj
b3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk7CkBAIC0yMzUsOCArMjI4LDggQEAg
VEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVyZUluZm9Gb3JMYXllck5vQm9yZGVycykK
ICAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUw
LCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxl
U2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJl
Y3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNo
YXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCB0aWxlU2l6ZSwg
bGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRz
LnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwg
Q0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0yNTYsOCAr
MjQ5LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGlsZU9wYXF1ZVJlY3RGb3JMYXll
ck5vQm9yZGVycykKICAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CiAgICAgSW50U2l6ZSBs
YXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRz
KHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJU
ZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgQ0NTaGFyZWRRdWFk
U3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVz
LCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMs
IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+
bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmlu
ZGV4IDdmNmUwZjg1YWVhMjZjNTM3NjIzYmI4OTdhODUwYTFiZjY1ZDdhMjAuLjYxYzRjMjQ3ZWE4
NWFmZjI2MGM2MGEzOTM3MTRiODZhZjU1YTA2NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCkBAIC0zMiwxOSArMzIsMjEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb2NrQ0NRdWFkQ3VsbGVyIDogcHVibGljIFdlYkNv
cmU6OkNDUXVhZFNpbmsgeworY2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6IHB1YmxpYyBDQ1F1YWRT
aW5rIHsKIHB1YmxpYzoKICAgICBNb2NrQ0NRdWFkQ3VsbGVyKCkKICAgICAgICAgOiBtX2FjdGl2
ZVF1YWRMaXN0KG1fcXVhZExpc3RTdG9yYWdlKQorICAgICAgICAsIG1fYWN0aXZlU2hhcmVkUXVh
ZFN0YXRlTGlzdChtX3NoYXJlZFF1YWRTdGF0ZVN0b3JhZ2UpCiAgICAgeyB9CiAKLSAgICBleHBs
aWNpdCBNb2NrQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIGV4dGVybmFsUXVhZExpc3QpCisgICAg
ZXhwbGljaXQgTW9ja0NDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiBleHRlcm5hbFF1YWRMaXN0LCBD
Q1NoYXJlZFF1YWRTdGF0ZUxpc3QmIGV4dGVybmFsU2hhcmVkUXVhZFN0YXRlTGlzdCkKICAgICAg
ICAgOiBtX2FjdGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExpc3QpCisgICAgICAgICwgbV9hY3Rp
dmVTaGFyZWRRdWFkU3RhdGVMaXN0KGV4dGVybmFsU2hhcmVkUXVhZFN0YXRlTGlzdCkKICAgICB7
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkND
RHJhd1F1YWQ+IG5ld1F1YWQpCisgICAgdmlydHVhbCBib29sIGFwcGVuZChXVEY6OlBhc3NPd25Q
dHI8Q0NEcmF3UXVhZD4gbmV3UXVhZCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIE93blB0cjxX
ZWJDb3JlOjpDQ0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1YWQ7CisgICAgICAgIE93blB0cjxD
Q0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1YWQ7CiAgICAgICAgIGlmICghZHJhd1F1YWQtPnF1
YWRSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX2FjdGl2ZVF1YWRMaXN0LmFwcGVu
ZChkcmF3UXVhZC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01Miwx
MSArNTQsMjggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
Y29uc3QgV2ViQ29yZTo6Q0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2Fj
dGl2ZVF1YWRMaXN0OyB9OworICAgIHZpcnR1YWwgaW50IGdlbmVyYXRlU2hhcmVkUXVhZFN0YXRl
SWQoKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWN0aXZlU2hhcmVk
UXVhZFN0YXRlTGlzdC5zaXplKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFNo
YXJlZFF1YWRTdGF0ZShXVEY6OlBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IG5ld1NoYXJl
ZFF1YWRTdGF0ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIG1fYWN0aXZlU2hhcmVkUXVhZFN0
YXRlTGlzdC5hcHBlbmQobmV3U2hhcmVkUXVhZFN0YXRlKTsKKyAgICB9CisKKyAgICBib29sIGhh
ZE1pc3NpbmdUaWxlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFkTWlzc2luZ1RpbGVzOyB9CisKKyAg
ICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlUXVh
ZExpc3Q7IH07CisgICAgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBzaGFyZWRRdWFkU3Rh
dGVMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTaGFyZWRRdWFkU3RhdGVMaXN0OyB9Owog
CiBwcml2YXRlOgotICAgIFdlYkNvcmU6OkNDUXVhZExpc3QmIG1fYWN0aXZlUXVhZExpc3Q7Ci0g
ICAgV2ViQ29yZTo6Q0NRdWFkTGlzdCBtX3F1YWRMaXN0U3RvcmFnZTsKKyAgICBDQ1F1YWRMaXN0
JiBtX2FjdGl2ZVF1YWRMaXN0OworICAgIENDUXVhZExpc3QgbV9xdWFkTGlzdFN0b3JhZ2U7Cisg
ICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBtX2FjdGl2ZVNoYXJlZFF1YWRTdGF0ZUxpc3Q7Cisg
ICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IG1fc2hhcmVkUXVhZFN0YXRlU3RvcmFnZTsKKworICAg
IGJvb2wgbV9oYWRNaXNzaW5nVGlsZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160206</attachid>
            <date>2012-08-23 11:53:03 -0700</date>
            <delta_ts>2012-08-23 12:52:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94752-20120823145300.patch</filename>
            <type>text/plain</type>
            <size>68281</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmMzAyYjA5MWQ1MTZm
YTAyMGRjYThmMjllYzI5YjE0OWEyYzcyYS4uYTE1MTNiMTk3YzVjZTJhNWYwMWQyYjg1ZWQxN2U1
MDg0NmIwMmY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA4LTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Jl
YXRlIHNoYXJlZFF1YWRTdGF0ZSBhdCBzYW1lIHRpbWUgYXMgY3JlYXRpbmcgcXVhZHMgYW5kIGdp
dmUgdGhlbSB0byB0aGUgcXVhZFNpbmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk0NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUHJldmlvdXNseSwgQ0NSZW5kZXJQYXNzIHdvdWxkIGNyZWF0ZSBhIHNo
YXJlZFF1YWRTdGF0ZSBmb3IgYSBsYXllciwKKyAgICAgICAgYW5kIHBhc3MgaXQgaW4gdG8gdGhl
IGxheWVyLiBUaGVuIHRoZSBsYXllciB3b3VsZCBwb2ludCBhbGwgaXRzIHF1YWRzCisgICAgICAg
IGF0IHRoZSBzaGFyZWRRdWFkU3RhdGUuCisKKyAgICAgICAgQWZ0ZXIgdGhpcyBjaGFuZ2UsIHRo
ZSBsYXllciBjcmVhdGVzIGl0cyBvd24gc2hhcmVkUXVhZFN0YXRlLCBnaXZlcyBpdAorICAgICAg
ICB0byB0aGUgUmVuZGVyUGFzcyAodmlhIENDUXVhZFNpbmspLCBhbmQgcG9pbnRzIGl0cyBxdWFk
cyBhdCBpdC4KKworICAgICAgICBUaGlzIGFwcHJvYWNoIGFsbG93cyBhIGxheWVyIHRvIGdlbmVy
YXRlIG1vcmUgdGhhbiBvbmUgc2hhcmVkUXVhZFN0YXRlCisgICAgICAgIHdpdGggZGlmZmVyZW50
IHF1YWRzIHBvaW50aW5nIHRvIGRpZmZlcmVudCBzaGFyZWQgc3RhdGVzLiBBbHNvLCB0aGlzCisg
ICAgICAgIHdpbGwgYWxsb3cgdGhlIGxheWVyIHJlcHJlc2VudGluZyBhIGRlbGVnYXRpbmcgcmVu
ZGVyZXIgKHZpYSB1YmVyY29tcCkKKyAgICAgICAgdG8gY29weSBzaGFyZWRRdWFkU3RhdGVzIGZy
b20gdGhlIGRlbGVnYXRpbmcgcmVuZGVyZXIgaW4gb3JkZXIgdG8KKyAgICAgICAgbWVyZ2UgaXRz
IHF1YWRzIGludG8gdGhlIFJlbmRlclBhc3MgZm9yIHRoZSBjdXJyZW50IHJlbmRlcmVyLgorCisg
ICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXlMYXll
ckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0hlYWRzVXBEaXNw
bGF5TGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lPU3VyZmFjZUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0lPU3VyZmFjZUxh
eWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0lPU3VyZmFjZUxheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OmNyZWF0ZVNoYXJlZFF1YWRT
dGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllcklt
cGwuaDoKKyAgICAgICAgKENDTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q1F1YWRDdWxsZXI6OkNDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxs
ZXI6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1F1YWRDdWxsZXI6OnVzZVNoYXJlZFF1
YWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoQ0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRTaW5rLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUXVhZFNpbmsp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvclJlbmRlclN1
cmZhY2VMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRz
VG9GaWxsU2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1JlbmRlclBhc3MuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NSZW5kZXJQYXNz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNl
Lmg6CisgICAgICAgIChDQ1JlbmRlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaDoKKyAgICAgICAg
KENDU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NoYXJl
ZFF1YWRTdGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2hhcmVkUXVhZFN0YXRl
OjpDQ1NoYXJlZFF1YWRTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaDoKKyAgICAgICAgKENDU2hhcmVkUXVhZFN0YXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXll
ckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBl
bmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xp
ZENvbG9yTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ1NvbGlkQ29sb3JMYXllckltcGwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllcklt
cGwuaDoKKyAgICAgICAgKENDVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oOgorICAgICAgICAoQ0NUaWxl
ZExheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NW
aWRlb0xheWVySW1wbC5oOgorICAgICAgICAoQ0NWaWRlb0xheWVySW1wbCk6CisKIDIwMTItMDgt
MjIgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjEyNTU3OCk6IGZhc3QvcmVnZXgvdW5pY29kZUNhc2VJbnNlbnNpdGl2ZS5odG1sIGNyYXNo
IG9uIExpbnV4IERlYnVnIENocm9taXVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDc4
MDRlY2Q5N2YxNDliZjA4MzQ5MDMyMzBlNzdiMDAxNzI5NDEyMmYuLjU2MmVjNjAwNmNlZGU1ZWI2
MmNjYTQyYmJjMjE0OTFkMzM5OWQwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjkgQEAKKzIwMTItMDgtMjMgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDcmVhdGUgc2hhcmVkUXVhZFN0YXRlIGF0IHNhbWUg
dGltZSBhcyBjcmVhdGluZyBxdWFkcyBhbmQgZ2l2ZSB0aGVtIHRvIHRoZSBxdWFkU2luaworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ3NTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcDoKKyAgICAgICAgKFdURjo6RXZpY3Rpb25UZXN0TGF5ZXJJbXBsOjphcHBlbmRRdWFk
cyk6CisgICAgICAgICogdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgICogdGVz
dHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6VEVTVCk6Cisg
ICAgICAgICogdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwOgorICAgICAgICAoQ0NMYXll
clRlc3RDb21tb246OlRFU1QpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmdldFF1YWRz
KToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpjb3ZlcmFnZVZpc2libGVSZWN0T25UaWxl
Qm91bmRhcmllcyk6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJhZ2VWaXNpYmxl
UmVjdEludGVyc2VjdHNUaWxlcyk6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Y292ZXJh
Z2VWaXNpYmxlUmVjdEludGVyc2VjdHNCb3VuZHMpOgorICAgICAgICAqIHRlc3RzL01vY2tDQ1F1
YWRDdWxsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tDQ1F1YWRDdWxsZXI6Ok1vY2tDQ1F1
YWRDdWxsZXIpOgorICAgICAgICAoTW9ja0NDUXVhZEN1bGxlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrQ0NRdWFkQ3VsbGVyOjpxdWFkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrQ0NR
dWFkQ3VsbGVyOjpzaGFyZWRRdWFkU3RhdGVMaXN0KToKKwogMjAxMi0wOC0yMiAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
IFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJ
bXBsLmNwcAppbmRleCA1ZmRkMmNkNjlhZGVkNzBiYzAwZTYwNjBjY2QwNzgyNzZkM2Y2YTI5Li40
NDU3Yjk4YmI2MDhlZmI1ODNhZmMxZDhlZGZmZmU3ZmM2YWM0MmNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5
TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcApAQCAtOTEsMTYgKzkxLDE4IEBA
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3Zp
ZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAgICAgICBtX2h1ZFRleHR1cmUtPmFsbG9jYXRlKEND
UmVuZGVyZXI6OkltcGxQb29sLCBib3VuZHMoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEsIEND
UmVzb3VyY2VQcm92aWRlcjo6VGV4dHVyZVVzYWdlQW55KTsKIH0KIAotdm9pZCBDQ0hlYWRzVXBE
aXNwbGF5TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3Qg
Q0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpCit2b2lkIENDSGVhZHNV
cERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29s
JikKIHsKICAgICBpZiAoIW1faHVkVGV4dHVyZS0+aWQoKSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJl
ZFF1YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSk7CisKICAgICBJbnRSZWN0IHF1YWRS
ZWN0KEludFBvaW50KCksIGJvdW5kcygpKTsKICAgICBib29sIHByZW11bHRpcGxpZWRBbHBoYSA9
IHRydWU7CiAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAxLCAxKTsKICAgICBib29sIGZsaXBw
ZWQgPSBmYWxzZTsKLSAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2h1ZFRleHR1cmUtPmlkKCksIHByZW11bHRp
cGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgcXVhZFNpbmsuYXBwZW5kKENDVGV4
dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9odWRUZXh0
dXJlLT5pZCgpLCBwcmVtdWx0aXBsaWVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCkpOwogfQogCiB2
b2lkIENDSGVhZHNVcERpc3BsYXlMYXllckltcGw6OnVwZGF0ZUh1ZFRleHR1cmUoQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1Vw
RGlzcGxheUxheWVySW1wbC5oCmluZGV4IDFlZTI0YzQ3ZThhZTUyZWRlNzk2MWYwNDU0YzUxODZl
YTUzMmNhMDcuLmY3ZDQ3N2ZmZjk4ZGUwNzk2MGZhYjMwN2YyNTEwYzcwYTgwNDNmODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVh
ZHNVcERpc3BsYXlMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgKQEAgLTQ5LDcgKzQ5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9udEF0bGFzKFBhc3NPd25QdHI8Q0NGb250QXRs
YXM+KTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykgT1ZFUlJJREU7CiAgICAgdm9pZCB1cGRhdGVIdWRUZXh0dXJlKENDUmVzb3VyY2VQcm92
aWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KENDUmVzb3VyY2VQcm92aWRlciopIE9W
RVJSSURFOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKaW5kZXgg
MjgzYjdjOTlhMGVkYzJjOTdmZTUwMTljNzc2MDc1ZGQ5ZWVhMzU3MS4uMzQzZWRjNjk2NjdkOWYz
Yzg4YzE0OWE3ODdlYzk2MGQ1Yjc1MjRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNl
TGF5ZXJJbXBsLmNwcApAQCAtOTYsMTAgKzk2LDEzIEBAIHZvaWQgQ0NJT1N1cmZhY2VMYXllcklt
cGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICB9
CiB9CiAKLXZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29s
JikKK3ZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1
YWRTaW5rLCBib29sJikKIHsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRl
ID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsK
KyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisK
ICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0gICAg
cXVhZExpc3QuYXBwZW5kKENDSU9TdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIHF1YWRSZWN0LCBtX2lvU3VyZmFjZVNpemUsIG1faW9TdXJmYWNlVGV4dHVyZUlkLCBDQ0lP
U3VyZmFjZURyYXdRdWFkOjpGbGlwcGVkKSk7CisgICAgcXVhZFNpbmsuYXBwZW5kKENDSU9TdXJm
YWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2lvU3VyZmFj
ZVNpemUsIG1faW9TdXJmYWNlVGV4dHVyZUlkLCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpGbGlwcGVk
KSk7CiB9CiAKIHZvaWQgQ0NJT1N1cmZhY2VMYXllckltcGw6OmR1bXBMYXllclByb3BlcnRpZXMo
VGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuaAppbmRleCAwMTliOGZlMmRhYTY2NWU3NmY4N2Y4YWMwY2JmMjVlZjg4ZDU5
YzI1Li4zYTU1YmYyZTJlNmYyYWYzMzA0ZTAwMDc1YWZkMzgzNzIyZTQ3OWEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFj
ZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBj
b25zdCBJbnRTaXplJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERyYXcoQ0NS
ZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VDb250
ZXh0KCkgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKaW5kZXggODQ0NGQxZDg4NjBl
Y2JiYzIwZGYzNzkxZTk3ZTQ4M2FjY2IyYTVkNS4uYzYxOGZlYjFkMTRhMjZiMzExYmU2NWFjYzBm
NjZlZjE3ZjQyNTA1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApAQCAtMTQ0LDkgKzE0NCw5
IEBAIGJvb2wgQ0NMYXllckltcGw6OmRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NMYXllckltcGw6
OmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0CitQYXNzT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpZCwgbV9kcmF3VHJhbnNmb3Jt
LCBtX3Zpc2libGVDb250ZW50UmVjdCwgbV9kcmF3YWJsZUNvbnRlbnRSZWN0LCBtX2RyYXdPcGFj
aXR5LCBtX29wYXF1ZSk7CisgICAgcmV0dXJuIENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUobV9k
cmF3VHJhbnNmb3JtLCBtX3Zpc2libGVDb250ZW50UmVjdCwgbV9kcmF3YWJsZUNvbnRlbnRSZWN0
LCBtX2RyYXdPcGFjaXR5LCBtX29wYXF1ZSk7CiB9CiAKIHZvaWQgQ0NMYXllckltcGw6OndpbGxE
cmF3KENDUmVzb3VyY2VQcm92aWRlciopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAppbmRleCBlOTUxYzVk
N2M0NjUyM2RiM2FkYWFmNmE3ZTU0YmFmMTI5ZjgzYjlmLi5lMTJiMWIxYTdjMWU5N2QwMTQzOThj
MzMyMzc5YzM4OWM3NGFlMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKQEAgLTg5LDE1ICs4OSwx
NCBAQCBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVlSG9zdEltcGwo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJlZUhvc3RJbXBsOyB9CiAgICAgdm9pZCBzZXRMYXll
clRyZWVIb3N0SW1wbChDQ0xheWVyVHJlZUhvc3RJbXBsKiBob3N0SW1wbCkgeyBtX2xheWVyVHJl
ZUhvc3RJbXBsID0gaG9zdEltcGw7IH0KIAotICAgIFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0OworICAgIFBhc3NPd25QdHI8
Q0NTaGFyZWRRdWFkU3RhdGU+IGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpIGNvbnN0OwogICAgIC8v
IHdpbGxEcmF3IG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhcHBlbmRRdWFkcy4gSWYgd2lsbERyYXcg
aXMgY2FsbGVkLAogICAgIC8vIGRpZERyYXcgaXMgZ3VhcmFudGVlZCB0byBiZSBjYWxsZWQgYmVm
b3JlIGFub3RoZXIgd2lsbERyYXcgb3IgYmVmb3JlCiAgICAgLy8gdGhlIGxheWVyIGlzIGRlc3Ry
b3llZC4gVG8gZW5mb3JjZSB0aGlzLCBhbnkgY2xhc3MgdGhhdCBvdmVycmlkZXMKICAgICAvLyB3
aWxsRHJhdy9kaWREcmF3IG11c3QgY2FsbCB0aGUgYmFzZSBjbGFzcyB2ZXJzaW9uLgogICAgIHZp
cnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9v
bCYgaGFkTWlzc2luZ1RpbGVzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKik7Ci0gICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1
YWQoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQo
KSBjb25zdDsKIApAQCAtMjc1LDYgKzI3NCw4IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBDQ0xheWVySW1wbChpbnQpOwogCisgICAgdm9pZCBhcHBlbmREZWJ1Z0JvcmRlclF1
YWQoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKikgY29uc3Q7CisKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkg
Y29uc3Q7CiAgICAgc3RhdGljIHZvaWQgd3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYsIGludCBpbmRl
bnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDQ2ZWRj
YzBhODAxNDRlMmNjNzc0N2FhMTk2NmVlNzQ5YzU4YTkxZDQuLjU5ODNhZDMyN2RhMTBmNTNlZTA1
MWI0ZDYxNzI2ZjljNmQ1ZmQ1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuY3BwCkBAIC0zMzgsNiArMzM4LDEzIEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fs
Y3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIG9jY2x1c2lvblRy
YWNrZXIubGVhdmVMYXllcihpdCk7CiAgICAgfQogCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZnJhbWUucmVuZGVyUGFzc2VzW2ldLT5x
dWFkTGlzdCgpLnNpemUoKTsgKytqKQorICAgICAgICAgICAgQVNTRVJUKGZyYW1lLnJlbmRlclBh
c3Nlc1tpXS0+cXVhZExpc3QoKVtqXS0+c2hhcmVkUXVhZFN0YXRlSWQoKSA+PSAwKTsKKyAgICB9
CisjZW5kaWYKKwogICAgIGlmICghbV9oYXNUcmFuc3BhcmVudEJhY2tncm91bmQpIHsKICAgICAg
ICAgZnJhbWUucmVuZGVyUGFzc2VzLmxhc3QoKS0+c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KGZhbHNlKTsKICAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmxhc3QoKS0+YXBwZW5kUXVhZHNU
b0ZpbGxTY3JlZW4obV9yb290TGF5ZXJJbXBsLmdldCgpLCBtX2JhY2tncm91bmRDb2xvciwgb2Nj
bHVzaW9uVHJhY2tlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBmMmU5ZTlmZmVm
YjZhZjU2NWU3MWQ4NGE2NTg5NDMyNzlkZDM0Yjc0Li4xODExNDk0YjAwYTZhZTg4NTVlNWJkNDZj
NzYwNTY5YzMwYzdmZTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTQ4LDggKzQ4
LDEwIEBAIHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JSZWQgPSAxNjA7CiBz
dGF0aWMgY29uc3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yR3JlZW4gPSAxMDA7CiBzdGF0aWMg
Y29uc3QgaW50IGRlYnVnVGlsZUJvcmRlckNvbG9yQmx1ZSA9IDA7CiAKLUNDUXVhZEN1bGxlcjo6
Q0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wgc2hvd0N1
bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKQorQ0NRdWFkQ3VsbGVy
OjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDU2hhcmVkUXVhZFN0YXRlTGlz
dCYgc2hhcmVkUXVhZFN0YXRlTGlzdCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQ09jY2x1
c2lvblRyYWNrZXJJbXBsKiBvY2NsdXNpb25UcmFja2VyLCBib29sIHNob3dDdWxsaW5nV2l0aERl
YnVnQm9yZGVyUXVhZHMsIGJvb2wgZm9yU3VyZmFjZSkKICAgICA6IG1fcXVhZExpc3QocXVhZExp
c3QpCisgICAgLCBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Qoc2hhcmVkUXVhZFN0YXRlTGlzdCkKKyAg
ICAsIG1fY3VycmVudFNoYXJlZFF1YWRTdGF0ZSgwKQogICAgICwgbV9sYXllcihsYXllcikKICAg
ICAsIG1fb2NjbHVzaW9uVHJhY2tlcihvY2NsdXNpb25UcmFja2VyKQogICAgICwgbV9zaG93Q3Vs
bGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzKHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMp
CkBAIC04Miw2ICs4NCw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRRdWFkSW50ZXJuYWwo
UGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIGNvbnN0CiAKIGJvb2wgQ0NRdWFk
Q3VsbGVyOjphcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpCiB7Cisg
ICAgQVNTRVJUKHBhc3NEcmF3UXVhZC0+c2hhcmVkUXVhZFN0YXRlKCkgPT0gbV9jdXJyZW50U2hh
cmVkUXVhZFN0YXRlKTsKKwogICAgIEludFJlY3QgY3VsbGVkUmVjdDsKICAgICBib29sIGhhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZTsKIApAQCAtOTQsNSArOTgsMTUgQEAgYm9v
bCBDQ1F1YWRDdWxsZXI6OmFwcGVuZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVh
ZCkKICAgICByZXR1cm4gYXBwZW5kUXVhZEludGVybmFsKHBhc3NEcmF3UXVhZCwgY3VsbGVkUmVj
dCwgbV9xdWFkTGlzdCwgKm1fb2NjbHVzaW9uVHJhY2tlciwgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1
Z0JvcmRlclF1YWRzKTsKIH0KIAorQ0NTaGFyZWRRdWFkU3RhdGUqIENDUXVhZEN1bGxlcjo6dXNl
U2hhcmVkUXVhZFN0YXRlKFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHBhc3NTaGFyZWRR
dWFkU3RhdGUpCit7CisgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3Rh
dGUocGFzc1NoYXJlZFF1YWRTdGF0ZSk7CisgICAgc2hhcmVkUXVhZFN0YXRlLT5pZCA9IG1fc2hh
cmVkUXVhZFN0YXRlTGlzdC5zaXplKCk7CisKKyAgICBtX2N1cnJlbnRTaGFyZWRRdWFkU3RhdGUg
PSBzaGFyZWRRdWFkU3RhdGUuZ2V0KCk7CisgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVu
ZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gbV9jdXJyZW50U2hhcmVk
UXVhZFN0YXRlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYgLy8gVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAppbmRleCBlNjdiNDQ2
OGQ2OGIxMjg3ZjRiMjkwOTVhNGI2NTY3ODQzNDU5MWUxLi43NzE0MGYxNzgyNGFhNDA4OWM0YTg4
YzQxYThjODk2Nzg1NTM1ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuaApAQCAtMjcsMjcgKzI3
LDMwIEBACiAjZGVmaW5lIENDUXVhZEN1bGxlcl9oCiAKICNpbmNsdWRlICJDQ1F1YWRTaW5rLmgi
CisjaW5jbHVkZSAiQ0NSZW5kZXJQYXNzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlOwotY2xhc3MgQ0NRdWFkTGlzdDsK
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgU3VyZmFjZVR5cGU+CiBjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJCYXNlOwogCiBjbGFzcyBDQ1F1YWRDdWxsZXIgOiBwdWJsaWMg
Q0NRdWFkU2luayB7CiBwdWJsaWM6Ci0gICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ0xh
eWVySW1wbCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVu
ZGVyU3VyZmFjZT4qLCBib29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMsIGJvb2wg
Zm9yU3VyZmFjZSk7Ci0KKyAgICBDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYsIENDU2hhcmVkUXVh
ZFN0YXRlTGlzdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxD
Q0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiosIGJvb2wgc2hvd0N1bGxpbmdXaXRoRGVidWdC
b3JkZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKTsKICAgICB2aXJ0dWFsIH5DQ1F1YWRDdWxsZXIo
KSB7IH0KIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUg
bGlzdCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KLSAgICB2aXJ0
dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4pIE9W
RVJSSURFOworCisgICAgdmlydHVhbCBDQ1NoYXJlZFF1YWRTdGF0ZSogdXNlU2hhcmVkUXVhZFN0
YXRlKFBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+KSBPVkVSUklERTsKIAogICAgIGJvb2wg
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlKCkgeyByZXR1cm4gbV9oYXNPY2Ns
dXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2U7IH0KIAogcHJpdmF0ZToKICAgICBDQ1F1YWRM
aXN0JiBtX3F1YWRMaXN0OworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYgbV9zaGFyZWRRdWFk
U3RhdGVMaXN0OworICAgIENDU2hhcmVkUXVhZFN0YXRlKiBtX2N1cnJlbnRTaGFyZWRRdWFkU3Rh
dGU7CiAgICAgQ0NMYXllckltcGwqIG1fbGF5ZXI7CiAgICAgY29uc3QgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiogbV9vY2NsdXNpb25UcmFja2Vy
OwogICAgIGJvb2wgbV9zaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkU2lu
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
U2luay5oCmluZGV4IDRhZTZmMjM4YTQ1ZmNhMGYxNjk5Y2FiYWMyM2ZhNDMwMGU5OWFhMzcuLmQz
Yjk3N2Y0OGRhMGU0ODEwNmVhMTkwMzE2ZjJlNTE4NGZjMzFlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRTaW5r
LmgKQEAgLTMyLDEyICszMiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDRHJh
d1F1YWQ7CiAKK3N0cnVjdCBDQ1NoYXJlZFF1YWRTdGF0ZTsKKwogY2xhc3MgQ0NRdWFkU2luayB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q0NRdWFkU2luaygpIHsgfQogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBxdWFkIGlzIGFkZGVkIHRvIHRoZSBsaXN0LCBhbmQgZmFsc2UgaWYgdGhl
IHF1YWQgaXMgZW50aXJlbHkgY3VsbGVkLgogICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093
blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQpID0gMDsKKworICAgIHZpcnR1YWwgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHVzZVNoYXJlZFF1YWRTdGF0ZShQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMzEzM2Uy
M2Q1Yjc2ZThiMGRlNDQxYThjNjljYzQyNWM0YjM3MWQwMC4uODEwYTFjNWM4MTlkNzY5YTFiZWZj
YmY4MjZiYjQ5OWYyMmVjZDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01Nyw0
MCArNTcsMjYgQEAgQ0NSZW5kZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0
YXJnZXRTdXJmYWNlLCBpbnQgaWQpCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JM
YXllcihDQ0xheWVySW1wbCogbGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lv
blRyYWNrZXIsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykKIHsKICAgICBjb25zdCBib29sIGZvclN1
cmZhY2UgPSBmYWxzZTsKLSAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBs
YXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJm
YWNlKTsKKyAgICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBtX3NoYXJlZFF1
YWRTdGF0ZUxpc3QsIGxheWVyLCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3Jk
ZXJzKCksIGZvclN1cmZhY2UpOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKG1fc2hhcmVkUXVhZFN0
YXRlTGlzdC5zaXplKCkpOwotICAgIGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZEN1
bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVh
ZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwotICAgIG1f
c2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7Cisg
ICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAg
ICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhh
c09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQogCiB2b2lkIENDUmVuZGVy
UGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVy
LCBjb25zdCBDQ1JlbmRlclBhc3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9u
VHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIpCiB7Ci0gICAgLy8gRklYTUU6IHJlbmRlciBz
dXJmYWNlIGxheWVycyBzaG91bGQgYmUgYSBDQ0xheWVySW1wbC1kZXJpdmVkIGNsYXNzIGFuZAot
ICAgIC8vIG5vdCBiZSBoYW5kbGVkIHNwZWNpYWxseSBoZXJlLgogICAgIGNvbnN0IGJvb2wgZm9y
U3VyZmFjZSA9IHRydWU7Ci0gICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwg
bGF5ZXIsIG9jY2x1c2lvblRyYWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZm9yU3Vy
ZmFjZSk7CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRR
dWFkU3RhdGVMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9y
ZGVycygpLCBmb3JTdXJmYWNlKTsKIAotICAgIENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSA9IGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNo
YXJlZFF1YWRTdGF0ZSA9IHN1cmZhY2UtPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShtX3NoYXJlZFF1
YWRTdGF0ZUxpc3Quc2l6ZSgpKTsKICAgICBib29sIGlzUmVwbGljYSA9IGZhbHNlOwotICAgIHN1
cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNS
ZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKLSAgICBtX3NoYXJlZFF1YWRT
dGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwotCi0gICAgbV9oYXNP
Y2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5oYXNPY2NsdXNp
b25Gcm9tT3V0c2lkZVRhcmdldFN1cmZhY2UoKTsKLQotICAgIGlmICghbGF5ZXItPmhhc1JlcGxp
Y2EoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQo
KSk7CiAKICAgICAvLyBBZGQgcmVwbGljYSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0aGF0IGl0IGFw
cGVhcnMgYmVsb3cgdGhlIHN1cmZhY2UuCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBy
ZXBsaWNhU2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRT
dGF0ZShtX3NoYXJlZFF1YWRTdGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBpc1JlcGxpY2EgPSB0cnVl
OwotICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7Ci0g
ICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChyZXBsaWNhU2hhcmVkUXVhZFN0YXRlLnJl
bGVhc2UoKSk7CisgICAgaWYgKGxheWVyLT5oYXNSZXBsaWNhKCkpIHsKKyAgICAgICAgaXNSZXBs
aWNhID0gdHJ1ZTsKKyAgICAgICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgaXNSZXBsaWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKKyAg
ICB9CiAKICAgICBtX2hhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFk
Q3VsbGVyLmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQpAQCAtMTA0
LDIyICs5MCwyNSBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4o
Q0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZQogICAgIGlmIChmaWxsUmVnaW9u
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYm9vbCBmb3JTdXJmYWNlID0gZmFs
c2U7CisgICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRRdWFk
U3RhdGVMaXN0LCByb290TGF5ZXIsICZvY2NsdXNpb25UcmFja2VyLCByb290TGF5ZXItPmhhc0Rl
YnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKKwogICAgIC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUg
cXVhZCBzdGF0ZSBmb3IgdGhlIGd1dHRlciBxdWFkcywgYXMgdGhlIHJvb3QgbGF5ZXIKICAgICAv
LyBkb2Vzbid0IGhhdmUgYW55IGJvdW5kcyBhbmQgc28gY2FuJ3QgZ2VuZXJhdGUgdGhpcyBpdHNl
bGYuCiAgICAgLy8gRklYTUU6IE1ha2UgdGhlIGd1dHRlciBxdWFkcyBnZW5lcmF0ZWQgYnkgdGhl
IHNvbGlkIGNvbG9yIGxheWVyIChtYWtlIGl0IHNtYXJ0ZXIgYWJvdXQgZ2VuZXJhdGluZyBxdWFk
cyB0byBmaWxsIHVub2NjbHVkZWQgYXJlYXMpLgogICAgIEludFJlY3Qgcm9vdFRhcmdldFJlY3Qg
PSByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+Y29udGVudFJlY3QoKTsKICAgICBmbG9hdCBv
cGFjaXR5ID0gMTsKICAgICBib29sIG9wYXF1ZSA9IHRydWU7Ci0gICAgT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKDAs
IHJvb3RMYXllci0+ZHJhd1RyYW5zZm9ybSgpLCByb290VGFyZ2V0UmVjdCwgcm9vdFRhcmdldFJl
Y3QsIG9wYWNpdHksIG9wYXF1ZSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSA9IHF1YWRDdWxsZXIudXNlU2hhcmVkUXVhZFN0YXRlKENDU2hhcmVkUXVhZFN0YXRlOjpj
cmVhdGUocm9vdExheWVyLT5kcmF3VHJhbnNmb3JtKCksIHJvb3RUYXJnZXRSZWN0LCByb290VGFy
Z2V0UmVjdCwgb3BhY2l0eSwgb3BhcXVlKSk7CiAgICAgQVNTRVJUKHJvb3RMYXllci0+c2NyZWVu
U3BhY2VUcmFuc2Zvcm0oKS5pc0ludmVydGlibGUoKSk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtVG9MYXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpLmludmVyc2UoKTsKICAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJl
Z2lvbi5yZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIC8vIFRoZSByb290IGxheWVyIHRyYW5zZm9ybSBpcyBjb21wb3Nl
ZCBvZiB0cmFuc2xhdGlvbnMgYW5kIHNjYWxlcyBvbmx5LCBubyBwZXJzcGVjdGl2ZSwgc28gbWFw
cGluZyBpcyBzdWZmaWNpZW50LgogICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IENDTWF0aFV0
aWw6Om1hcENsaXBwZWRSZWN0KHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSwgZmlsbFJlY3RzW2ldKTsK
LSAgICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGxheWVyUmVjdCwgc2NyZWVuQmFja2dyb3VuZENvbG9yKSk7
CisgICAgICAgIC8vIFNraXAgdGhlIHF1YWQgY3VsbGVyIGFuZCBqdXN0IGFwcGVuZCB0aGUgcXVh
ZHMgZGlyZWN0bHkgdG8gYXZvaWQgb2NjbHVzaW9uIGNoZWNrcy4KKyAgICAgICAgbV9xdWFkTGlz
dC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGxh
eWVyUmVjdCwgc2NyZWVuQmFja2dyb3VuZENvbG9yKSk7CiAgICAgfQotICAgIG1fc2hhcmVkUXVh
ZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggNjdlY2I0MzA2YTBmNjc0YzZhYzc1MmRlM2YxYTY0MDYx
NWFlMGI4Mi4uOTMwYzhhN2M0MzFhOWNhMmMzM2Q3ZjMyMGQyM2YxMjljZTFkZWQ0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIGlubGluZSBj
b25zdEJhY2tUb0Zyb250SXRlcmF0b3IgYmFja1RvRnJvbnRFbmQoKSBjb25zdCB7IHJldHVybiBy
ZW5kKCk7IH0KIH07CiAKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
PiBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3Q7CisKIGNsYXNzIENDUmVuZGVyUGFzcyB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJQYXNzKTsKIHB1YmxpYzoKQEAgLTkyLDEwICs5NCwx
MCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBpbnQgbV9pZDsKICAgICBDQ1F1YWRMaXN0IG1fcXVhZExp
c3Q7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IG1fc2hhcmVkUXVhZFN0YXRlTGlzdDsKICAg
ICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0
OwogICAgIEludFJlY3QgbV9vdXRwdXRSZWN0OwogICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7
Ci0gICAgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBtX3NoYXJlZFF1YWRTdGF0
ZUxpc3Q7CiAgICAgYm9vbCBtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZDsKICAgICBib29sIG1f
aGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOwogICAgIFdlYktpdDo6V2ViRmls
dGVyT3BlcmF0aW9ucyBtX2ZpbHRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApp
bmRleCAxMWVkYmZhODhiNDAwNmYyODcxN2VlZWEwNmFjMmJkOWJmNWZmNTk1Li4wMGZjYmRkM2E4
NzE4MDk0ZWIxYjM1NjUzNWIwYjg5OTIyMzc0ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5jcHAKQEAgLTE4MSwzMCArMTgxLDIxIEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21w
dXRlQ2xpcHBlZFJlY3RJblRhcmdldChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAg
ICAgcmV0dXJuIGNsaXBwZWRSZWN0SW5UYXJnZXQ7CiB9CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRR
dWFkU3RhdGU+IENDUmVuZGVyU3VyZmFjZTo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkg
Y29uc3QKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
U2luaywgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKQogewotICAgIEludFJlY3Qg
Y2xpcHBlZFJlY3RJblRhcmdldCA9IGNvbXB1dGVDbGlwcGVkUmVjdEluVGFyZ2V0KG1fb3duaW5n
TGF5ZXIpOwotICAgIGJvb2wgaXNPcGFxdWUgPSBmYWxzZTsKLSAgICByZXR1cm4gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShpZCwgbV9kcmF3VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBjbGlw
cGVkUmVjdEluVGFyZ2V0LCBtX2RyYXdPcGFjaXR5LCBpc09wYXF1ZSk7Ci19CisgICAgQVNTRVJU
KCFmb3JSZXBsaWNhIHx8IG1fb3duaW5nTGF5ZXItPmhhc1JlcGxpY2EoKSk7CiAKLVBhc3NPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDUmVuZGVyU3VyZmFjZTo6Y3JlYXRlUmVwbGljYVNoYXJl
ZFF1YWRTdGF0ZShpbnQgaWQpIGNvbnN0Ci17CiAgICAgSW50UmVjdCBjbGlwcGVkUmVjdEluVGFy
Z2V0ID0gY29tcHV0ZUNsaXBwZWRSZWN0SW5UYXJnZXQobV9vd25pbmdMYXllcik7CiAgICAgYm9v
bCBpc09wYXF1ZSA9IGZhbHNlOwotICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRl
KGlkLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBjbGlwcGVkUmVjdElu
VGFyZ2V0LCBtX2RyYXdPcGFjaXR5LCBpc09wYXF1ZSk7Ci19Ci0KLXZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKQotewot
ICAgIEFTU0VSVCghZm9yUmVwbGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOwor
ICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtID0gZm9yUmVw
bGljYSA/IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gOiBtX2RyYXdUcmFuc2Zvcm07CisgICAgQ0NT
aGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRT
dGF0ZShDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGRyYXdUcmFuc2Zvcm0sIG1fY29udGVudFJl
Y3QsIGNsaXBwZWRSZWN0SW5UYXJnZXQsIG1fZHJhd09wYWNpdHksIGlzT3BhcXVlKSk7CiAKICAg
ICBpZiAobV9vd25pbmdMYXllci0+aGFzRGVidWdCb3JkZXJzKCkpIHsKICAgICAgICAgaW50IHJl
ZCA9IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvclJlZCA6IGRlYnVnU3VyZmFj
ZUJvcmRlckNvbG9yUmVkOwogICAgICAgICBpbnQgZ3JlZW4gPSBmb3JSZXBsaWNhID8gIGRlYnVn
UmVwbGljYUJvcmRlckNvbG9yR3JlZW4gOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckdyZWVuOwog
ICAgICAgICBpbnQgYmx1ZSA9IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJs
dWUgOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckJsdWU7CiAgICAgICAgIFNrQ29sb3IgY29sb3Ig
PSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSwgcmVkLCBncmVlbiwgYmx1
ZSk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3Jk
ZXJXaWR0aCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJm
YWNlQm9yZGVyV2lkdGgpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNh
bWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24s
CkBAIC0yMzcsNyArMjI4LDcgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKEND
UXVhZFNpbmsmIHF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmUKICAgICBDQ1Jlc291
cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbWFza1Jlc291cmNlSWQgPSBtYXNrTGF5ZXIgPyBtYXNr
TGF5ZXItPmNvbnRlbnRzUmVzb3VyY2VJZCgpIDogMDsKICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hh
bmdlZFNpbmNlTGFzdEZyYW1lID0gY29udGVudHNDaGFuZ2VkKCkgPyBtX2NvbnRlbnRSZWN0IDog
SW50UmVjdCgpOwogCi0gICAgcXVhZExpc3QuYXBwZW5kKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJl
cGxpY2EsIG1hc2tSZXNvdXJjZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwKKyAg
ICBxdWFkU2luay5hcHBlbmQoQ0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIGNvbnRlbnRSZWN0KCksIHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgbWFza1Jlc291
cmNlSWQsIGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1lLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2tUZXhDb29yZFNjYWxlWCwgbWFza1Rl
eENvb3JkU2NhbGVZLCBtYXNrVGV4Q29vcmRPZmZzZXRYLCBtYXNrVGV4Q29vcmRPZmZzZXRZKSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggMGU1MThiMmFhZjQ4NzUxODZk
ZjJlNjk1NmE2NWExYTQyNTc4MWJlZi4uMmYzZGI1MDAwODc0MjUwZTkxODAwOWY4MDE5OGNjYjE0
YzYyY2Y1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTEwNCwxMCArMTA0LDcg
QEAgcHVibGljOgogCiAgICAgQ0NEYW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3Qg
eyByZXR1cm4gbV9kYW1hZ2VUcmFja2VyLmdldCgpOyB9CiAKLSAgICBQYXNzT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBjcmVhdGVTaGFyZWRRdWFkU3RhdGUoaW50IGlkKSBjb25zdDsKLSAgICBQ
YXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRl
KGludCBpZCkgY29uc3Q7Ci0KLSAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ1No
YXJlZFF1YWRTdGF0ZSosIGJvb2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CisgICAg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVy
UGFzc0lkKTsKIAogcHJpdmF0ZToKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXllcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCBlMjk5MzE4ODQ2ZWU0
NTI1YjU2MTE3MmJjZjY2NzMzYTBmYzc5MTRmLi5kYzE5MWRjMmM1YWM2YmFmMDk2NGJkNTNmODNk
NmQ1ZjkxMDcwMmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3Bw
CkBAIC04OSwxMyArODksMTYgQEAgc3RhdGljIEZsb2F0UmVjdCB0b1VWUmVjdChjb25zdCBXZWJS
ZWN0JiByLCBjb25zdCBJbnRSZWN0JiBib3VuZHMpCiAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxmbG9hdD4oci53aWR0aCkgLyBib3VuZHMud2lkdGgoKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHIuaGVpZ2h0KSAvIGJvdW5kcy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJM
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTY3JvbGxiYXJMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIHsKICAgICBi
b29sIHByZW11bHRpcGxlZEFscGhhID0gZmFsc2U7CiAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7
CiAgICAgRmxvYXRSZWN0IHV2UmVjdCgwLCAwLCAxLCAxKTsKICAgICBJbnRSZWN0IGJvdW5kc1Jl
Y3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKTsKIAorICAgIENDU2hhcmVkUXVhZFN0YXRl
KiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hh
cmVkUXVhZFN0YXRlKCkpOworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hh
cmVkUXVhZFN0YXRlKTsKKwogICAgIFdlYlJlY3QgdGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBm
b3JlVHJhY2tSZWN0OwogICAgIG1fZ2VvbWV0cnktPnNwbGl0VHJhY2soJm1fc2Nyb2xsYmFyLCBt
X2dlb21ldHJ5LT50cmFja1JlY3QoJm1fc2Nyb2xsYmFyKSwgYmFja1RyYWNrUmVjdCwgdGh1bWJS
ZWN0LCBmb3JlVHJhY2tSZWN0KTsKICAgICBpZiAoIW1fZ2VvbWV0cnktPmhhc1RodW1iKCZtX3Nj
cm9sbGJhcikpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFMKICAg
ICBpZiAobV90aHVtYlJlc291cmNlSWQgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVjdC55LCB0
aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVjdC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJZCwgcHJl
bXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWQtPnNldE5lZWRz
QmxlbmRpbmcoKTsKLSAgICAgICAgcXVhZExpc3QuYXBwZW5kKHF1YWQucmVsZWFzZSgpKTsKKyAg
ICAgICAgcXVhZFNpbmsuYXBwZW5kKHF1YWQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICBpZiAo
IW1fYmFja1RyYWNrUmVzb3VyY2VJZCkKQEAgLTExMiwxMiArMTE1LDEyIEBAIHZvaWQgQ0NTY3Jv
bGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTCiAKICAgICAvLyBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBpbiB0d28gcGFy
dHMgaWYgd2Ugd2VyZSBnaXZlbiBhIHRleHR1cmUgZm9yIHRoZSBmb3J3YXJkIHRyYWNrIHBhcnQu
CiAgICAgaWYgKG1fZm9yZVRyYWNrUmVzb3VyY2VJZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5
KCkpCi0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgSW50UmVjdChmb3JlVHJhY2tSZWN0LngsIGZvcmVUcmFja1JlY3QueSwg
Zm9yZVRyYWNrUmVjdC53aWR0aCwgZm9yZVRyYWNrUmVjdC5oZWlnaHQpLCBtX2ZvcmVUcmFja1Jl
c291cmNlSWQsIHByZW11bHRpcGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3Vu
ZHNSZWN0KSwgZmxpcHBlZCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QoZm9yZVRyYWNrUmVjdC54LCBm
b3JlVHJhY2tSZWN0LnksIGZvcmVUcmFja1JlY3Qud2lkdGgsIGZvcmVUcmFja1JlY3QuaGVpZ2h0
KSwgbV9mb3JlVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9y
ZVRyYWNrUmVjdCwgYm91bmRzUmVjdCksIGZsaXBwZWQpKTsKIAogICAgIC8vIE9yZGVyIG1hdHRl
cnMgaGVyZTogc2luY2UgdGhlIGJhY2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0
aGUgZW50aXJlIGNvbnRlbnRzIHJlY3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVt
YiBhbmQKICAgICAvLyBmb3JlIHRyYWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNv
bnRhaW5zIChhbmQgZGlzcGxheXMpIHRoZSBidXR0b25zLgogICAgIGlmICghYm91bmRzUmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdChib3VuZHNSZWN0KSwgbV9iYWNrVHJhY2tSZXNv
dXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgICAgIHF1
YWRTaW5rLmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwg
SW50UmVjdChib3VuZHNSZWN0KSwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRB
bHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CiB9CiAKIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6
OmRpZExvc2VDb250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmlu
ZGV4IGNhNDBkMDk5ZmZiYzVhMmMxYTBiN2ExMDQ5Y2ViMWM0OWZhMDkyY2YuLmY4ZmQ3YmY4YzI1
ZDFhOWJjNTNkYWQwZjY1ZDI0MDdhMTc3MjM2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxi
YXJMYXllckltcGwuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6Oldl
YlNjcm9sbGJhcjo6T3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1p
c3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQo
KSBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmluZGV4IDMz
Nzk4NzQ5N2QyNGMwYmRlYTI5OWRiNGIyYjZhMWU5NDVlOTc1YmEuLmYzOTIyYjMwMWI2ZTBhZmUy
YjcyMjY2ZTc5MjZmMjU3YTZlOWMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0
ZS5jcHAKQEAgLTMxLDEzICszMSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NP
d25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoaW50IGlk
LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBj
b25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBwZWRS
ZWN0SW5UYXJnZXQsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorUGFzc093blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNp
YmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQsIGZsb2F0
IG9wYWNpdHksIGJvb2wgb3BhcXVlKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaGFy
ZWRRdWFkU3RhdGUoaWQsIHF1YWRUcmFuc2Zvcm0sIHZpc2libGVDb250ZW50UmVjdCwgY2xpcHBl
ZFJlY3RJblRhcmdldCwgb3BhY2l0eSwgb3BhcXVlKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDQ1NoYXJlZFF1YWRTdGF0ZShxdWFkVHJhbnNmb3JtLCB2aXNpYmxlQ29udGVudFJlY3QsIGNs
aXBwZWRSZWN0SW5UYXJnZXQsIG9wYWNpdHksIG9wYXF1ZSkpOwogfQogCi1DQ1NoYXJlZFF1YWRT
dGF0ZTo6Q0NTaGFyZWRRdWFkU3RhdGUoaW50IGlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVu
dFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlKQotICAgIDogaWQoaWQpCitDQ1NoYXJlZFF1YWRTdGF0ZTo6Q0NTaGFyZWRR
dWFkU3RhdGUoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5z
Zm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJbnRSZWN0JiBj
bGlwcGVkUmVjdEluVGFyZ2V0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKKyAgICA6IGlk
KC0xKQogICAgICwgcXVhZFRyYW5zZm9ybShxdWFkVHJhbnNmb3JtKQogICAgICwgdmlzaWJsZUNv
bnRlbnRSZWN0KHZpc2libGVDb250ZW50UmVjdCkKICAgICAsIGNsaXBwZWRSZWN0SW5UYXJnZXQo
Y2xpcHBlZFJlY3RJblRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCmluZGV4
IGFmMTJiZWM1YTdhN2MxOTA0MDdmNWIyN2YzZmNlYWU0NDgyZGYzNTkuLmYzYWRmMDMwMWVkMmQx
NDBlNDA5MzJkNWFmNTc4OTNkZWMzNmE0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3Rh
dGUuaApAQCAtNDMsOCArNDMsOCBAQCBzdHJ1Y3QgQ0NTaGFyZWRRdWFkU3RhdGUgewogICAgIGZs
b2F0IG9wYWNpdHk7CiAgICAgYm9vbCBvcGFxdWU7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxD
Q1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGludCBpZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRl
bnRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwcGVkUmVjdEluVGFyZ2V0LCBmbG9hdCBvcGFjaXR5
LCBib29sIG9wYXF1ZSk7Ci0gICAgQ0NTaGFyZWRRdWFkU3RhdGUoaW50IGlkLCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0
JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQs
IGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1No
YXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29u
c3QgSW50UmVjdCYgY2xpcHBlZFJlY3RJblRhcmdldCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFx
dWUpOworICAgIENDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVj
dCwgY29uc3QgSW50UmVjdCYgY2xpcHBlZFJlY3RJblRhcmdldCwgZmxvYXQgb3BhY2l0eSwgYm9v
bCBvcGFxdWUpOwogICAgIGJvb2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0Owog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5kZXggMjM5
ODRmOWQ0ZmFkYmZhOGZlNTE3N2EzOTYxMDY0N2FhOGQ3NTQwYi4uZmUwMDA3ZjU1NGRkOWI4NzE4
MDNiMjgwYzdhZDQyNDhiYmQ3NmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JM
YXllckltcGwuY3BwCkBAIC00OSw4ICs0OSwxMSBAQCBDQ1NvbGlkQ29sb3JMYXllckltcGw6On5D
Q1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi12b2lkIENDU29saWRDb2xvckxheWVySW1w
bDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0
YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIHsKKyAgICBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRl
KGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVh
ZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisKICAgICAvLyBXZSBjcmVhdGUgYSBzZXJpZXMgb2Yg
c21hbGxlciBxdWFkcyBpbnN0ZWFkIG9mIGp1c3Qgb25lIGxhcmdlIG9uZSBzbyB0aGF0IHRoZQog
ICAgIC8vIGN1bGxlciBjYW4gcmVkdWNlIHRoZSB0b3RhbCBwaXhlbHMgZHJhd24uCiAgICAgaW50
IHdpZHRoID0gY29udGVudEJvdW5kcygpLndpZHRoKCk7CkBAIC01OCw3ICs2MSw3IEBAIHZvaWQg
Q0NTb2xpZENvbG9yTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwg
Y29uc3QgQ0NTaGFyZWRRdWFkCiAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCArPSBt
X3RpbGVTaXplKSB7CiAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IG1f
dGlsZVNpemUpIHsKICAgICAgICAgICAgIEludFJlY3Qgc29saWRUaWxlUmVjdCh4LCB5LCBtaW4o
d2lkdGggLSB4LCBtX3RpbGVTaXplKSwgbWluKGhlaWdodCAtIHksIG1fdGlsZVNpemUpKTsKLSAg
ICAgICAgICAgIHF1YWRMaXN0LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNo
YXJlZFF1YWRTdGF0ZSwgc29saWRUaWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKKyAgICAg
ICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJl
ZFF1YWRTdGF0ZSwgc29saWRUaWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKICAgICAgICAg
fQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXgg
ZDE5YTIzMGRjZTY5NDZkMzM4MjJhZTk5NWIzZDRjZGU1OGViYjJkMS4uZDkzMDgyMmMzMTg1ZDIz
YjU2NjEyN2E0ODFlMTZhZDA1Nzc0ZWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsLmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFs
IH5DQ1NvbGlkQ29sb3JMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFk
cyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5n
VGlsZXMpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5r
JiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IENDU29saWRDb2xvckxheWVySW1wbChpbnQgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZUxheWVySW1wbC5jcHAKaW5kZXggYjk4MWY3MTNkMWFmZmNmYTE1ZTk1MjE5YjEyOGQ2YmEw
MGIwYjA1Yy4uNTlkYmM4YWMwMTc2ODE0MmU0NzUyYWU5NDA0Y2UxZjcxMTAxMDI2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuY3BwCkBAIC01OCwxMiArNTgsMTYgQEAgdm9p
ZCBDQ1RleHR1cmVMYXllckltcGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3Vy
Y2VQcm92aWRlcikKICAgICBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVzb3VyY2VQcm92
aWRlci0+Y3JlYXRlUmVzb3VyY2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlkKTsKIH0K
IAotdm9pZCBDQ1RleHR1cmVMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRM
aXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3Zv
aWQgQ0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywg
Ym9vbCYpCiB7CiAgICAgaWYgKCFtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKQogICAgICAgICBy
ZXR1cm47CisKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNp
bmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKKyAgICBhcHBl
bmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisKICAgICBJbnRS
ZWN0IHF1YWRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0gICAgcXVhZExpc3Qu
YXBwZW5kKENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVj
dCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgbV9wcmVtdWx0aXBsaWVkQWxwaGEsIG1fdXZS
ZWN0LCBtX2ZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6
OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2V4dGVybmFsVGV4dHVyZVJlc291
cmNlLCBtX3ByZW11bHRpcGxpZWRBbHBoYSwgbV91dlJlY3QsIG1fZmxpcHBlZCkpOwogfQogCiB2
b2lkIENDVGV4dHVyZUxheWVySW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291
cmNlUHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDE1M2Vi
OTE4ZWJkMWY5YWE0YmQwMDhmODNhMmJkOTA4Njg1MjliNjUuLjU1ZDQ4YjQ1MTNhZDM2MTg0NmY2
YTdlNWRiMTE2MDI1MTM0ZDUyNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5o
CkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1RleHR1cmVMYXllcklt
cGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3Zp
ZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVS
UklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggYWQ5OTNjYTE1MDZh
MTE5YmE0OGIyYTI1M2FjOGY4NGQ5MTZjYTA1Ny4uYjYxMWQ5ODkxYjY2Y2EyYmI4ZWI4YmQ0MmRi
NDkxOGMyODRiYjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTEy
NSwxMyArMTI1LDE2IEBAIERyYXdhYmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlVGls
ZShpbnQgaSwgaW50IGopCiAgICAgcmV0dXJuIGFkZGVkVGlsZTsKIH0KIAotdm9pZCBDQ1RpbGVk
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQordm9p
ZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9v
bCYgaGFkTWlzc2luZ1RpbGVzKQogewogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0ID0g
dmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAKICAgICBpZiAoIW1fdGlsZXIgfHwgbV90aWxlci0+aGFz
RW1wdHlCb3VuZHMoKSB8fCBjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
IAorICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VT
aGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOworICAgIGFwcGVuZERlYnVn
Qm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsKKwogICAgIGludCBsZWZ0LCB0
b3AsIHJpZ2h0LCBib3R0b207CiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2Vz
KGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogCkBAIC0xNDYsNyArMTQ5
LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUKICAgICAgICAgICAgICAgICAgICAgYm9yZGVy
Q29sb3IgPSBTa0NvbG9yU2V0QVJHQihkZWJ1Z1RpbGVCb3JkZXJBbHBoYSwgZGVidWdUaWxlQm9y
ZGVyTWlzc2luZ1RpbGVDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdy
ZWVuLCBkZWJ1Z1RpbGVCb3JkZXJNaXNzaW5nVGlsZUNvbG9yQmx1ZSk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdC
KGRlYnVnVGlsZUJvcmRlckFscGhhLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdUaWxl
Qm9yZGVyQ29sb3JHcmVlbiwgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlKTsKLSAgICAgICAgICAg
ICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVk
UXVhZFN0YXRlLCB0aWxlUmVjdCwgYm9yZGVyQ29sb3IsIGRlYnVnVGlsZUJvcmRlcldpZHRoKSk7
CisgICAgICAgICAgICAgICAgcXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJvcmRlckNvbG9yLCBkZWJ1Z1RpbGVC
b3JkZXJXaWR0aCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTY3LDkg
KzE3MCw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlCiAKICAgICAgICAgICAgIGlmICghdGls
ZSB8fCAhdGlsZS0+cmVzb3VyY2VJZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2lu
Z1RpbGVzIHw9IHF1YWRMaXN0LmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUo
c2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCkpOworICAgICAgICAgICAgICAgICAgICBoYWRNaXNz
aW5nVGlsZXMgfD0gcXVhZFNpbmsuYXBwZW5kKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0
ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBoYWRNaXNzaW5nVGlsZXMgfD0gcXVhZExpc3QuYXBwZW5kKENDU29s
aWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYmFja2dy
b3VuZENvbG9yKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1
YWRTaW5rLmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0
ZSwgdGlsZVJlY3QsIGJhY2tncm91bmRDb2xvcigpKSk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICB9CiAKQEAgLTE5NSw3ICsxOTgsNyBAQCB2b2lkIENDVGlsZWRMYXll
ckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZQogICAgICAgICAgICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51
bVRpbGVzWSgpIC0gMSAmJiB1c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0
dXJlRmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQz
RDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFk
TGlzdC5hcHBlbmQoQ0NUaWxlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVS
ZWN0LCB0aWxlT3BhcXVlUmVjdCwgdGlsZS0+cmVzb3VyY2VJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0
ZXh0dXJlU2l6ZSwgdGV4dHVyZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFB
LCB0b3BFZGdlQUEsIHJpZ2h0RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1
YWRTaW5rLmFwcGVuZChDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGls
ZVJlY3QsIHRpbGVPcGFxdWVSZWN0LCB0aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQs
IHRleHR1cmVTaXplLCB0ZXh0dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdl
QUEsIHRvcEVkZ2VBQSwgcmlnaHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogICAgICAgICB9CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCmluZGV4IDZiODc3YjM0MTEwYmQ4
NTJhZGUyY2E1OTQ5OTMyNWQ3NjM5NTY3ZDIuLjFiYzYwYWJhNDcxMzdiMGMyMThlYTA1YzhlOWM5
ZjMwNmFkMzg5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQy
LDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZF
UlJJREU7CiAKICAgICB2aXJ0dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250
ZW50c1Jlc291cmNlSWQoKSBjb25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5
ZXJJbXBsLmNwcAppbmRleCAxNGNiMzI3MjZlNTE0NGVjOWY4YmY5MTVlZmJkOTIyM2VlODhkZThj
Li42NjJjZDJmMDNjMGRiNjA0NzYxOTliNmMzMzViZGUxYmE2MDdkZjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMTc3LDEzICsxNzcsMTYgQEAgdm9pZCBDQ1ZpZGVv
TGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKICAgICAgICAgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJv
dmlkZXItPmNyZWF0ZVJlc291cmNlRnJvbUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50ZXh0dXJl
SWQoKSk7CiB9CiAKLXZvaWQgQ0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJv
b2wmKQordm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
U2luaywgYm9vbCYpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAog
ICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQ0NTaGFyZWRRdWFkU3Rh
dGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVT
aGFyZWRRdWFkU3RhdGUoKSk7CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBz
aGFyZWRRdWFkU3RhdGUpOworCiAgICAgLy8gRklYTUU6IFdoZW4gd2UgcGFzcyBxdWFkcyBvdXQg
b2YgcHJvY2Vzcywgd2UgbmVlZCB0byBkb3VibGUtYnVmZmVyLCBvcgogICAgIC8vIG90aGVyd2lz
ZSBzeW5jaG9uaXplIHVzZSBvZiBhbGwgdGV4dHVyZXMgaW4gdGhlIHF1YWQuCiAKQEAgLTE5Niw3
ICsxOTksNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICBjb25zdCBGcmFtZVBs
YW5lJiB1UGxhbmUgPSBtX2ZyYW1lUGxhbmVzW1dlYktpdDo6V2ViVmlkZW9GcmFtZTo6dVBsYW5l
XTsKICAgICAgICAgY29uc3QgRnJhbWVQbGFuZSYgdlBsYW5lID0gbV9mcmFtZVBsYW5lc1tXZWJL
aXQ6OldlYlZpZGVvRnJhbWU6OnZQbGFuZV07CiAgICAgICAgIE93blB0cjxDQ1lVVlZpZGVvRHJh
d1F1YWQ+IHl1dlZpZGVvUXVhZCA9IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1
YWRTdGF0ZSwgcXVhZFJlY3QsIHlQbGFuZSwgdVBsYW5lLCB2UGxhbmUpOwotICAgICAgICBxdWFk
TGlzdC5hcHBlbmQoeXV2VmlkZW9RdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFw
cGVuZCh5dXZWaWRlb1F1YWQucmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkE6IHsKQEAgLTIwOCw3ICsyMTEsNyBAQCB2b2lk
IENDVmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIHdpZHRo
U2NhbGVGYWN0b3IsIDEpOwogICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKICAgICAgICAg
T3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgcGxhbmUucmVzb3VyY2VJZCwgcHJl
bXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwotICAgICAgICBxdWFkTGlzdC5hcHBl
bmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1
cmVRdWFkLnJlbGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJEOiB7CkBAIC0yMTcsMTkgKzIyMCwxOSBAQCB2b2lkIEND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIDEsIDEpOwog
ICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKICAgICAgICAgT3duUHRyPENDVGV4dHVyZURy
YXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGll
ZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVy
ZVF1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1cmVRdWFkLnJl
bGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6
VEVYVFVSRV9SRUNUQU5HTEVfQVJCOiB7CiAgICAgICAgIEludFNpemUgdGV4dHVyZVNpemUobV9m
cmFtZS0+d2lkdGgoKSwgbV9mcmFtZS0+aGVpZ2h0KCkpOyAKICAgICAgICAgT3duUHRyPENDSU9T
dXJmYWNlRHJhd1F1YWQ+IGlvU3VyZmFjZVF1YWQgPSBDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVh
dGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgdGV4dHVyZVNpemUsIG1fZnJhbWUtPnRleHR1
cmVJZCgpLCBDQ0lPU3VyZmFjZURyYXdRdWFkOjpVbmZsaXBwZWQpOwotICAgICAgICBxdWFkTGlz
dC5hcHBlbmQoaW9TdXJmYWNlUXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBl
bmQoaW9TdXJmYWNlUXVhZC5yZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBFeHRlbnNpb25zM0RDaHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6IHsKICAg
ICAgICAgLy8gU3RyZWFtVGV4dHVyZSBoYXJkd2FyZSBkZWNvZGVyLgogICAgICAgICBPd25QdHI8
Q0NTdHJlYW1WaWRlb0RyYXdRdWFkPiBzdHJlYW1WaWRlb1F1YWQgPSBDQ1N0cmVhbVZpZGVvRHJh
d1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2ZyYW1lLT50ZXh0dXJl
SWQoKSwgbV9zdHJlYW1UZXh0dXJlTWF0cml4KTsKLSAgICAgICAgcXVhZExpc3QuYXBwZW5kKHN0
cmVhbVZpZGVvUXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoc3RyZWFt
VmlkZW9RdWFkLnJlbGVhc2UoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5oCmluZGV4IDMwMDcwYzhjMTcwMGMxYTNlYzE1
MjM4ZWZlODY5ZmU3MDE4YTczZTMuLjJjNTRlMzUxMzljMjNmMmNjMjAwZmE3NGRhYWI1MjE2Mzhi
YjY3MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVmlkZW9MYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwg
Ym9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVu
dCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDZlYzBjZTVkN2FiNWUyZTFk
NjUwZjA5YzY4OThhOTAxNWE3YjNhN2UuLmQ0NDUzZjVkZDVmMGE3MWU4M2I4ZmY2ZmNjYTYwZTMy
OGM2MWUyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCBjbGFzcyBC
bGVuZFN0YXRlQ2hlY2tMYXllciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIEND
UmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3
IEJsZW5kU3RhdGVDaGVja0xheWVyKGlkLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCisgICAgdmlydHVh
bCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikgT1ZFUlJJREUK
ICAgICB7CiAgICAgICAgIG1fcXVhZHNBcHBlbmRlZCA9IHRydWU7CiAKQEAgLTEzNTQsMTEgKzEz
NTQsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgb3BhcXVlUmVjdCA9IG1fcXVhZFJlY3Q7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG9wYXF1ZVJlY3QgPSBtX29wYXF1ZUNvbnRlbnRSZWN0
OworCisgICAgICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2lu
ay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwogICAgICAgICBP
d25QdHI8Q0NEcmF3UXVhZD4gdGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1RpbGVEcmF3UXVhZDo6
Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgbV9xdWFkUmVjdCwgb3BhcXVlUmVjdCwgbV9yZXNvdXJj
ZUlkLCBJbnRQb2ludCgpLCBJbnRTaXplKDEsIDEpLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOwogICAgICAgICB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+c2V0UXVhZFZpc2li
bGVSZWN0KG1fcXVhZFZpc2libGVSZWN0KTsKICAgICAgICAgRVhQRUNUX0VRKG1fYmxlbmQsIHRl
c3RCbGVuZGluZ0RyYXdRdWFkLT5uZWVkc0JsZW5kaW5nKCkpOwogICAgICAgICBFWFBFQ1RfRVEo
bV9oYXNSZW5kZXJTdXJmYWNlLCAhIXJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIHF1YWRMaXN0
LmFwcGVuZCh0ZXN0QmxlbmRpbmdEcmF3UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2lu
ay5hcHBlbmQodGVzdEJsZW5kaW5nRHJhd1F1YWQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICB2
b2lkIHNldEV4cGVjdGF0aW9uKGJvb2wgYmxlbmQsIGJvb2wgaGFzUmVuZGVyU3VyZmFjZSkKQEAg
LTE4NzcsMTIgKzE4NzksMTQgQEAgY2xhc3MgRmFrZUxheWVyV2l0aFF1YWRzIDogcHVibGljIEND
TGF5ZXJJbXBsIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGYWtlTGF5ZXJXaXRo
UXVhZHM+IGNyZWF0ZShpbnQgaWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlTGF5ZXJXaXRo
UXVhZHMoaWQpKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsm
IHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29s
JikgT1ZFUlJJREUKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVh
ZFNpbmssIGJvb2wmKSBPVkVSUklERQogICAgIHsKKyAgICAgICAgQ0NTaGFyZWRRdWFkU3RhdGUq
IHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoKSk7CisKICAgICAgICAgU2tDb2xvciBncmF5ID0gU2tDb2xvclNldFJHQigx
MDAsIDEwMCwgMTAwKTsKICAgICAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgwLCAwKSwg
Y29udGVudEJvdW5kcygpKTsKICAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IG15UXVhZCA9IEND
U29saWRDb2xvckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgZ3Jh
eSk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZChteVF1YWQucmVsZWFzZSgpKTsKKyAgICAgICAg
cXVhZFNpbmsuYXBwZW5kKG15UXVhZC5yZWxlYXNlKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTM4NjksNyArMzg3Myw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0
YShjb25zdCBjaGFyKiB0ZXN0U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgcmVuZGVyZXIt
PmNsZWFyQ2FjaGVkVGV4dHVyZXMoKTsKIAogICAgIC8vIE9uZSBzaGFyZWQgc3RhdGUgZm9yIGFs
bCBxdWFkcyAtIHdlIGRvbid0IG5lZWQgdGhlIGNvcnJlY3QgZGV0YWlscwotICAgIHRlc3REYXRh
LnNoYXJlZFF1YWRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoMCwgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAg
dGVzdERhdGEuc2hhcmVkUXVhZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSwgMS4wLCB0cnVlKTsK
IAogICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRDaGFyID0gdGVzdFNjcmlwdDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5k
ZXggNTIwMjIwOGI5NGYzZDVlZmE3YmFlZjgwYjJlM2E2MmE1OGUzYmU5Yi4uMmI0NDUyZGQzNWRm
OTFlNWYxMTRhNGRhOTA0MTE2YWU4N2M2ZjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNDA5LDcgKzI0MDks
NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZpY3Rpb25UZXN0TGF5
ZXJJbXBsKGlkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgfkV2aWN0aW9uVGVzdExheWVySW1wbCgp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NT
aGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCisgICAgdmlydHVhbCB2b2lk
IGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiAgICAgewog
ICAgICAgICBBU1NFUlRfVFJVRShtX2hhc1RleHR1cmUpOwogICAgICAgICBBU1NFUlRfTkUoMHUs
IGxheWVyVHJlZUhvc3RJbXBsKCktPnJlc291cmNlUHJvdmlkZXIoKS0+bnVtUmVzb3VyY2VzKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5j
cHAKaW5kZXggZjczMmNkYzY4Y2IzZTRhZTBhZThkNjU3MTU5MjJhNDA1N2U2MzVlMC4uMmM1ZTg4
NTljMDEzNmQxZjZjZjA2YjZjZWFkYzY0MWYxYzVhMjJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC05NiwxNCArOTYsMTIg
QEAgc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRM
YXllckltcGwqIHBhcmVudCwgY29uc3QgV2UKICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwog
fQogCi1zdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgVmVjdG9y
PE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiYgc2hhcmVkU3RhdGVMaXN0LCBDQ1RpbGVkTGF5
ZXJJbXBsKiBsYXllciwgQ0NMYXllckl0ZXJhdG9yVHlwZSYgaXQsIENDT2NjbHVzaW9uVHJhY2tl
ckltcGwmIG9jY2x1c2lvblRyYWNrZXIpCitzdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRM
aXN0JiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0JiBzaGFyZWRTdGF0ZUxpc3QsIEND
VGlsZWRMYXllckltcGwqIGxheWVyLCBDQ0xheWVySXRlcmF0b3JUeXBlJiBpdCwgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCYgb2NjbHVzaW9uVHJhY2tlcikKIHsKICAgICBvY2NsdXNpb25UcmFja2Vy
LmVudGVyTGF5ZXIoaXQpOwotICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBs
YXllciwgJm9jY2x1c2lvblRyYWNrZXIsIGZhbHNlLCBmYWxzZSk7Ci0gICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0
YXRlKDApOworICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBzaGFyZWRTdGF0
ZUxpc3QsIGxheWVyLCAmb2NjbHVzaW9uVHJhY2tlciwgZmFsc2UsIGZhbHNlKTsKICAgICBib29s
IGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgc2hhcmVk
U3RhdGVMaXN0LmFwcGVuZChzaGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKyAgICBsYXllci0+
YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICBvY2NsdXNpb25U
cmFja2VyLmxlYXZlTGF5ZXIoaXQpOwogICAgICsraXQ7CiB9CkBAIC0xMTEsOSArMTA5LDkgQEAg
c3RhdGljIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+ID4KICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9U
RVNUX1FVQURTICAgICAgICAgICAgICAgXAogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsOyAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBWZWN0b3I8T3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiA+IHNoYXJlZFN0YXRlTGlzdDsgXAorICAgIENDU2hhcmVkUXVhZFN0YXRlTGlz
dCBzaGFyZWRTdGF0ZUxpc3Q7ICAgICAgICAgICAgICBcCiAgICAgVmVjdG9yPENDTGF5ZXJJbXBs
Kj4gcmVuZGVyU3VyZmFjZUxheWVyTGlzdDsgICAgICAgIFwKLSAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAgICAgICAgICAgICAgXAorICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOyAgICAgICAgICAgICBcCiAgICAgSW50U2l6ZSBy
b290U2l6ZSA9IEludFNpemUoMzAwLCAzMDApOyAgICAgICAgICAgICAgIFwKICAgICBJbnRSZWN0
IHJvb3RSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCByb290U2l6ZSk7ICAgXAogICAgIEludFNp
emUgY2hpbGRTaXplID0gSW50U2l6ZSgyMDAsIDIwMCk7ICAgICAgICAgICAgICBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApp
bmRleCBhNmE0MjJlMzI3ZGU3OTAyMmFlMTk1NjkyY2VjNWFhODYzMTYzMzIwLi4wNWQ3MTY2NDEz
MmNkMDQzM2Q4MzgyYjdiOTM4ZTkwODBlYjZlNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJDQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgIkNDU2hhcmVkUXVhZFN0YXRl
LmgiCiAjaW5jbHVkZSAiQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgIk1vY2tDQ1F1
YWRDdWxsZXIuaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC0x
MTUsNyArMTE2LDE1IEBAIFRFU1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJm
YWNlQ3JlYXRlc0NvcnJlY3RTaGFyZWRRdWFkU3RhdGUpCiAgICAgcmVuZGVyU3VyZmFjZS0+c2V0
Q2xpcFJlY3QoY2xpcFJlY3QpOwogICAgIHJlbmRlclN1cmZhY2UtPnNldERyYXdPcGFjaXR5KDEp
OwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSByZW5k
ZXJTdXJmYWNlLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CisgICAgQ0NRdWFkTGlzdCBxdWFk
TGlzdDsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3Qgc2hhcmVkU3RhdGVMaXN0OworICAgIE1v
Y2tDQ1F1YWRDdWxsZXIgbW9ja1F1YWRDdWxsZXIocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCk7
CisKKyAgICBib29sIGZvclJlcGxpY2EgPSBmYWxzZTsKKyAgICByZW5kZXJTdXJmYWNlLT5hcHBl
bmRRdWFkcyhtb2NrUXVhZEN1bGxlciwgZm9yUmVwbGljYSwgMSk7CisKKyAgICBBU1NFUlRfRVEo
MXUsIHNoYXJlZFN0YXRlTGlzdC5zaXplKCkpOworICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFy
ZWRRdWFkU3RhdGUgPSBzaGFyZWRTdGF0ZUxpc3RbMF0uZ2V0KCk7CiAKICAgICBFWFBFQ1RfRVEo
MzAsIHNoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybS5tNDEoKSk7CiAgICAgRVhQRUNUX0VR
KDQwLCBzaGFyZWRRdWFkU3RhdGUtPnF1YWRUcmFuc2Zvcm0ubTQyKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVz
dC5jcHAKaW5kZXggMWViYTk5MWMzMzViMGIzOGU1MmY5NzE0YTA3NWNkNzIwNWIwMWZlNS4uMjIw
MTg5YjQxNjQzY2Q5N2RkNWFkZGMwMzY2Y2RmNzU4ZWJmOGE4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3Qu
Y3BwCkBAIC01Myw5ICs1Myw4IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVy
aWZ5VGlsaW5nQ29tcGxldGVBbmROb092ZXJsYXApCiAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKICAgICBsYXllci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyLmdldCgpKTsKIAotICAg
IE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0
ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwot
ICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCks
IGhhZE1pc3NpbmdUaWxlcyk7CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhh
ZE1pc3NpbmdUaWxlcyk7CiAKICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1
bGxlci5xdWFkTGlzdCgpLCB2aXNpYmxlQ29udGVudFJlY3QpOwogfQpAQCAtNzgsOSArNzcsOCBA
QCBURVNUKENDU29saWRDb2xvckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5k
Q29sb3JJblF1YWQpCiAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBsYXll
ci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyLmdldCgpKTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgw
KTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7
CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAK
ICAgICBBU1NFUlRfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAgIEVY
UEVDVF9FUShDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWRDdWxsZXIucXVh
ZExpc3QoKVswXS5nZXQoKSktPmNvbG9yKCksIHRlc3RDb2xvcik7CkBAIC0xMDQsOSArMTAyLDgg
QEAgVEVTVChDQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LCB2ZXJpZnlDb3JyZWN0T3BhY2l0eUlu
UXVhZCkKICAgICBsYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIGxheWVyLT5zZXRS
ZW5kZXJUYXJnZXQobGF5ZXIuZ2V0KCkpOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOwogICAg
IGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1
YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICBs
YXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFT
U0VSVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7CiAgICAgRVhQRUNUX0VR
KG9wYWNpdHksIENDU29saWRDb2xvckRyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZEN1bGxlci5x
dWFkTGlzdCgpWzBdLmdldCgpKS0+b3BhY2l0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggNjIzMzZiYjUw
YzQ4ODY2MDQ4YWJiMzc0NjFhNWY4N2Y1NjY0MGQ4OC4uOGI0YmQyMGU4ZDljYTIyMTQzZjEyZTlm
N2NlNWZhNzdkOTcwZTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKQEAgLTc2LDkgKzc2LDggQEAgVEVTVChDQ1Rp
bGVkTGF5ZXJJbXBsVGVzdCwgZW1wdHlRdWFkTGlzdCkKICAgICB7CiAgICAgICAgIE93blB0cjxD
Q1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUs
IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRD
dWxsZXIgcXVhZEN1bGxlcjsKLSAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOwogICAgICAgICBi
b29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOworICAg
ICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgbnVtVGlsZXMgPSBudW1UaWxlc1ggKiBudW1UaWxlc1k7CiAg
ICAgICAgIEVYUEVDVF9FUShxdWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7
CiAgICAgfQpAQCAtODksOSArODgsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0
eVF1YWRMaXN0KQogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3Qo
KSk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBPd25Q
dHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFy
ZWRRdWFkU3RhdGUoMCk7CiAgICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0g
ICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFk
TGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtMTAzLDkgKzEwMSw4IEBAIFRFU1QoQ0NU
aWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgICAgIGxheWVyLT5zZXRWaXNp
YmxlQ29udGVudFJlY3Qob3V0c2lkZUJvdW5kcyk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxl
ciBxdWFkQ3VsbGVyOwotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1
YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CiAgICAgICAgIGJvb2wg
aGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAg
IGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAg
ICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApA
QCAtMTE1LDkgKzExMiw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExp
c3QpCiAgICAgICAgIGxheWVyLT5zZXRTa2lwc0RyYXcodHJ1ZSk7CiAKICAgICAgICAgTW9ja0ND
UXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+
IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CiAgICAg
ICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7
CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMp
OwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwog
ICAgIH0KIH0KQEAgLTEzMiwxMyArMTI4LDEyIEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3Qs
IGNoZWNrZXJib2FyZGluZykKICAgICBjb25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53
aWR0aCgpICogbnVtVGlsZXNYLCB0aWxlU2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7CiAKICAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwg
bGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwotICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJl
ZFF1YWRTdGF0ZSgwKTsKIAogICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwogICAgIHsKICAgICAg
ICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwogICAgICAgICBib29sIGhhZE1pc3NpbmdU
aWxlcyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hh
cmVkUXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICBsYXllci0+YXBw
ZW5kUXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VR
KHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCksIDR1KTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KGhhZE1pc3NpbmdUaWxlcyk7CiAKQEAgLTE1NCw3ICsxNDksNyBAQCBURVNUKENDVGlsZWRMYXll
ckltcGxUZXN0LCBjaGVja2VyYm9hcmRpbmcpCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3Vs
bGVyIHF1YWRDdWxsZXI7CiAgICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0g
ICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3Vs
bGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfVFJVRShoYWRNaXNzaW5nVGls
ZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5z
aXplKCk7ICsraSkKQEAgLTE2MiwxNyArMTU3LDE1IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRl
c3QsIGNoZWNrZXJib2FyZGluZykKICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBnZXRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6
ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4
ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50
UmVjdCkKK3N0YXRpYyB2b2lkIGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBDQ1NoYXJlZFF1
YWRTdGF0ZUxpc3QmIHNoYXJlZFN0YXRlcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6
ZSYgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVy
VGV4ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkKIHsKICAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5
ZXJTaXplLCBib3JkZXJUZXhlbE9wdGlvbik7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50
UmVjdCh2aXNpYmxlQ29udGVudFJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXpl
KTsKIAotICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkcyk7Ci0gICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVk
UXVhZFN0YXRlKDApOworICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkcywgc2hh
cmVkU3RhdGVzKTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVy
LT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3Np
bmdUaWxlcyk7Ci0gICAgcmV0dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRoZSBz
aGFyZWQgZGF0YSBtdXN0IGJlIG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlzdHMu
CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiB9
CiAKIC8vIFRlc3Qgd2l0aCBib3RoIGJvcmRlciB0ZXhlbHMgYW5kIHdpdGhvdXQuCkBAIC0xOTIs
OCArMTg1LDggQEAgc3RhdGljIHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJp
ZXMoQ0NMYXllclRpbGluZ0RhdGE6OkJvcmRlclRleGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJT
aXplKDEwMDAsIDEwMDApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1
YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0KEludFBv
aW50KCksIGxheWVyU2l6ZSkpOworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCBzaGFyZWRTdGF0
ZXM7CisgICAgZ2V0UXVhZHMocXVhZHMsIHNoYXJlZFN0YXRlcywgSW50U2l6ZSgxMDAsIDEwMCks
IGxheWVyU2l6ZSwgYm9yZGVycywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKICAg
ICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZHMsIEludFJlY3QoSW50UG9pbnQoKSwg
bGF5ZXJTaXplKSk7CiB9CiBXSVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdlVmlz
aWJsZVJlY3RPblRpbGVCb3VuZGFyaWVzKTsKQEAgLTIwOSw4ICsyMDIsOCBAQCBzdGF0aWMgdm9p
ZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKENDTGF5ZXJUaWxpbmdEYXRhOjpC
b3JkZXJUZXhlbE9wdAogCiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIEND
UXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0
ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDUwLCA1MCksIElu
dFNpemUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2li
bGVDb250ZW50UmVjdCk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsK
KyAgICBnZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCBJbnRTaXplKDUwLCA1MCksIEludFNp
emUoMjUwLCAyNTApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVD
b250ZW50UmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNp
YmxlQ29udGVudFJlY3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFn
ZVZpc2libGVSZWN0SW50ZXJzZWN0c1RpbGVzKTsKQEAgLTIyMiw4ICsyMTUsOCBAQCBzdGF0aWMg
dm9pZCBjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyhDQ0xheWVyVGlsaW5nRGF0
YTo6Qm9yZGVyVGV4ZWxPcAogICAgIEludFNpemUgbGF5ZXJTaXplKDIyMCwgMjEwKTsKICAgICBJ
bnRSZWN0IHZpc2libGVDb250ZW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwogICAgIEND
UXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0
ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwg
bGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVDb250
ZW50UmVjdCk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBn
ZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXpl
LCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7
CiAgICAgdmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlQ29udGVudFJl
Y3QpOwogfQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0
SW50ZXJzZWN0c0JvdW5kcyk7CkBAIC0yMzUsOCArMjI4LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJ
bXBsVGVzdCwgdGV4dHVyZUluZm9Gb3JMYXllck5vQm9yZGVycykKICAgICBJbnRTaXplIHRpbGVT
aXplKDUwLCA1MCk7CiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVh
ZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsK
LSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBD
Q0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5
ZXJTaXplKSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBn
ZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXpl
KSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRD
b250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CkBAIC0yNTYsOCArMjQ5LDggQEAgVEVTVChDQ1Rp
bGVkTGF5ZXJJbXBsVGVzdCwgdGlsZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKICAgICBJ
bnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTAp
OwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBz
aGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwg
bGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0
YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hhcmVkU3RhdGVzLCB0aWxlU2l6ZSwgbGF5ZXJT
aXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3
UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3RyaW5nIDw8IGk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDdmNmUwZjg1YWVhMjZj
NTM3NjIzYmI4OTdhODUwYTFiZjY1ZDdhMjAuLjU5YTAwNzNjZTE0ZGUwYjczNDZmMTY0ODM3MmQw
ZDZmMzc2YTEzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9j
a0NDUXVhZEN1bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0ND
UXVhZEN1bGxlci5oCkBAIC0zMiwxOSArMzIsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBNb2NrQ0NRdWFkQ3VsbGVyIDogcHVibGljIFdlYkNvcmU6OkNDUXVhZFNpbmsgewor
Y2xhc3MgTW9ja0NDUXVhZEN1bGxlciA6IHB1YmxpYyBDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAg
ICBNb2NrQ0NRdWFkQ3VsbGVyKCkKICAgICAgICAgOiBtX2FjdGl2ZVF1YWRMaXN0KG1fcXVhZExp
c3RTdG9yYWdlKQorICAgICAgICAsIG1fYWN0aXZlU2hhcmVkUXVhZFN0YXRlTGlzdChtX3NoYXJl
ZFF1YWRTdGF0ZVN0b3JhZ2UpCiAgICAgeyB9CiAKLSAgICBleHBsaWNpdCBNb2NrQ0NRdWFkQ3Vs
bGVyKENDUXVhZExpc3QmIGV4dGVybmFsUXVhZExpc3QpCisgICAgZXhwbGljaXQgTW9ja0NDUXVh
ZEN1bGxlcihDQ1F1YWRMaXN0JiBleHRlcm5hbFF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZUxp
c3QmIGV4dGVybmFsU2hhcmVkUXVhZFN0YXRlTGlzdCkKICAgICAgICAgOiBtX2FjdGl2ZVF1YWRM
aXN0KGV4dGVybmFsUXVhZExpc3QpCisgICAgICAgICwgbV9hY3RpdmVTaGFyZWRRdWFkU3RhdGVM
aXN0KGV4dGVybmFsU2hhcmVkUXVhZFN0YXRlTGlzdCkKICAgICB7IH0KIAotICAgIHZpcnR1YWwg
Ym9vbCBhcHBlbmQoV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQp
CisgICAgdmlydHVhbCBib29sIGFwcGVuZChXVEY6OlBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gbmV3
UXVhZCkgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIE93blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFk
PiBkcmF3UXVhZCA9IG5ld1F1YWQ7CisgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiBkcmF3UXVh
ZCA9IG5ld1F1YWQ7CiAgICAgICAgIGlmICghZHJhd1F1YWQtPnF1YWRSZWN0KCkuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBtX2FjdGl2ZVF1YWRMaXN0LmFwcGVuZChkcmF3UXVhZC5yZWxlYXNl
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MiwxMSArNTQsMjQgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgV2ViQ29yZTo6Q0NR
dWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVF1YWRMaXN0OyB9Owor
ICAgIHZpcnR1YWwgQ0NTaGFyZWRRdWFkU3RhdGUqIHVzZVNoYXJlZFF1YWRTdGF0ZShQYXNzT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBwYXNzU2hhcmVkUXVhZFN0YXRlKSBPVkVSUklERQorICAg
IHsKKyAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUocGFz
c1NoYXJlZFF1YWRTdGF0ZSk7CisgICAgICAgIHNoYXJlZFF1YWRTdGF0ZS0+aWQgPSBtX2FjdGl2
ZVNoYXJlZFF1YWRTdGF0ZUxpc3Quc2l6ZSgpOworCisgICAgICAgIENDU2hhcmVkUXVhZFN0YXRl
KiByYXdQdHIgPSBzaGFyZWRRdWFkU3RhdGUuZ2V0KCk7CisgICAgICAgIG1fYWN0aXZlU2hhcmVk
UXVhZFN0YXRlTGlzdC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisgICAgICAg
IHJldHVybiByYXdQdHI7CisgICAgfQorCisgICAgY29uc3QgQ0NRdWFkTGlzdCYgcXVhZExpc3Qo
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVF1YWRMaXN0OyB9OworICAgIGNvbnN0IENDU2hhcmVk
UXVhZFN0YXRlTGlzdCYgc2hhcmVkUXVhZFN0YXRlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0
aXZlU2hhcmVkUXVhZFN0YXRlTGlzdDsgfTsKIAogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpDQ1F1
YWRMaXN0JiBtX2FjdGl2ZVF1YWRMaXN0OwotICAgIFdlYkNvcmU6OkNDUXVhZExpc3QgbV9xdWFk
TGlzdFN0b3JhZ2U7CisgICAgQ0NRdWFkTGlzdCYgbV9hY3RpdmVRdWFkTGlzdDsKKyAgICBDQ1F1
YWRMaXN0IG1fcXVhZExpc3RTdG9yYWdlOworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYgbV9h
Y3RpdmVTaGFyZWRRdWFkU3RhdGVMaXN0OworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCBtX3No
YXJlZFF1YWRTdGF0ZVN0b3JhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160218</attachid>
            <date>2012-08-23 12:52:13 -0700</date>
            <delta_ts>2012-08-23 14:01:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94752-20120823155210.patch</filename>
            <type>text/plain</type>
            <size>68890</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRmMzAyYjA5MWQ1MTZm
YTAyMGRjYThmMjllYzI5YjE0OWEyYzcyYS4uYzc5ZTI3NmY0YzdhNGRiZTdhZDA2ODliNjVkNWNi
MWVkYTk2OGQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA4LTIzICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3Jl
YXRlIHNoYXJlZFF1YWRTdGF0ZSBhdCBzYW1lIHRpbWUgYXMgY3JlYXRpbmcgcXVhZHMgYW5kIGdp
dmUgdGhlbSB0byB0aGUgcXVhZFNpbmsKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk0NzUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fs
a2VyLgorCisgICAgICAgIFByZXZpb3VzbHksIENDUmVuZGVyUGFzcyB3b3VsZCBjcmVhdGUgYSBz
aGFyZWRRdWFkU3RhdGUgZm9yIGEgbGF5ZXIsCisgICAgICAgIGFuZCBwYXNzIGl0IGluIHRvIHRo
ZSBsYXllci4gVGhlbiB0aGUgbGF5ZXIgd291bGQgcG9pbnQgYWxsIGl0cyBxdWFkcworICAgICAg
ICBhdCB0aGUgc2hhcmVkUXVhZFN0YXRlLgorCisgICAgICAgIEFmdGVyIHRoaXMgY2hhbmdlLCB0
aGUgbGF5ZXIgY3JlYXRlcyBpdHMgb3duIHNoYXJlZFF1YWRTdGF0ZSwgZ2l2ZXMgaXQKKyAgICAg
ICAgdG8gdGhlIFJlbmRlclBhc3MgKHZpYSBDQ1F1YWRTaW5rKSwgYW5kIHBvaW50cyBpdHMgcXVh
ZHMgYXQgaXQuCisKKyAgICAgICAgVGhpcyBhcHByb2FjaCBhbGxvd3MgYSBsYXllciB0byBnZW5l
cmF0ZSBtb3JlIHRoYW4gb25lIHNoYXJlZFF1YWRTdGF0ZQorICAgICAgICB3aXRoIGRpZmZlcmVu
dCBxdWFkcyBwb2ludGluZyB0byBkaWZmZXJlbnQgc2hhcmVkIHN0YXRlcy4gQWxzbywgdGhpcwor
ICAgICAgICB3aWxsIGFsbG93IHRoZSBsYXllciByZXByZXNlbnRpbmcgYSBkZWxlZ2F0aW5nIHJl
bmRlcmVyICh2aWEgdWJlcmNvbXApCisgICAgICAgIHRvIGNvcHkgc2hhcmVkUXVhZFN0YXRlcyBm
cm9tIHRoZSBkZWxlZ2F0aW5nIHJlbmRlcmVyIGluIG9yZGVyIHRvCisgICAgICAgIG1lcmdlIGl0
cyBxdWFkcyBpbnRvIHRoZSBSZW5kZXJQYXNzIGZvciB0aGUgY3VycmVudCByZW5kZXJlci4KKwor
ICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3Vy
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5TGF5
ZXJJbXBsOjphcHBlbmRRdWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbC5oOgorICAgICAgICAoQ0NIZWFkc1VwRGlz
cGxheUxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NJT1N1cmZhY2VMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NJT1N1cmZhY2VM
YXllckltcGw6OmFwcGVuZFF1YWRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5oOgorICAgICAgICAoQ0NJT1N1cmZhY2VMYXll
ckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFk
U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ0xheWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
SW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRy
ZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NRdWFkQ3VsbGVyOjpDQ1F1YWRDdWxsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3Vs
bGVyOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NRdWFkQ3VsbGVyOjp1c2VTaGFyZWRR
dWFkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENDUXVhZEN1bGxlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NRdWFkU2luay5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ1F1YWRTaW5r
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc0ZvckxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JSZW5kZXJT
dXJmYWNlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJQYXNzOjphcHBlbmRRdWFk
c1RvRmlsbFNjcmVlbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDUmVuZGVyUGFz
cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6YXBwZW5kUXVhZHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oOgorICAgICAgICAoQ0NSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6CisgICAgICAg
IChDQ1Njcm9sbGJhckxheWVySW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaGFy
ZWRRdWFkU3RhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NoYXJlZFF1YWRTdGF0
ZTo6Q0NTaGFyZWRRdWFkU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmg6CisgICAgICAgIChDQ1NoYXJlZFF1YWRTdGF0ZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU29saWRDb2xvckxheWVySW1wbDo6YXBw
ZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckxheWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVMYXllckltcGwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChDQ1RleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAgICAgKENDVGls
ZWRMYXllckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6
YXBwZW5kUXVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VmlkZW9MYXllckltcGwuaDoKKyAgICAgICAgKENDVmlkZW9MYXllckltcGwpOgorCiAyMDEyLTA4
LTIyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNT
SU9OKHIxMjU1NzgpOiBmYXN0L3JlZ2V4L3VuaWNvZGVDYXNlSW5zZW5zaXRpdmUuaHRtbCBjcmFz
aCBvbiBMaW51eCBEZWJ1ZyBDaHJvbWl1bQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3
ODA0ZWNkOTdmMTQ5YmYwODM0OTAzMjMwZTc3YjAwMTcyOTQxMjJmLi4wYzE5NjA4NTQ1NDgwZDc1
YmI2NzcxMmM4OGUzY2FhZGQ4MWVjNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI5IEBACisyMDEyLTA4LTIzICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ3JlYXRlIHNoYXJlZFF1YWRTdGF0ZSBhdCBzYW1l
IHRpbWUgYXMgY3JlYXRpbmcgcXVhZHMgYW5kIGdpdmUgdGhlbSB0byB0aGUgcXVhZFNpbmsKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzUyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQWRyaWVubmUgV2Fsa2VyLgorCisgICAgICAgICogdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpFdmljdGlvblRlc3RMYXllckltcGw6OmFwcGVuZFF1
YWRzKToKKyAgICAgICAgKiB0ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ1NvbGlkQ29s
b3JMYXllckltcGxUZXN0LmNwcDoKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpURVNUKToK
KyAgICAgICAgKiB0ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChDQ0xh
eWVyVGVzdENvbW1vbjo6VEVTVCk6CisgICAgICAgIChDQ0xheWVyVGVzdENvbW1vbjo6Z2V0UXVh
ZHMpOgorICAgICAgICAoQ0NMYXllclRlc3RDb21tb246OmNvdmVyYWdlVmlzaWJsZVJlY3RPblRp
bGVCb3VuZGFyaWVzKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpjb3ZlcmFnZVZpc2li
bGVSZWN0SW50ZXJzZWN0c1RpbGVzKToKKyAgICAgICAgKENDTGF5ZXJUZXN0Q29tbW9uOjpjb3Zl
cmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk6CisgICAgICAgICogdGVzdHMvTW9ja0ND
UXVhZEN1bGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TW9ja0NDUXVhZEN1bGxlcjo6TW9ja0ND
UXVhZEN1bGxlcik6CisgICAgICAgIChNb2NrQ0NRdWFkQ3VsbGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vY2tDQ1F1YWRDdWxsZXI6OnF1YWRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tD
Q1F1YWRDdWxsZXI6OnNoYXJlZFF1YWRTdGF0ZUxpc3QpOgorCiAyMDEyLTA4LTIyICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LiAgUm9sbGVkIERFUFMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXll
ckltcGwuY3BwCmluZGV4IDVmZGQyY2Q2OWFkZWQ3MGJjMDBlNjA2MGNjZDA3ODI3NmQzZjZhMjku
LjQ0NTdiOThiYjYwOGVmYjU4M2FmYzFkOGVkZmZmZTdmYzZhYzQyY2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXlMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuY3BwCkBAIC05MSwxNiArOTEsMTgg
QEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsOjp3aWxsRHJhdyhDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiAgICAgICAgIG1faHVkVGV4dHVyZS0+YWxsb2NhdGUo
Q0NSZW5kZXJlcjo6SW1wbFBvb2wsIGJvdW5kcygpLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSwg
Q0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogfQogCi12b2lkIENDSGVhZHNV
cERpc3BsYXlMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25z
dCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NIZWFk
c1VwRGlzcGxheUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJv
b2wmKQogewogICAgIGlmICghbV9odWRUZXh0dXJlLT5pZCgpKQogICAgICAgICByZXR1cm47CiAK
KyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hh
cmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKKwogICAgIEludFJlY3QgcXVh
ZFJlY3QoSW50UG9pbnQoKSwgYm91bmRzKCkpOwogICAgIGJvb2wgcHJlbXVsdGlwbGllZEFscGhh
ID0gdHJ1ZTsKICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIDEsIDEpOwogICAgIGJvb2wgZmxp
cHBlZCA9IGZhbHNlOwotICAgIHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3Jl
YXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1faHVkVGV4dHVyZS0+aWQoKSwgcHJlbXVs
dGlwbGllZEFscGhhLCB1dlJlY3QsIGZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmQoQ0NU
ZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2h1ZFRl
eHR1cmUtPmlkKCksIHByZW11bHRpcGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CiB9CiAK
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheUxheWVySW1wbDo6dXBkYXRlSHVkVGV4dHVyZShDQ1Jlc291
cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5TGF5ZXJJbXBsLmgKaW5kZXggMWVlMjRjNDdlOGFlNTJlZGU3OTYxZjA0NTRjNTE4
NmVhNTMyY2EwNy4uZjdkNDc3ZmZmOThkZTA3OTYwZmFiMzA3ZjI1MTBjNzBhODA0M2Y4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NI
ZWFkc1VwRGlzcGxheUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXlMYXllckltcGwuaApAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250QXRsYXMoUGFzc093blB0cjxDQ0ZvbnRB
dGxhcz4pOwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciop
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKSBPVkVSUklERTsKICAgICB2b2lkIHVwZGF0ZUh1ZFRleHR1cmUoQ0NSZXNvdXJjZVBy
b3ZpZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikg
T1ZFUlJJREU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcAppbmRl
eCAyODNiN2M5OWEwZWRjMmM5N2ZlNTAxOWM3NzYwNzVkZDllZWEzNTcxLi4zNDNlZGM2OTY2N2Q5
ZjNjODhjMTQ5YTc4N2VjOTYwZDViNzUyNGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3VyZmFjZUxheWVySW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuY3BwCkBAIC05NiwxMCArOTYsMTMgQEAgdm9pZCBDQ0lPU3VyZmFjZUxheWVy
SW1wbDo6d2lsbERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogICAg
IH0KIH0KIAotdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2lu
ayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJv
b2wmKQordm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYg
cXVhZFNpbmssIGJvb2wmKQogeworICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkp
OworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsK
KwogICAgIEludFJlY3QgcXVhZFJlY3QoSW50UG9pbnQoKSwgY29udGVudEJvdW5kcygpKTsKLSAg
ICBxdWFkTGlzdC5hcHBlbmQoQ0NJT1N1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgcXVhZFJlY3QsIG1faW9TdXJmYWNlU2l6ZSwgbV9pb1N1cmZhY2VUZXh0dXJlSWQsIEND
SU9TdXJmYWNlRHJhd1F1YWQ6OkZsaXBwZWQpKTsKKyAgICBxdWFkU2luay5hcHBlbmQoQ0NJT1N1
cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIG1faW9TdXJm
YWNlU2l6ZSwgbV9pb1N1cmZhY2VUZXh0dXJlSWQsIENDSU9TdXJmYWNlRHJhd1F1YWQ6OkZsaXBw
ZWQpKTsKIH0KIAogdm9pZCBDQ0lPU3VyZmFjZUxheWVySW1wbDo6ZHVtcExheWVyUHJvcGVydGll
cyhUZXh0U3RyZWFtJiB0cywgaW50IGluZGVudCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJmYWNlTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lPU3Vy
ZmFjZUxheWVySW1wbC5oCmluZGV4IDAxOWI4ZmUyZGFhNjY1ZTc2Zjg3ZjhhYzBjYmYyNWVmODhk
NTljMjUuLjNhNTViZjJlMmU2ZjJhZjMzMDRlMDAwNzVhZmQzODM3MjJlNDc5YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSU9TdXJm
YWNlTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQs
IGNvbnN0IEludFNpemUmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRT
aW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYg
aGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhD
Q1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNv
bnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA4NDQ0ZDFkODg2
MGVjYmJjMjBkZjM3OTFlOTdlNDgzYWNjYjJhNWQ1Li5jNjE4ZmViMWQxNGEyNmIzMTFiZTY1YWNj
MGY2NmVmMTdmNDI1MDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xNDQsOSArMTQ0
LDkgQEAgYm9vbCBDQ0xheWVySW1wbDo6ZGVzY2VuZGFudERyYXdzQ29udGVudCgpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1QYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ0xheWVySW1w
bDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3QKK1Bhc3NPd25QdHI8Q0NTaGFy
ZWRRdWFkU3RhdGU+IENDTGF5ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSBjb25zdAog
ewotICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBtX2RyYXdUcmFuc2Zv
cm0sIG1fdmlzaWJsZUNvbnRlbnRSZWN0LCBtX2RyYXdhYmxlQ29udGVudFJlY3QsIG1fZHJhd09w
YWNpdHksIG1fb3BhcXVlKTsKKyAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZSht
X2RyYXdUcmFuc2Zvcm0sIG1fdmlzaWJsZUNvbnRlbnRSZWN0LCBtX2RyYXdhYmxlQ29udGVudFJl
Y3QsIG1fZHJhd09wYWNpdHksIG1fb3BhcXVlKTsKIH0KIAogdm9pZCBDQ0xheWVySW1wbDo6d2ls
bERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGU5NTFj
NWQ3YzQ2NTIzZGIzYWRhYWY2YTdlNTRiYWYxMjlmODNiOWYuLmUxMmIxYjFhN2MxZTk3ZDAxNDM5
OGMzMzIzNzljMzg5Yzc0YWUxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtODksMTUgKzg5
LDE0IEBAIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRyZWVIb3N0SW1w
bCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUcmVlSG9zdEltcGw7IH0KICAgICB2b2lkIHNldExh
eWVyVHJlZUhvc3RJbXBsKENDTGF5ZXJUcmVlSG9zdEltcGwqIGhvc3RJbXBsKSB7IG1fbGF5ZXJU
cmVlSG9zdEltcGwgPSBob3N0SW1wbDsgfQogCi0gICAgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRT
dGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3Q7CisgICAgUGFzc093blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkgY29uc3Q7CiAgICAg
Ly8gd2lsbERyYXcgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFwcGVuZFF1YWRzLiBJZiB3aWxsRHJh
dyBpcyBjYWxsZWQsCiAgICAgLy8gZGlkRHJhdyBpcyBndWFyYW50ZWVkIHRvIGJlIGNhbGxlZCBi
ZWZvcmUgYW5vdGhlciB3aWxsRHJhdyBvciBiZWZvcmUKICAgICAvLyB0aGUgbGF5ZXIgaXMgZGVz
dHJveWVkLiBUbyBlbmZvcmNlIHRoaXMsIGFueSBjbGFzcyB0aGF0IG92ZXJyaWRlcwogICAgIC8v
IHdpbGxEcmF3L2RpZERyYXcgbXVzdCBjYWxsIHRoZSBiYXNlIGNsYXNzIHZlcnNpb24uCiAgICAg
dmlydHVhbCB2b2lkIHdpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciopOwotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBi
b29sJiBoYWRNaXNzaW5nVGlsZXMpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKTsKLSAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVy
UXVhZChDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGNvbnRlbnRzUmVzb3VyY2VJ
ZCgpIGNvbnN0OwogCkBAIC0yNzUsNiArMjc0LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAg
IGV4cGxpY2l0IENDTGF5ZXJJbXBsKGludCk7CiAKKyAgICB2b2lkIGFwcGVuZERlYnVnQm9yZGVy
UXVhZChDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqKSBjb25zdDsKKwogICAg
IHZpcnR1YWwgdm9pZCBkdW1wTGF5ZXJQcm9wZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50
KSBjb25zdDsKICAgICBzdGF0aWMgdm9pZCB3cml0ZUluZGVudChUZXh0U3RyZWFtJiwgaW50IGlu
ZGVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggNDZl
ZGNjMGE4MDE0NGUyY2M3NzQ3YWExOTY2ZWU3NDljNThhOTFkNC4uNTk4M2FkMzI3ZGExMGY1M2Vl
MDUxYjRkNjE3MjZmOWM2ZDVmZDU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKQEAgLTMzOCw2ICszMzgsMTMgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpj
YWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICAgICAgb2NjbHVzaW9u
VHJhY2tlci5sZWF2ZUxheWVyKGl0KTsKICAgICB9CiAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBmcmFtZS5yZW5kZXJQYXNzZXNbaV0t
PnF1YWRMaXN0KCkuc2l6ZSgpOyArK2opCisgICAgICAgICAgICBBU1NFUlQoZnJhbWUucmVuZGVy
UGFzc2VzW2ldLT5xdWFkTGlzdCgpW2pdLT5zaGFyZWRRdWFkU3RhdGVJZCgpID49IDApOworICAg
IH0KKyNlbmRpZgorCiAgICAgaWYgKCFtX2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZCkgewogICAg
ICAgICBmcmFtZS5yZW5kZXJQYXNzZXMubGFzdCgpLT5zZXRIYXNUcmFuc3BhcmVudEJhY2tncm91
bmQoZmFsc2UpOwogICAgICAgICBmcmFtZS5yZW5kZXJQYXNzZXMubGFzdCgpLT5hcHBlbmRRdWFk
c1RvRmlsbFNjcmVlbihtX3Jvb3RMYXllckltcGwuZ2V0KCksIG1fYmFja2dyb3VuZENvbG9yLCBv
Y2NsdXNpb25UcmFja2VyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCmluZGV4IGYyZTllOWZm
ZWZiNmFmNTY1ZTcxZDg0YTY1ODk0MzI3OWRkMzRiNzQuLjc4YTBiZDllYzAzNTk4YzY0Nzk0OTYw
YTk4ODgxNGE4NWI2ZDNiZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcApAQCAtNDgsOCAr
NDgsMTAgQEAgc3RhdGljIGNvbnN0IGludCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCA9IDE2MDsK
IHN0YXRpYyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiA9IDEwMDsKIHN0YXRp
YyBjb25zdCBpbnQgZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlID0gMDsKIAotQ0NRdWFkQ3VsbGVy
OjpDQ1F1YWRDdWxsZXIoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIENDTGF5ZXJJbXBsKiBsYXllciwg
Y29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCogb2NjbHVzaW9uVHJhY2tlciwgYm9vbCBzaG93
Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzLCBib29sIGZvclN1cmZhY2UpCitDQ1F1YWRDdWxs
ZXI6OkNDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGVM
aXN0JiBzaGFyZWRRdWFkU3RhdGVMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDT2Nj
bHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wgc2hvd0N1bGxpbmdXaXRo
RGVidWdCb3JkZXJRdWFkcywgYm9vbCBmb3JTdXJmYWNlKQogICAgIDogbV9xdWFkTGlzdChxdWFk
TGlzdCkKKyAgICAsIG1fc2hhcmVkUXVhZFN0YXRlTGlzdChzaGFyZWRRdWFkU3RhdGVMaXN0KQor
ICAgICwgbV9jdXJyZW50U2hhcmVkUXVhZFN0YXRlKDApCiAgICAgLCBtX2xheWVyKGxheWVyKQog
ICAgICwgbV9vY2NsdXNpb25UcmFja2VyKG9jY2x1c2lvblRyYWNrZXIpCiAgICAgLCBtX3Nob3dD
dWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMoc2hvd0N1bGxpbmdXaXRoRGVidWdCb3JkZXJRdWFk
cykKQEAgLTU4LDYgKzYwLDE3IEBAIENDUXVhZEN1bGxlcjo6Q0NRdWFkQ3VsbGVyKENDUXVhZExp
c3QmIHF1YWRMaXN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IENDT2NjCiB7CiB9CiAKK0ND
U2hhcmVkUXVhZFN0YXRlKiBDQ1F1YWRDdWxsZXI6OnVzZVNoYXJlZFF1YWRTdGF0ZShQYXNzT3du
UHRyPENDU2hhcmVkUXVhZFN0YXRlPiBwYXNzU2hhcmVkUXVhZFN0YXRlKQoreworICAgIE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlKHBhc3NTaGFyZWRRdWFkU3RhdGUp
OworICAgIHNoYXJlZFF1YWRTdGF0ZS0+aWQgPSBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Quc2l6ZSgp
OworCisgICAgLy8gRklYTUU6IElmIGFsbCBxdWFkcyBhcmUgY3VsbGVkIGZvciB0aGUgc2hhcmVk
UXVhZFN0YXRlLCB3ZSBjYW4gZHJvcCBpdCBmcm9tIHRoZSBsaXN0LgorICAgIG1fY3VycmVudFNo
YXJlZFF1YWRTdGF0ZSA9IHNoYXJlZFF1YWRTdGF0ZS5nZXQoKTsKKyAgICBtX3NoYXJlZFF1YWRT
dGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworICAgIHJldHVybiBt
X2N1cnJlbnRTaGFyZWRRdWFkU3RhdGU7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBhcHBlbmRR
dWFkSW50ZXJuYWwoUGFzc093blB0cjxDQ0RyYXdRdWFkPiBwYXNzRHJhd1F1YWQsIGNvbnN0IElu
dFJlY3QmIGN1bGxlZFJlY3QsIENDUXVhZExpc3QmIHF1YWRMaXN0LCBjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXJJbXBsJiBvY2NsdXNpb25UcmFja2VyLCBib29sIGNyZWF0ZURlYnVnQm9yZGVyUXVh
ZHMpCiB7CiAgICAgT3duUHRyPENDRHJhd1F1YWQ+IGRyYXdRdWFkKHBhc3NEcmF3UXVhZCk7CkBA
IC04Miw2ICs5NSwxMSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYXBwZW5kUXVhZEludGVybmFsKFBh
c3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkLCBjb25zdAogCiBib29sIENDUXVhZEN1
bGxlcjo6YXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKQogeworICAg
IEFTU0VSVChwYXNzRHJhd1F1YWQtPnNoYXJlZFF1YWRTdGF0ZSgpID09IG1fY3VycmVudFNoYXJl
ZFF1YWRTdGF0ZSk7CisgICAgQVNTRVJUKHBhc3NEcmF3UXVhZC0+c2hhcmVkUXVhZFN0YXRlSWQo
KSA9PSBtX2N1cnJlbnRTaGFyZWRRdWFkU3RhdGUtPmlkKTsKKyAgICBBU1NFUlQoIW1fc2hhcmVk
UXVhZFN0YXRlTGlzdC5pc0VtcHR5KCkpOworICAgIEFTU0VSVChtX3NoYXJlZFF1YWRTdGF0ZUxp
c3QubGFzdCgpLmdldCgpID09IG1fY3VycmVudFNoYXJlZFF1YWRTdGF0ZSk7CisKICAgICBJbnRS
ZWN0IGN1bGxlZFJlY3Q7CiAgICAgYm9vbCBoYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdldFN1
cmZhY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZEN1bGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKaW5kZXggZTY3YjQ0NjhkNjhiMTI4N2Y0YjI5
MDk1YTRiNjU2Nzg0MzQ1OTFlMS4uN2ZkOGVmYmU0ODY4YmUxMGNiZmUzMThkYzc1OTJmMjQzZDU3
ODJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NRdWFkQ3VsbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmgKQEAgLTI3LDI3ICsyNywyOSBAQAogI2RlZmlu
ZSBDQ1F1YWRDdWxsZXJfaAogCiAjaW5jbHVkZSAiQ0NRdWFkU2luay5oIgorI2luY2x1ZGUgIkND
UmVuZGVyUGFzcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVySW1wbDsK
IGNsYXNzIENDUmVuZGVyU3VyZmFjZTsKLWNsYXNzIENDUXVhZExpc3Q7CiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFN1cmZhY2VUeXBlPgogY2xhc3MgQ0NPY2NsdXNpb25U
cmFja2VyQmFzZTsKIAogY2xhc3MgQ0NRdWFkQ3VsbGVyIDogcHVibGljIENDUXVhZFNpbmsgewog
cHVibGljOgotICAgIENDUXVhZEN1bGxlcihDQ1F1YWRMaXN0JiwgQ0NMYXllckltcGwqLCBjb25z
dCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPENDTGF5ZXJJbXBsLCBDQ1JlbmRlclN1cmZhY2U+Kiwg
Ym9vbCBzaG93Q3VsbGluZ1dpdGhEZWJ1Z0JvcmRlclF1YWRzLCBib29sIGZvclN1cmZhY2UpOwot
CisgICAgQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmLCBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3QmLCBD
Q0xheWVySW1wbCosIGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIEND
UmVuZGVyU3VyZmFjZT4qLCBib29sIHNob3dDdWxsaW5nV2l0aERlYnVnQm9yZGVyUXVhZHMsIGJv
b2wgZm9yU3VyZmFjZSk7CiAgICAgdmlydHVhbCB+Q0NRdWFkQ3VsbGVyKCkgeyB9CiAKLSAgICAv
LyBSZXR1cm5zIHRydWUgaWYgdGhlIHF1YWQgaXMgYWRkZWQgdG8gdGhlIGxpc3QsIGFuZCBmYWxz
ZSBpZiB0aGUgcXVhZCBpcyBlbnRpcmVseSBjdWxsZWQuCi0gICAgdmlydHVhbCBib29sIGFwcGVu
ZChQYXNzT3duUHRyPENDRHJhd1F1YWQ+IHBhc3NEcmF3UXVhZCkgT1ZFUlJJREU7CisgICAgLy8g
Q0NRdWFkU2luayBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIENDU2hhcmVkUXVhZFN0YXRl
KiB1c2VTaGFyZWRRdWFkU3RhdGUoUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4pIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoUGFzc093blB0cjxDQ0RyYXdRdWFkPikgT1ZF
UlJJREU7CiAKICAgICBib29sIGhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgp
IHsgcmV0dXJuIG1faGFzT2NjbHVzaW9uRnJvbU91dHNpZGVUYXJnZXRTdXJmYWNlOyB9CiAKIHBy
aXZhdGU6CiAgICAgQ0NRdWFkTGlzdCYgbV9xdWFkTGlzdDsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0
ZUxpc3QmIG1fc2hhcmVkUXVhZFN0YXRlTGlzdDsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogbV9j
dXJyZW50U2hhcmVkUXVhZFN0YXRlOwogICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOwogICAgIGNv
bnN0IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3VyZmFjZT4q
IG1fb2NjbHVzaW9uVHJhY2tlcjsKICAgICBib29sIG1fc2hvd0N1bGxpbmdXaXRoRGVidWdCb3Jk
ZXJRdWFkczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUXVhZFNpbmsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUXVhZFNpbmsuaAppbmRleCA0YWU2ZjIzOGE0NWZjYTBmMTY5OWNhYmFj
MjNmYTQzMDBlOTlhYTM3Li4wOWJkZDBhZTI5ZDI0ZDVmNDFmMDYwODIzNTllNDg1NTVmMzNiMTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1F1YWRTaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NRdWFkU2luay5oCkBAIC0zMiwxMCArMzIsMTYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDQ0RyYXdRdWFkOwogCitzdHJ1Y3QgQ0NTaGFyZWRRdWFkU3RhdGU7CisK
IGNsYXNzIENDUXVhZFNpbmsgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNDUXVhZFNpbmsoKSB7
IH0KIAorICAgIC8vIENhbGwgdGhpcyB0byBhZGQgYSBTaGFyZWRRdWFkU3RhdGUgYmVmb3JlIGFw
cGVuZGluZyBxdWFkcyB0aGF0IHJlZmVyIHRvIGl0LiBSZXR1cm5zIGEgcG9pbnRlcgorICAgIC8v
IHRvIHRoZSBnaXZlbiBTaGFyZWRRdWFkU3RhdGUgZm9yIGNvbnZlbmllbmNlLCB0aGF0IGNhbiBi
ZSBzZXQgb24gdGhlIHF1YWRzIHRvIGFwcGVuZC4KKyAgICB2aXJ0dWFsIENDU2hhcmVkUXVhZFN0
YXRlKiB1c2VTaGFyZWRRdWFkU3RhdGUoUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4pID0g
MDsKKwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcXVhZCBpcyBhZGRlZCB0byB0aGUgbGlz
dCwgYW5kIGZhbHNlIGlmIHRoZSBxdWFkIGlzIGVudGlyZWx5IGN1bGxlZC4KICAgICB2aXJ0dWFs
IGJvb2wgYXBwZW5kKFBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gcGFzc0RyYXdRdWFkKSA9IDA7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMzEzM2UyM2Q1Yjc2ZThiMGRlNDQxYThj
NjljYzQyNWM0YjM3MWQwMC4uODEwYTFjNWM4MTlkNzY5YTFiZWZjYmY4MjZiYjQ5OWYyMmVjZDE2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC01Nyw0MCArNTcsMjYgQEAgQ0NSZW5k
ZXJQYXNzOjpDQ1JlbmRlclBhc3MoQ0NSZW5kZXJTdXJmYWNlKiB0YXJnZXRTdXJmYWNlLCBpbnQg
aWQpCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNGb3JMYXllcihDQ0xheWVySW1wbCog
bGF5ZXIsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1c2lvblRyYWNrZXIsIGJvb2wmIGhh
ZE1pc3NpbmdUaWxlcykKIHsKICAgICBjb25zdCBib29sIGZvclN1cmZhY2UgPSBmYWxzZTsKLSAg
ICBDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBsYXllciwgb2NjbHVzaW9uVHJh
Y2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNlKTsKKyAgICBDQ1F1YWRD
dWxsZXIgcXVhZEN1bGxlcihtX3F1YWRMaXN0LCBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QsIGxheWVy
LCBvY2NsdXNpb25UcmFja2VyLCBsYXllci0+aGFzRGVidWdCb3JkZXJzKCksIGZvclN1cmZhY2Up
OwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXll
ci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5zaXplKCkpOwot
ICAgIGxheWVyLT5hcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0
YXRlLmdldCgpKTsKLSAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVh
ZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOwotICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlz
dC5hcHBlbmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisgICAgbGF5ZXItPmFwcGVuZFF1
YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICBtX2hhc09jY2x1c2lvbkZy
b21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1c2lvbkZyb21PdXRz
aWRlVGFyZ2V0U3VyZmFjZSgpOwogfQogCiB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNG
b3JSZW5kZXJTdXJmYWNlTGF5ZXIoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBDQ1JlbmRlclBh
c3MqIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIENDT2NjbHVzaW9uVHJhY2tlckltcGwqIG9jY2x1
c2lvblRyYWNrZXIpCiB7Ci0gICAgLy8gRklYTUU6IHJlbmRlciBzdXJmYWNlIGxheWVycyBzaG91
bGQgYmUgYSBDQ0xheWVySW1wbC1kZXJpdmVkIGNsYXNzIGFuZAotICAgIC8vIG5vdCBiZSBoYW5k
bGVkIHNwZWNpYWxseSBoZXJlLgogICAgIGNvbnN0IGJvb2wgZm9yU3VyZmFjZSA9IHRydWU7Ci0g
ICAgQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbGF5ZXIsIG9jY2x1c2lvblRy
YWNrZXIsIGxheWVyLT5oYXNEZWJ1Z0JvcmRlcnMoKSwgZm9yU3VyZmFjZSk7CisgICAgQ0NRdWFk
Q3VsbGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LCBsYXll
ciwgb2NjbHVzaW9uVHJhY2tlciwgbGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JTdXJmYWNl
KTsKIAotICAgIENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSA9IGxheWVyLT5yZW5kZXJTdXJmYWNl
KCk7Ci0KLSAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IHN1
cmZhY2UtPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShtX3NoYXJlZFF1YWRTdGF0ZUxpc3Quc2l6ZSgp
KTsKICAgICBib29sIGlzUmVwbGljYSA9IGZhbHNlOwotICAgIHN1cmZhY2UtPmFwcGVuZFF1YWRz
KHF1YWRDdWxsZXIsIHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgaXNSZXBsaWNhLCBjb250cmlidXRp
bmdSZW5kZXJQYXNzLT5pZCgpKTsKLSAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNo
YXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwotCi0gICAgbV9oYXNPY2NsdXNpb25Gcm9tT3V0c2lk
ZVRhcmdldFN1cmZhY2UgfD0gcXVhZEN1bGxlci5oYXNPY2NsdXNpb25Gcm9tT3V0c2lkZVRhcmdl
dFN1cmZhY2UoKTsKLQotICAgIGlmICghbGF5ZXItPmhhc1JlcGxpY2EoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIs
IGlzUmVwbGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7CiAKICAgICAvLyBBZGQg
cmVwbGljYSBhZnRlciB0aGUgc3VyZmFjZSBzbyB0aGF0IGl0IGFwcGVhcnMgYmVsb3cgdGhlIHN1
cmZhY2UuCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiByZXBsaWNhU2hhcmVkUXVhZFN0
YXRlID0gc3VyZmFjZS0+Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZShtX3NoYXJlZFF1YWRT
dGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBpc1JlcGxpY2EgPSB0cnVlOwotICAgIHN1cmZhY2UtPmFw
cGVuZFF1YWRzKHF1YWRDdWxsZXIsIHJlcGxpY2FTaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGlzUmVw
bGljYSwgY29udHJpYnV0aW5nUmVuZGVyUGFzcy0+aWQoKSk7Ci0gICAgbV9zaGFyZWRRdWFkU3Rh
dGVMaXN0LmFwcGVuZChyZXBsaWNhU2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisgICAgaWYg
KGxheWVyLT5oYXNSZXBsaWNhKCkpIHsKKyAgICAgICAgaXNSZXBsaWNhID0gdHJ1ZTsKKyAgICAg
ICAgbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgaXNSZXBs
aWNhLCBjb250cmlidXRpbmdSZW5kZXJQYXNzLT5pZCgpKTsKKyAgICB9CiAKICAgICBtX2hhc09j
Y2x1c2lvbkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSB8PSBxdWFkQ3VsbGVyLmhhc09jY2x1c2lv
bkZyb21PdXRzaWRlVGFyZ2V0U3VyZmFjZSgpOwogfQpAQCAtMTA0LDIyICs5MCwyNSBAQCB2b2lk
IENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RM
YXllciwgU2tDb2xvciBzY3JlZQogICAgIGlmIChmaWxsUmVnaW9uLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgYm9vbCBmb3JTdXJmYWNlID0gZmFsc2U7CisgICAgQ0NRdWFkQ3Vs
bGVyIHF1YWRDdWxsZXIobV9xdWFkTGlzdCwgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LCByb290TGF5
ZXIsICZvY2NsdXNpb25UcmFja2VyLCByb290TGF5ZXItPmhhc0RlYnVnQm9yZGVycygpLCBmb3JT
dXJmYWNlKTsKKwogICAgIC8vIE1hbnVhbGx5IGNyZWF0ZSB0aGUgcXVhZCBzdGF0ZSBmb3IgdGhl
IGd1dHRlciBxdWFkcywgYXMgdGhlIHJvb3QgbGF5ZXIKICAgICAvLyBkb2Vzbid0IGhhdmUgYW55
IGJvdW5kcyBhbmQgc28gY2FuJ3QgZ2VuZXJhdGUgdGhpcyBpdHNlbGYuCiAgICAgLy8gRklYTUU6
IE1ha2UgdGhlIGd1dHRlciBxdWFkcyBnZW5lcmF0ZWQgYnkgdGhlIHNvbGlkIGNvbG9yIGxheWVy
IChtYWtlIGl0IHNtYXJ0ZXIgYWJvdXQgZ2VuZXJhdGluZyBxdWFkcyB0byBmaWxsIHVub2NjbHVk
ZWQgYXJlYXMpLgogICAgIEludFJlY3Qgcm9vdFRhcmdldFJlY3QgPSByb290TGF5ZXItPnJlbmRl
clN1cmZhY2UoKS0+Y29udGVudFJlY3QoKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gMTsKICAgICBi
b29sIG9wYXF1ZSA9IHRydWU7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRR
dWFkU3RhdGUgPSBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKDAsIHJvb3RMYXllci0+ZHJhd1Ry
YW5zZm9ybSgpLCByb290VGFyZ2V0UmVjdCwgcm9vdFRhcmdldFJlY3QsIG9wYWNpdHksIG9wYXF1
ZSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9IHF1YWRDdWxsZXIu
dXNlU2hhcmVkUXVhZFN0YXRlKENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUocm9vdExheWVyLT5k
cmF3VHJhbnNmb3JtKCksIHJvb3RUYXJnZXRSZWN0LCByb290VGFyZ2V0UmVjdCwgb3BhY2l0eSwg
b3BhcXVlKSk7CiAgICAgQVNTRVJUKHJvb3RMYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5p
c0ludmVydGlibGUoKSk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtVG9M
YXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKTsK
ICAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJlZ2lvbi5yZWN0cygpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IC8vIFRoZSByb290IGxheWVyIHRyYW5zZm9ybSBpcyBjb21wb3NlZCBvZiB0cmFuc2xhdGlvbnMg
YW5kIHNjYWxlcyBvbmx5LCBubyBwZXJzcGVjdGl2ZSwgc28gbWFwcGluZyBpcyBzdWZmaWNpZW50
LgogICAgICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0
KHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSwgZmlsbFJlY3RzW2ldKTsKLSAgICAgICAgbV9xdWFkTGlz
dC5hcHBlbmQoQ0NTb2xpZENvbG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIGxheWVyUmVjdCwgc2NyZWVuQmFja2dyb3VuZENvbG9yKSk7CisgICAgICAgIC8vIFNraXAg
dGhlIHF1YWQgY3VsbGVyIGFuZCBqdXN0IGFwcGVuZCB0aGUgcXVhZHMgZGlyZWN0bHkgdG8gYXZv
aWQgb2NjbHVzaW9uIGNoZWNrcy4KKyAgICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NTb2xpZENv
bG9yRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGxheWVyUmVjdCwgc2NyZWVuQmFj
a2dyb3VuZENvbG9yKSk7CiAgICAgfQotICAgIG1fc2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBlbmQo
c2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgK
aW5kZXggNjdlY2I0MzA2YTBmNjc0YzZhYzc1MmRlM2YxYTY0MDYxNWFlMGI4Mi4uOTMwYzhhN2M0
MzFhOWNhMmMzM2Q3ZjMyMGQyM2YxMjljZTFkZWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmgK
QEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIGlubGluZSBjb25zdEJhY2tUb0Zyb250SXRl
cmF0b3IgYmFja1RvRnJvbnRFbmQoKSBjb25zdCB7IHJldHVybiByZW5kKCk7IH0KIH07CiAKK3R5
cGVkZWYgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBDQ1NoYXJlZFF1YWRTdGF0
ZUxpc3Q7CisKIGNsYXNzIENDUmVuZGVyUGFzcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
Q0NSZW5kZXJQYXNzKTsKIHB1YmxpYzoKQEAgLTkyLDEwICs5NCwxMCBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBpbnQgbV9pZDsKICAgICBDQ1F1YWRMaXN0IG1fcXVhZExpc3Q7CisgICAgQ0NTaGFyZWRR
dWFkU3RhdGVMaXN0IG1fc2hhcmVkUXVhZFN0YXRlTGlzdDsKICAgICBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtVG9Sb290VGFyZ2V0OwogICAgIEludFJlY3QgbV9v
dXRwdXRSZWN0OwogICAgIEZsb2F0UmVjdCBtX2RhbWFnZVJlY3Q7Ci0gICAgVmVjdG9yPE93blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gPiBtX3NoYXJlZFF1YWRTdGF0ZUxpc3Q7CiAgICAgYm9vbCBt
X2hhc1RyYW5zcGFyZW50QmFja2dyb3VuZDsKICAgICBib29sIG1faGFzT2NjbHVzaW9uRnJvbU91
dHNpZGVUYXJnZXRTdXJmYWNlOwogICAgIFdlYktpdDo6V2ViRmlsdGVyT3BlcmF0aW9ucyBtX2Zp
bHRlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCAxMWVkYmZhODhiNDAw
NmYyODcxN2VlZWEwNmFjMmJkOWJmNWZmNTk1Li4wMGZjYmRkM2E4NzE4MDk0ZWIxYjM1NjUzNWIw
Yjg5OTIyMzc0ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTE4MSwz
MCArMTgxLDIxIEBAIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBjb21wdXRlQ2xpcHBlZFJlY3RJblRh
cmdldChjb25zdCBDQ0xheWVySW1wbCogb3duaW5nTGF5ZXIpCiAgICAgcmV0dXJuIGNsaXBwZWRS
ZWN0SW5UYXJnZXQ7CiB9CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IENDUmVuZGVy
U3VyZmFjZTo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3QKK3ZvaWQgQ0NSZW5k
ZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCBmb3JSZXBs
aWNhLCBpbnQgcmVuZGVyUGFzc0lkKQogewotICAgIEludFJlY3QgY2xpcHBlZFJlY3RJblRhcmdl
dCA9IGNvbXB1dGVDbGlwcGVkUmVjdEluVGFyZ2V0KG1fb3duaW5nTGF5ZXIpOwotICAgIGJvb2wg
aXNPcGFxdWUgPSBmYWxzZTsKLSAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShp
ZCwgbV9kcmF3VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBjbGlwcGVkUmVjdEluVGFyZ2V0LCBt
X2RyYXdPcGFjaXR5LCBpc09wYXF1ZSk7Ci19CisgICAgQVNTRVJUKCFmb3JSZXBsaWNhIHx8IG1f
b3duaW5nTGF5ZXItPmhhc1JlcGxpY2EoKSk7CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IENDUmVuZGVyU3VyZmFjZTo6Y3JlYXRlUmVwbGljYVNoYXJlZFF1YWRTdGF0ZShpbnQgaWQp
IGNvbnN0Ci17CiAgICAgSW50UmVjdCBjbGlwcGVkUmVjdEluVGFyZ2V0ID0gY29tcHV0ZUNsaXBw
ZWRSZWN0SW5UYXJnZXQobV9vd25pbmdMYXllcik7CiAgICAgYm9vbCBpc09wYXF1ZSA9IGZhbHNl
OwotICAgIHJldHVybiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGlkLCBtX3JlcGxpY2FEcmF3
VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0LCBjbGlwcGVkUmVjdEluVGFyZ2V0LCBtX2RyYXdPcGFj
aXR5LCBpc09wYXF1ZSk7Ci19Ci0KLXZvaWQgQ0NSZW5kZXJTdXJmYWNlOjphcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiBxdWFkTGlzdCwgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwg
Ym9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKQotewotICAgIEFTU0VSVCghZm9yUmVw
bGljYSB8fCBtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkpOworICAgIGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtID0gZm9yUmVwbGljYSA/IG1fcmVwbGljYURy
YXdUcmFuc2Zvcm0gOiBtX2RyYXdUcmFuc2Zvcm07CisgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNo
YXJlZFF1YWRTdGF0ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShDQ1NoYXJlZFF1YWRT
dGF0ZTo6Y3JlYXRlKGRyYXdUcmFuc2Zvcm0sIG1fY29udGVudFJlY3QsIGNsaXBwZWRSZWN0SW5U
YXJnZXQsIG1fZHJhd09wYWNpdHksIGlzT3BhcXVlKSk7CiAKICAgICBpZiAobV9vd25pbmdMYXll
ci0+aGFzRGVidWdCb3JkZXJzKCkpIHsKICAgICAgICAgaW50IHJlZCA9IGZvclJlcGxpY2EgPyBk
ZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvclJlZCA6IGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yUmVkOwog
ICAgICAgICBpbnQgZ3JlZW4gPSBmb3JSZXBsaWNhID8gIGRlYnVnUmVwbGljYUJvcmRlckNvbG9y
R3JlZW4gOiBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckdyZWVuOwogICAgICAgICBpbnQgYmx1ZSA9
IGZvclJlcGxpY2EgPyBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJsdWUgOiBkZWJ1Z1N1cmZhY2VC
b3JkZXJDb2xvckJsdWU7CiAgICAgICAgIFNrQ29sb3IgY29sb3IgPSBTa0NvbG9yU2V0QVJHQihk
ZWJ1Z1N1cmZhY2VCb3JkZXJBbHBoYSwgcmVkLCBncmVlbiwgYmx1ZSk7Ci0gICAgICAgIHF1YWRM
aXN0LmFwcGVuZChDQ0RlYnVnQm9yZGVyRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IGNvbnRlbnRSZWN0KCksIGNvbG9yLCBkZWJ1Z1N1cmZhY2VCb3JkZXJXaWR0aCkpOworICAgICAg
ICBxdWFkU2luay5hcHBlbmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBjb250ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsK
ICAgICB9CiAKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhlIHNhbWUgUmVuZGVyU3VyZmFjZSBm
b3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rpb24sCkBAIC0yMzcsNyArMjI4LDcg
QEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0
LCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmUKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291
cmNlSWQgbWFza1Jlc291cmNlSWQgPSBtYXNrTGF5ZXIgPyBtYXNrTGF5ZXItPmNvbnRlbnRzUmVz
b3VyY2VJZCgpIDogMDsKICAgICBJbnRSZWN0IGNvbnRlbnRzQ2hhbmdlZFNpbmNlTGFzdEZyYW1l
ID0gY29udGVudHNDaGFuZ2VkKCkgPyBtX2NvbnRlbnRSZWN0IDogSW50UmVjdCgpOwogCi0gICAg
cXVhZExpc3QuYXBwZW5kKENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0
YXRlLCBjb250ZW50UmVjdCgpLCByZW5kZXJQYXNzSWQsIGZvclJlcGxpY2EsIG1hc2tSZXNvdXJj
ZUlkLCBjb250ZW50c0NoYW5nZWRTaW5jZUxhc3RGcmFtZSwKKyAgICBxdWFkU2luay5hcHBlbmQo
Q0NSZW5kZXJQYXNzRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIGNvbnRlbnRSZWN0
KCksIHJlbmRlclBhc3NJZCwgZm9yUmVwbGljYSwgbWFza1Jlc291cmNlSWQsIGNvbnRlbnRzQ2hh
bmdlZFNpbmNlTGFzdEZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1hc2tUZXhDb29yZFNjYWxlWCwgbWFza1RleENvb3JkU2NhbGVZLCBtYXNr
VGV4Q29vcmRPZmZzZXRYLCBtYXNrVGV4Q29vcmRPZmZzZXRZKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NS
ZW5kZXJTdXJmYWNlLmgKaW5kZXggMGU1MThiMmFhZjQ4NzUxODZkZjJlNjk1NmE2NWExYTQyNTc4
MWJlZi4uMmYzZGI1MDAwODc0MjUwZTkxODAwOWY4MDE5OGNjYjE0YzYyY2Y1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJT
dXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTEwNCwxMCArMTA0LDcgQEAgcHVibGljOgogCiAgICAg
Q0NEYW1hZ2VUcmFja2VyKiBkYW1hZ2VUcmFja2VyKCkgY29uc3QgeyByZXR1cm4gbV9kYW1hZ2VU
cmFja2VyLmdldCgpOyB9CiAKLSAgICBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBjcmVh
dGVTaGFyZWRRdWFkU3RhdGUoaW50IGlkKSBjb25zdDsKLSAgICBQYXNzT3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiBjcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3Q7Ci0K
LSAgICB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmLCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJv
b2wgZm9yUmVwbGljYSwgaW50IHJlbmRlclBhc3NJZCk7CisgICAgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRTaW5rJiwgYm9vbCBmb3JSZXBsaWNhLCBpbnQgcmVuZGVyUGFzc0lkKTsKIAogcHJpdmF0
ZToKICAgICBDQ0xheWVySW1wbCogbV9vd25pbmdMYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Ny
b2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCBlMjk5MzE4ODQ2ZWU0NTI1YjU2MTE3MmJjZjY2NzMz
YTBmYzc5MTRmLi5kYzE5MWRjMmM1YWM2YmFmMDk2NGJkNTNmODNkNmQ1ZjkxMDcwMmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC04OSwxMyArODksMTYg
QEAgc3RhdGljIEZsb2F0UmVjdCB0b1VWUmVjdChjb25zdCBXZWJSZWN0JiByLCBjb25zdCBJbnRS
ZWN0JiBib3VuZHMpCiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oci53
aWR0aCkgLyBib3VuZHMud2lkdGgoKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIuaGVpZ2h0KSAvIGJv
dW5kcy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1
YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIHsKICAgICBib29sIHByZW11bHRpcGxlZEFs
cGhhID0gZmFsc2U7CiAgICAgYm9vbCBmbGlwcGVkID0gZmFsc2U7CiAgICAgRmxvYXRSZWN0IHV2
UmVjdCgwLCAwLCAxLCAxKTsKICAgICBJbnRSZWN0IGJvdW5kc1JlY3QoSW50UG9pbnQoKSwgY29u
dGVudEJvdW5kcygpKTsKIAorICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUg
PSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwor
ICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2luaywgc2hhcmVkUXVhZFN0YXRlKTsKKwog
ICAgIFdlYlJlY3QgdGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0OwogICAg
IG1fZ2VvbWV0cnktPnNwbGl0VHJhY2soJm1fc2Nyb2xsYmFyLCBtX2dlb21ldHJ5LT50cmFja1Jl
Y3QoJm1fc2Nyb2xsYmFyKSwgYmFja1RyYWNrUmVjdCwgdGh1bWJSZWN0LCBmb3JlVHJhY2tSZWN0
KTsKICAgICBpZiAoIW1fZ2VvbWV0cnktPmhhc1RodW1iKCZtX3Njcm9sbGJhcikpCkBAIC0xMDQs
NyArMTA3LDcgQEAgdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFk
U2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFMKICAgICBpZiAobV90aHVtYlJlc291
cmNlSWQgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgT3duUHRyPENDVGV4dHVy
ZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUsIEludFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVjdC55LCB0aHVtYlJlY3Qud2lkdGgsIHRo
dW1iUmVjdC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2
UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWQtPnNldE5lZWRzQmxlbmRpbmcoKTsKLSAgICAg
ICAgcXVhZExpc3QuYXBwZW5kKHF1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBw
ZW5kKHF1YWQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICBpZiAoIW1fYmFja1RyYWNrUmVzb3Vy
Y2VJZCkKQEAgLTExMiwxMiArMTE1LDEyIEBAIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTCiAKICAg
ICAvLyBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBpbiB0d28gcGFydHMgaWYgd2Ugd2VyZSBnaXZl
biBhIHRleHR1cmUgZm9yIHRoZSBmb3J3YXJkIHRyYWNrIHBhcnQuCiAgICAgaWYgKG1fZm9yZVRy
YWNrUmVzb3VyY2VJZCAmJiAhZm9yZVRyYWNrUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHF1YWRM
aXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50
UmVjdChmb3JlVHJhY2tSZWN0LngsIGZvcmVUcmFja1JlY3QueSwgZm9yZVRyYWNrUmVjdC53aWR0
aCwgZm9yZVRyYWNrUmVjdC5oZWlnaHQpLCBtX2ZvcmVUcmFja1Jlc291cmNlSWQsIHByZW11bHRp
cGxlZEFscGhhLCB0b1VWUmVjdChmb3JlVHJhY2tSZWN0LCBib3VuZHNSZWN0KSwgZmxpcHBlZCkp
OworICAgICAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIEludFJlY3QoZm9yZVRyYWNrUmVjdC54LCBmb3JlVHJhY2tSZWN0LnksIGZv
cmVUcmFja1JlY3Qud2lkdGgsIGZvcmVUcmFja1JlY3QuaGVpZ2h0KSwgbV9mb3JlVHJhY2tSZXNv
dXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdG9VVlJlY3QoZm9yZVRyYWNrUmVjdCwgYm91bmRz
UmVjdCksIGZsaXBwZWQpKTsKIAogICAgIC8vIE9yZGVyIG1hdHRlcnMgaGVyZTogc2luY2UgdGhl
IGJhY2sgdHJhY2sgdGV4dHVyZSBpcyBiZWluZyBkcmF3biB0byB0aGUgZW50aXJlIGNvbnRlbnRz
IHJlY3QsIHdlIG11c3QgYXBwZW5kIGl0IGFmdGVyIHRoZSB0aHVtYiBhbmQKICAgICAvLyBmb3Jl
IHRyYWNrIHF1YWRzLiBUaGUgYmFjayB0cmFjayB0ZXh0dXJlIGNvbnRhaW5zIChhbmQgZGlzcGxh
eXMpIHRoZSBidXR0b25zLgogICAgIGlmICghYm91bmRzUmVjdC5pc0VtcHR5KCkpCi0gICAgICAg
IHF1YWRMaXN0LmFwcGVuZChDQ1RleHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0
ZSwgSW50UmVjdChib3VuZHNSZWN0KSwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBs
ZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1Rl
eHR1cmVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgSW50UmVjdChib3VuZHNSZWN0
KSwgbV9iYWNrVHJhY2tSZXNvdXJjZUlkLCBwcmVtdWx0aXBsZWRBbHBoYSwgdXZSZWN0LCBmbGlw
cGVkKSk7CiB9CiAKIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmRpZExvc2VDb250ZXh0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCmluZGV4IGNhNDBkMDk5ZmZiYzVh
MmMxYTBiN2ExMDQ5Y2ViMWM0OWZhMDkyY2YuLmY4ZmQ3YmY4YzI1ZDFhOWJjNTNkYWQwZjY1ZDI0
MDdhMTc3MjM2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaApAQCAt
NjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6T3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmluZGV4IDMzNzk4NzQ5N2QyNGMwYmRlYTI5
OWRiNGIyYjZhMWU5NDVlOTc1YmEuLmYzOTIyYjMwMWI2ZTBhZmUyYjcyMjY2ZTc5MjZmMjU3YTZl
OWMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTMxLDEzICsz
MSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8Q0NTaGFyZWRRdWFk
U3RhdGU+IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoaW50IGlkLCBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNp
YmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQsIGZsb2F0
IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NT
aGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNv
bnN0IEludFJlY3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3Bh
cXVlKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NTaGFyZWRRdWFkU3RhdGUoaWQsIHF1
YWRUcmFuc2Zvcm0sIHZpc2libGVDb250ZW50UmVjdCwgY2xpcHBlZFJlY3RJblRhcmdldCwgb3Bh
Y2l0eSwgb3BhcXVlKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1NoYXJlZFF1YWRTdGF0
ZShxdWFkVHJhbnNmb3JtLCB2aXNpYmxlQ29udGVudFJlY3QsIGNsaXBwZWRSZWN0SW5UYXJnZXQs
IG9wYWNpdHksIG9wYXF1ZSkpOwogfQogCi1DQ1NoYXJlZFF1YWRTdGF0ZTo6Q0NTaGFyZWRRdWFk
U3RhdGUoaW50IGlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFk
VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJlY3QsIGNvbnN0IEludFJl
Y3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQotICAg
IDogaWQoaWQpCitDQ1NoYXJlZFF1YWRTdGF0ZTo6Q0NTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgSW50UmVj
dCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJbnRSZWN0JiBjbGlwcGVkUmVjdEluVGFyZ2V0
LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKKyAgICA6IGlkKC0xKQogICAgICwgcXVhZFRy
YW5zZm9ybShxdWFkVHJhbnNmb3JtKQogICAgICwgdmlzaWJsZUNvbnRlbnRSZWN0KHZpc2libGVD
b250ZW50UmVjdCkKICAgICAsIGNsaXBwZWRSZWN0SW5UYXJnZXQoY2xpcHBlZFJlY3RJblRhcmdl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2hhcmVkUXVhZFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCmluZGV4IGFmMTJiZWM1YTdhN2MxOTA0
MDdmNWIyN2YzZmNlYWU0NDgyZGYzNTkuLmYzYWRmMDMwMWVkMmQxNDBlNDA5MzJkNWFmNTc4OTNk
ZWMzNmE0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaApAQCAtNDMsOCArNDMs
OCBAQCBzdHJ1Y3QgQ0NTaGFyZWRRdWFkU3RhdGUgewogICAgIGZsb2F0IG9wYWNpdHk7CiAgICAg
Ym9vbCBvcGFxdWU7CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
Y3JlYXRlKGludCBpZCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVh
ZFRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUNvbnRlbnRSZWN0LCBjb25zdCBJbnRS
ZWN0JiBjbGlwcGVkUmVjdEluVGFyZ2V0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7Ci0g
ICAgQ0NTaGFyZWRRdWFkU3RhdGUoaW50IGlkLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlQ29udGVudFJl
Y3QsIGNvbnN0IEludFJlY3QmIGNsaXBwZWRSZWN0SW5UYXJnZXQsIGZsb2F0IG9wYWNpdHksIGJv
b2wgb3BhcXVlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3Jl
YXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcHBl
ZFJlY3RJblRhcmdldCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOworICAgIENDU2hhcmVk
UXVhZFN0YXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFu
c2Zvcm0sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCwgY29uc3QgSW50UmVjdCYg
Y2xpcHBlZFJlY3RJblRhcmdldCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUpOwogICAgIGJv
b2wgaXNMYXllckF4aXNBbGlnbmVkSW50UmVjdCgpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9y
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKaW5kZXggMjM5ODRmOWQ0ZmFkYmZhOGZlNTE3
N2EzOTYxMDY0N2FhOGQ3NTQwYi4uZmUwMDA3ZjU1NGRkOWI4NzE4MDNiMjgwYzdhZDQyNDhiYmQ3
NmU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCkBAIC00
OSw4ICs0OSwxMSBAQCBDQ1NvbGlkQ29sb3JMYXllckltcGw6On5DQ1NvbGlkQ29sb3JMYXllcklt
cGwoKQogewogfQogCi12b2lkIENDU29saWRDb2xvckxheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NR
dWFkU2luayYgcXVhZExpc3QsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3Rh
dGUsIGJvb2wmKQordm9pZCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmIHF1YWRTaW5rLCBib29sJikKIHsKKyAgICBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVk
UXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0YXRlKGNyZWF0ZVNoYXJlZFF1YWRT
dGF0ZSgpKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQocXVhZFNpbmssIHNoYXJlZFF1YWRT
dGF0ZSk7CisKICAgICAvLyBXZSBjcmVhdGUgYSBzZXJpZXMgb2Ygc21hbGxlciBxdWFkcyBpbnN0
ZWFkIG9mIGp1c3Qgb25lIGxhcmdlIG9uZSBzbyB0aGF0IHRoZQogICAgIC8vIGN1bGxlciBjYW4g
cmVkdWNlIHRoZSB0b3RhbCBwaXhlbHMgZHJhd24uCiAgICAgaW50IHdpZHRoID0gY29udGVudEJv
dW5kcygpLndpZHRoKCk7CkBAIC01OCw3ICs2MSw3IEBAIHZvaWQgQ0NTb2xpZENvbG9yTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFk
CiAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCArPSBtX3RpbGVTaXplKSB7CiAgICAg
ICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5ICs9IG1fdGlsZVNpemUpIHsKICAgICAg
ICAgICAgIEludFJlY3Qgc29saWRUaWxlUmVjdCh4LCB5LCBtaW4od2lkdGggLSB4LCBtX3RpbGVT
aXplKSwgbWluKGhlaWdodCAtIHksIG1fdGlsZVNpemUpKTsKLSAgICAgICAgICAgIHF1YWRMaXN0
LmFwcGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgc29s
aWRUaWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKKyAgICAgICAgICAgIHF1YWRTaW5rLmFw
cGVuZChDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgc29saWRU
aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29s
aWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggZDE5YTIzMGRjZTY5NDZkMzM4
MjJhZTk5NWIzZDRjZGU1OGViYjJkMS4uZDkzMDgyMmMzMTg1ZDIzYjU2NjEyN2E0ODFlMTZhZDA1
Nzc0ZWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KICAgICB2aXJ0dWFsIH5DQ1NvbGlkQ29sb3JMYXll
ckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29u
c3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgYm9vbCYgaGFkTWlzc2lu
Z1RpbGVzKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENDU29saWRDb2xv
ckxheWVySW1wbChpbnQgaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5jcHAK
aW5kZXggYjk4MWY3MTNkMWFmZmNmYTE1ZTk1MjE5YjEyOGQ2YmEwMGIwYjA1Yy4uNTlkYmM4YWMw
MTc2ODE0MmU0NzUyYWU5NDA0Y2UxZjcxMTAxMDI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVMYXllckltcGwuY3BwCkBAIC01OCwxMiArNTgsMTYgQEAgdm9pZCBDQ1RleHR1cmVMYXllcklt
cGw6OndpbGxEcmF3KENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICBt
X2V4dGVybmFsVGV4dHVyZVJlc291cmNlID0gcmVzb3VyY2VQcm92aWRlci0+Y3JlYXRlUmVzb3Vy
Y2VGcm9tRXh0ZXJuYWxUZXh0dXJlKG1fdGV4dHVyZUlkKTsKIH0KIAotdm9pZCBDQ1RleHR1cmVM
YXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJl
ZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKK3ZvaWQgQ0NUZXh0dXJlTGF5ZXJJ
bXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCiB7CiAgICAgaWYg
KCFtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlKQogICAgICAgICByZXR1cm47CisKKyAgICBDQ1No
YXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlID0gcXVhZFNpbmsudXNlU2hhcmVkUXVhZFN0
YXRlKGNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpKTsKKyAgICBhcHBlbmREZWJ1Z0JvcmRlclF1YWQo
cXVhZFNpbmssIHNoYXJlZFF1YWRTdGF0ZSk7CisKICAgICBJbnRSZWN0IHF1YWRSZWN0KEludFBv
aW50KCksIGNvbnRlbnRCb3VuZHMoKSk7Ci0gICAgcXVhZExpc3QuYXBwZW5kKENDVGV4dHVyZURy
YXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbV9leHRlcm5hbFRleHR1
cmVSZXNvdXJjZSwgbV9wcmVtdWx0aXBsaWVkQWxwaGEsIG1fdXZSZWN0LCBtX2ZsaXBwZWQpKTsK
KyAgICBxdWFkU2luay5hcHBlbmQoQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFk
U3RhdGUsIHF1YWRSZWN0LCBtX2V4dGVybmFsVGV4dHVyZVJlc291cmNlLCBtX3ByZW11bHRpcGxp
ZWRBbHBoYSwgbV91dlJlY3QsIG1fZmxpcHBlZCkpOwogfQogCiB2b2lkIENDVGV4dHVyZUxheWVy
SW1wbDo6ZGlkRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCmluZGV4IDE1M2ViOTE4ZWJkMWY5YWE0YmQwMDhm
ODNhMmJkOTA4Njg1MjliNjUuLjU1ZDQ4YjQ1MTNhZDM2MTg0NmY2YTdlNWRiMTE2MDI1MTM0ZDUy
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZUxheWVySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1RleHR1cmVMYXllckltcGwoKTsKIAogICAgIHZpcnR1
YWwgdm9pZCB3aWxsRHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRl
KiwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kUXVhZHMoQ0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZERyYXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkTG9zZUNvbnRleHQoKSBPVkVSUklERTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggYWQ5OTNjYTE1MDZhMTE5YmE0OGIyYTI1M2FjOGY4
NGQ5MTZjYTA1Ny4uYjYxMWQ5ODkxYjY2Y2EyYmI4ZWI4YmQ0MmRiNDkxOGMyODRiYjU4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTEyNSwxMyArMTI1LDE2IEBAIERy
YXdhYmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlVGlsZShpbnQgaSwgaW50IGopCiAg
ICAgcmV0dXJuIGFkZGVkVGlsZTsKIH0KIAotdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjphcHBlbmRR
dWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgYm9vbCYgaGFkTWlzc2luZ1RpbGVzKQordm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYgaGFkTWlzc2luZ1RpbGVz
KQogewogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0ID0gdmlzaWJsZUNvbnRlbnRSZWN0
KCk7CiAKICAgICBpZiAoIW1fdGlsZXIgfHwgbV90aWxlci0+aGFzRW1wdHlCb3VuZHMoKSB8fCBj
b250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3RhdGUoY3Jl
YXRlU2hhcmVkUXVhZFN0YXRlKCkpOworICAgIGFwcGVuZERlYnVnQm9yZGVyUXVhZChxdWFkU2lu
aywgc2hhcmVkUXVhZFN0YXRlKTsKKwogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207
CiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0
LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogCkBAIC0xNDYsNyArMTQ5LDcgQEAgdm9pZCBDQ1RpbGVk
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFy
ZWRRdWFkU3RhdGUKICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3IgPSBTa0NvbG9yU2V0
QVJHQihkZWJ1Z1RpbGVCb3JkZXJBbHBoYSwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xv
clJlZCwgZGVidWdUaWxlQm9yZGVyTWlzc2luZ1RpbGVDb2xvckdyZWVuLCBkZWJ1Z1RpbGVCb3Jk
ZXJNaXNzaW5nVGlsZUNvbG9yQmx1ZSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICBib3JkZXJDb2xvciA9IFNrQ29sb3JTZXRBUkdCKGRlYnVnVGlsZUJvcmRlckFs
cGhhLCBkZWJ1Z1RpbGVCb3JkZXJDb2xvclJlZCwgZGVidWdUaWxlQm9yZGVyQ29sb3JHcmVlbiwg
ZGVidWdUaWxlQm9yZGVyQ29sb3JCbHVlKTsKLSAgICAgICAgICAgICAgICBxdWFkTGlzdC5hcHBl
bmQoQ0NEZWJ1Z0JvcmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVj
dCwgYm9yZGVyQ29sb3IsIGRlYnVnVGlsZUJvcmRlcldpZHRoKSk7CisgICAgICAgICAgICAgICAg
cXVhZFNpbmsuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgdGlsZVJlY3QsIGJvcmRlckNvbG9yLCBkZWJ1Z1RpbGVCb3JkZXJXaWR0aCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTY3LDkgKzE3MCw5IEBAIHZvaWQgQ0NU
aWxlZExheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0IEND
U2hhcmVkUXVhZFN0YXRlCiAKICAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+cmVzb3Vy
Y2VJZCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5n
VGlsZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRMaXN0
LmFwcGVuZChDQ0NoZWNrZXJib2FyZERyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0
aWxlUmVjdCkpOworICAgICAgICAgICAgICAgICAgICBoYWRNaXNzaW5nVGlsZXMgfD0gcXVhZFNp
bmsuYXBwZW5kKENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUs
IHRpbGVSZWN0KSk7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBo
YWRNaXNzaW5nVGlsZXMgfD0gcXVhZExpc3QuYXBwZW5kKENDU29saWRDb2xvckRyYXdRdWFkOjpj
cmVhdGUoc2hhcmVkUXVhZFN0YXRlLCB0aWxlUmVjdCwgYmFja2dyb3VuZENvbG9yKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaGFkTWlzc2luZ1RpbGVzIHw9IHF1YWRTaW5rLmFwcGVuZChDQ1Nv
bGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIGJhY2tn
cm91bmRDb2xvcigpKSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
CiAKQEAgLTE5NSw3ICsxOTgsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICAg
ICAgYm9vbCBib3R0b21FZGdlQUEgPSBqID09IG1fdGlsZXItPm51bVRpbGVzWSgpIC0gMSAmJiB1
c2VBQTsKIAogICAgICAgICAgICAgY29uc3QgR0MzRGludCB0ZXh0dXJlRmlsdGVyID0gbV90aWxl
ci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBxdWFkTGlzdC5hcHBlbmQoQ0NUaWxl
RHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHRpbGVSZWN0LCB0aWxlT3BhcXVlUmVj
dCwgdGlsZS0+cmVzb3VyY2VJZCgpLCB0ZXh0dXJlT2Zmc2V0LCB0ZXh0dXJlU2l6ZSwgdGV4dHVy
ZUZpbHRlciwgY29udGVudHNTd2l6emxlZCgpLCBsZWZ0RWRnZUFBLCB0b3BFZGdlQUEsIHJpZ2h0
RWRnZUFBLCBib3R0b21FZGdlQUEpKTsKKyAgICAgICAgICAgIHF1YWRTaW5rLmFwcGVuZChDQ1Rp
bGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgdGlsZVJlY3QsIHRpbGVPcGFxdWVS
ZWN0LCB0aWxlLT5yZXNvdXJjZUlkKCksIHRleHR1cmVPZmZzZXQsIHRleHR1cmVTaXplLCB0ZXh0
dXJlRmlsdGVyLCBjb250ZW50c1N3aXp6bGVkKCksIGxlZnRFZGdlQUEsIHRvcEVkZ2VBQSwgcmln
aHRFZGdlQUEsIGJvdHRvbUVkZ2VBQSkpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExh
eWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaWxlZExheWVySW1wbC5oCmluZGV4IDZiODc3YjM0MTEwYmQ4NTJhZGUyY2E1OTQ5OTMyNWQ3
NjM5NTY3ZDIuLjFiYzYwYWJhNDcxMzdiMGMyMThlYTA1YzhlOWM5ZjMwNmFkMzg5YTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAg
IH0KICAgICB2aXJ0dWFsIH5DQ1RpbGVkTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYg
aGFkTWlzc2luZ1RpbGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYsIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKICAgICB2aXJ0
dWFsIENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBjb250ZW50c1Jlc291cmNlSWQoKSBj
b25zdCBPVkVSUklERTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAppbmRleCAx
NGNiMzI3MjZlNTE0NGVjOWY4YmY5MTVlZmJkOTIyM2VlODhkZThjLi42NjJjZDJmMDNjMGRiNjA0
NzYxOTliNmMzMzViZGUxYmE2MDdkZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmNwcApAQCAtMTc3LDEzICsxNzcsMTYgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJh
d0ludGVybmFsKENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKICAgICAgICAg
bV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSA9IHJlc291cmNlUHJvdmlkZXItPmNyZWF0ZVJlc291
cmNlRnJvbUV4dGVybmFsVGV4dHVyZShtX2ZyYW1lLT50ZXh0dXJlSWQoKSk7CiB9CiAKLXZvaWQg
Q0NWaWRlb0xheWVySW1wbDo6YXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZExpc3QsIGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGJvb2wmKQordm9pZCBDQ1ZpZGVv
TGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkU2luaywgYm9vbCYpCiB7CiAg
ICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpKTsKIAogICAgIGlmICghbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCisgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0
ZSA9IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSk7
CisgICAgYXBwZW5kRGVidWdCb3JkZXJRdWFkKHF1YWRTaW5rLCBzaGFyZWRRdWFkU3RhdGUpOwor
CiAgICAgLy8gRklYTUU6IFdoZW4gd2UgcGFzcyBxdWFkcyBvdXQgb2YgcHJvY2Vzcywgd2UgbmVl
ZCB0byBkb3VibGUtYnVmZmVyLCBvcgogICAgIC8vIG90aGVyd2lzZSBzeW5jaG9uaXplIHVzZSBv
ZiBhbGwgdGV4dHVyZXMgaW4gdGhlIHF1YWQuCiAKQEAgLTE5Niw3ICsxOTksNyBAQCB2b2lkIEND
VmlkZW9MYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZQogICAgICAgICBjb25zdCBGcmFtZVBsYW5lJiB1UGxhbmUgPSBtX2Zy
YW1lUGxhbmVzW1dlYktpdDo6V2ViVmlkZW9GcmFtZTo6dVBsYW5lXTsKICAgICAgICAgY29uc3Qg
RnJhbWVQbGFuZSYgdlBsYW5lID0gbV9mcmFtZVBsYW5lc1tXZWJLaXQ6OldlYlZpZGVvRnJhbWU6
OnZQbGFuZV07CiAgICAgICAgIE93blB0cjxDQ1lVVlZpZGVvRHJhd1F1YWQ+IHl1dlZpZGVvUXVh
ZCA9IENDWVVWVmlkZW9EcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3Qs
IHlQbGFuZSwgdVBsYW5lLCB2UGxhbmUpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoeXV2Vmlk
ZW9RdWFkLnJlbGVhc2UoKSk7CisgICAgICAgIHF1YWRTaW5rLmFwcGVuZCh5dXZWaWRlb1F1YWQu
cmVsZWFzZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkE6IHsKQEAgLTIwOCw3ICsyMTEsNyBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZQogICAgICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIHdpZHRoU2NhbGVGYWN0b3IsIDEpOwog
ICAgICAgICBib29sIGZsaXBwZWQgPSBmYWxzZTsKICAgICAgICAgT3duUHRyPENDVGV4dHVyZURy
YXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgcGxhbmUucmVzb3VyY2VJZCwgcHJlbXVsdGlwbGllZEFscGhhLCB1
dlJlY3QsIGZsaXBwZWQpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1YWQucmVs
ZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJEOiB7CkBAIC0yMTcsMTkgKzIyMCwxOSBAQCB2b2lkIENDVmlkZW9MYXllckltcGw6OmFw
cGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZQog
ICAgICAgICBGbG9hdFJlY3QgdXZSZWN0KDAsIDAsIDEsIDEpOwogICAgICAgICBib29sIGZsaXBw
ZWQgPSBmYWxzZTsKICAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiB0ZXh0dXJlUXVh
ZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwg
bV9leHRlcm5hbFRleHR1cmVSZXNvdXJjZSwgcHJlbXVsdGlwbGllZEFscGhhLCB1dlJlY3QsIGZs
aXBwZWQpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQodGV4dHVyZVF1YWQucmVsZWFzZSgpKTsK
KyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKHRleHR1cmVRdWFkLnJlbGVhc2UoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEV4dGVuc2lvbnMzRDo6VEVYVFVSRV9SRUNUQU5HTEVf
QVJCOiB7CiAgICAgICAgIEludFNpemUgdGV4dHVyZVNpemUobV9mcmFtZS0+d2lkdGgoKSwgbV9m
cmFtZS0+aGVpZ2h0KCkpOyAKICAgICAgICAgT3duUHRyPENDSU9TdXJmYWNlRHJhd1F1YWQ+IGlv
U3VyZmFjZVF1YWQgPSBDQ0lPU3VyZmFjZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRl
LCBxdWFkUmVjdCwgdGV4dHVyZVNpemUsIG1fZnJhbWUtPnRleHR1cmVJZCgpLCBDQ0lPU3VyZmFj
ZURyYXdRdWFkOjpVbmZsaXBwZWQpOwotICAgICAgICBxdWFkTGlzdC5hcHBlbmQoaW9TdXJmYWNl
UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoaW9TdXJmYWNlUXVhZC5y
ZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6R0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6IHsKICAgICAgICAgLy8gU3RyZWFtVGV4
dHVyZSBoYXJkd2FyZSBkZWNvZGVyLgogICAgICAgICBPd25QdHI8Q0NTdHJlYW1WaWRlb0RyYXdR
dWFkPiBzdHJlYW1WaWRlb1F1YWQgPSBDQ1N0cmVhbVZpZGVvRHJhd1F1YWQ6OmNyZWF0ZShzaGFy
ZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBtX2ZyYW1lLT50ZXh0dXJlSWQoKSwgbV9zdHJlYW1UZXh0
dXJlTWF0cml4KTsKLSAgICAgICAgcXVhZExpc3QuYXBwZW5kKHN0cmVhbVZpZGVvUXVhZC5yZWxl
YXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQoc3RyZWFtVmlkZW9RdWFkLnJlbGVhc2Uo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVySW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRl
b0xheWVySW1wbC5oCmluZGV4IDMwMDcwYzhjMTcwMGMxYTNlYzE1MjM4ZWZlODY5ZmU3MDE4YTcz
ZTMuLjJjNTRlMzUxMzljMjNmMmNjMjAwZmE3NGRhYWI1MjE2MzhiYjY3MjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXll
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1ZpZGVvTGF5ZXJJbXBsLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkNDVmlkZW9MYXllckltcGwoKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsRHJhdyhDQ1Jl
c291cmNlUHJvdmlkZXIqKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMo
Q0NRdWFkU2luayYsIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgYm9vbCYgaGFkTWlzc2luZ1Rp
bGVzKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYs
IGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGRpZERy
YXcoQ0NSZXNvdXJjZVByb3ZpZGVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHVt
cExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29uc3QgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCmluZGV4IDZlYzBjZTVkN2FiNWUyZTFkNjUwZjA5YzY4OThhOTAxNWE3
YjNhN2UuLmQ0NDUzZjVkZDVmMGE3MWU4M2I4ZmY2ZmNjYTYwZTMyOGM2MWUyNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QuY3BwCkBAIC0xMzQ1LDcgKzEzNDUsNyBAQCBjbGFzcyBCbGVuZFN0YXRlQ2hlY2tMYXll
ciA6IHB1YmxpYyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
QmxlbmRTdGF0ZUNoZWNrTGF5ZXI+IGNyZWF0ZShpbnQgaWQsIENDUmVzb3VyY2VQcm92aWRlciog
cmVzb3VyY2VQcm92aWRlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEJsZW5kU3RhdGVDaGVja0xh
eWVyKGlkLCByZXNvdXJjZVByb3ZpZGVyKSk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRR
dWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJl
ZFF1YWRTdGF0ZSwgYm9vbCYpIE9WRVJSSURFCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZFNpbmsmIHF1YWRTaW5rLCBib29sJikgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIG1f
cXVhZHNBcHBlbmRlZCA9IHRydWU7CiAKQEAgLTEzNTQsMTEgKzEzNTQsMTMgQEAgcHVibGljOgog
ICAgICAgICAgICAgb3BhcXVlUmVjdCA9IG1fcXVhZFJlY3Q7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIG9wYXF1ZVJlY3QgPSBtX29wYXF1ZUNvbnRlbnRSZWN0OworCisgICAgICAgIENDU2hh
cmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBxdWFkU2luay51c2VTaGFyZWRRdWFkU3Rh
dGUoY3JlYXRlU2hhcmVkUXVhZFN0YXRlKCkpOwogICAgICAgICBPd25QdHI8Q0NEcmF3UXVhZD4g
dGVzdEJsZW5kaW5nRHJhd1F1YWQgPSBDQ1RpbGVEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRT
dGF0ZSwgbV9xdWFkUmVjdCwgb3BhcXVlUmVjdCwgbV9yZXNvdXJjZUlkLCBJbnRQb2ludCgpLCBJ
bnRTaXplKDEsIDEpLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwogICAg
ICAgICB0ZXN0QmxlbmRpbmdEcmF3UXVhZC0+c2V0UXVhZFZpc2libGVSZWN0KG1fcXVhZFZpc2li
bGVSZWN0KTsKICAgICAgICAgRVhQRUNUX0VRKG1fYmxlbmQsIHRlc3RCbGVuZGluZ0RyYXdRdWFk
LT5uZWVkc0JsZW5kaW5nKCkpOwogICAgICAgICBFWFBFQ1RfRVEobV9oYXNSZW5kZXJTdXJmYWNl
LCAhIXJlbmRlclN1cmZhY2UoKSk7Ci0gICAgICAgIHF1YWRMaXN0LmFwcGVuZCh0ZXN0QmxlbmRp
bmdEcmF3UXVhZC5yZWxlYXNlKCkpOworICAgICAgICBxdWFkU2luay5hcHBlbmQodGVzdEJsZW5k
aW5nRHJhd1F1YWQucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICB2b2lkIHNldEV4cGVjdGF0aW9u
KGJvb2wgYmxlbmQsIGJvb2wgaGFzUmVuZGVyU3VyZmFjZSkKQEAgLTE4NzcsMTIgKzE4NzksMTQg
QEAgY2xhc3MgRmFrZUxheWVyV2l0aFF1YWRzIDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc093blB0cjxGYWtlTGF5ZXJXaXRoUXVhZHM+IGNyZWF0ZShpbnQg
aWQpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBGYWtlTGF5ZXJXaXRoUXVhZHMoaWQpKTsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikgT1ZFUlJJREUKKyAgICB2
aXJ0dWFsIHZvaWQgYXBwZW5kUXVhZHMoQ0NRdWFkU2luayYgcXVhZFNpbmssIGJvb2wmKSBPVkVS
UklERQogICAgIHsKKyAgICAgICAgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSA9
IHF1YWRTaW5rLnVzZVNoYXJlZFF1YWRTdGF0ZShjcmVhdGVTaGFyZWRRdWFkU3RhdGUoKSk7CisK
ICAgICAgICAgU2tDb2xvciBncmF5ID0gU2tDb2xvclNldFJHQigxMDAsIDEwMCwgMTAwKTsKICAg
ICAgICAgSW50UmVjdCBxdWFkUmVjdChJbnRQb2ludCgwLCAwKSwgY29udGVudEJvdW5kcygpKTsK
ICAgICAgICAgT3duUHRyPENDRHJhd1F1YWQ+IG15UXVhZCA9IENDU29saWRDb2xvckRyYXdRdWFk
OjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgZ3JheSk7Ci0gICAgICAgIHF1YWRM
aXN0LmFwcGVuZChteVF1YWQucmVsZWFzZSgpKTsKKyAgICAgICAgcXVhZFNpbmsuYXBwZW5kKG15
UXVhZC5yZWxlYXNlKCkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTM4NjksNyArMzg3Myw3IEBA
IHN0YXRpYyB2b2lkIGNvbmZpZ3VyZVJlbmRlclBhc3NUZXN0RGF0YShjb25zdCBjaGFyKiB0ZXN0
U2NyaXB0LCBSZW5kZXJQYXNzUmVtb3ZhCiAgICAgcmVuZGVyZXItPmNsZWFyQ2FjaGVkVGV4dHVy
ZXMoKTsKIAogICAgIC8vIE9uZSBzaGFyZWQgc3RhdGUgZm9yIGFsbCBxdWFkcyAtIHdlIGRvbid0
IG5lZWQgdGhlIGNvcnJlY3QgZGV0YWlscwotICAgIHRlc3REYXRhLnNoYXJlZFF1YWRTdGF0ZSA9
IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwg
SW50UmVjdCgpLCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7CisgICAgdGVzdERhdGEuc2hhcmVkUXVh
ZFN0YXRlID0gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSwgMS4wLCB0cnVlKTsKIAogICAgIGNvbnN0IGNoYXIq
IGN1cnJlbnRDaGFyID0gdGVzdFNjcmlwdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNTIwMjIwOGI5NGYzZDVl
ZmE3YmFlZjgwYjJlM2E2MmE1OGUzYmU5Yi4uMmI0NDUyZGQzNWRmOTFlNWYxMTRhNGRhOTA0MTE2
YWU4N2M2ZjNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yNDA5LDcgKzI0MDksNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgRXZpY3Rpb25UZXN0TGF5ZXJJbXBsKGlkKSk7CiAgICAg
fQogICAgIHZpcnR1YWwgfkV2aWN0aW9uVGVzdExheWVySW1wbCgpIHsgfQotICAgIHZpcnR1YWwg
dm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiwgY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBi
b29sJiBoYWRNaXNzaW5nVGlsZXMpCisgICAgdmlydHVhbCB2b2lkIGFwcGVuZFF1YWRzKENDUXVh
ZFNpbmsmLCBib29sJiBoYWRNaXNzaW5nVGlsZXMpCiAgICAgewogICAgICAgICBBU1NFUlRfVFJV
RShtX2hhc1RleHR1cmUpOwogICAgICAgICBBU1NFUlRfTkUoMHUsIGxheWVyVHJlZUhvc3RJbXBs
KCktPnJlc291cmNlUHJvdmlkZXIoKS0+bnVtUmVzb3VyY2VzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKaW5kZXggZjczMmNkYzY4
Y2IzZTRhZTBhZThkNjU3MTU5MjJhNDA1N2U2MzVlMC4uMmM1ZTg4NTljMDEzNmQxZjZjZjA2YjZj
ZWFkYzY0MWYxYzVhMjJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwCkBAIC05NiwxNCArOTYsMTIgQEAgc3RhdGljIFBhc3NPd25Q
dHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwg
Y29uc3QgV2UKICAgICByZXR1cm4gbGF5ZXIucmVsZWFzZSgpOwogfQogCi1zdGF0aWMgdm9pZCBh
cHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgVmVjdG9yPE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gPiYgc2hhcmVkU3RhdGVMaXN0LCBDQ1RpbGVkTGF5ZXJJbXBsKiBsYXllciwgQ0NM
YXllckl0ZXJhdG9yVHlwZSYgaXQsIENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRy
YWNrZXIpCitzdGF0aWMgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRMaXN0JiBxdWFkTGlzdCwgQ0NT
aGFyZWRRdWFkU3RhdGVMaXN0JiBzaGFyZWRTdGF0ZUxpc3QsIENDVGlsZWRMYXllckltcGwqIGxh
eWVyLCBDQ0xheWVySXRlcmF0b3JUeXBlJiBpdCwgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYgb2Nj
bHVzaW9uVHJhY2tlcikKIHsKICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5ZXIoaXQpOwot
ICAgIENDUXVhZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBsYXllciwgJm9jY2x1c2lvblRy
YWNrZXIsIGZhbHNlLCBmYWxzZSk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOworICAgIENDUXVh
ZEN1bGxlciBxdWFkQ3VsbGVyKHF1YWRMaXN0LCBzaGFyZWRTdGF0ZUxpc3QsIGxheWVyLCAmb2Nj
bHVzaW9uVHJhY2tlciwgZmFsc2UsIGZhbHNlKTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9
IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgc2hhcmVkU3RhdGVMaXN0LmFwcGVuZChz
aGFyZWRRdWFkU3RhdGUucmVsZWFzZSgpKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1
bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICBvY2NsdXNpb25UcmFja2VyLmxlYXZlTGF5ZXIo
aXQpOwogICAgICsraXQ7CiB9CkBAIC0xMTEsOSArMTA5LDkgQEAgc3RhdGljIHZvaWQgYXBwZW5k
UXVhZHMoQ0NRdWFkTGlzdCYgcXVhZExpc3QsIFZlY3RvcjxPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+ID4KICNkZWZpbmUgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTICAgICAgICAg
ICAgICAgXAogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOyAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IHNoYXJl
ZFN0YXRlTGlzdDsgXAorICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCBzaGFyZWRTdGF0ZUxpc3Q7
ICAgICAgICAgICAgICBcCiAgICAgVmVjdG9yPENDTGF5ZXJJbXBsKj4gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdDsgICAgICAgIFwKLSAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5z
Zm9ybTsgICAgICAgICAgICAgICAgXAorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxk
VHJhbnNmb3JtOyAgICAgICAgICAgICBcCiAgICAgSW50U2l6ZSByb290U2l6ZSA9IEludFNpemUo
MzAwLCAzMDApOyAgICAgICAgICAgICAgIFwKICAgICBJbnRSZWN0IHJvb3RSZWN0ID0gSW50UmVj
dChJbnRQb2ludCgpLCByb290U2l6ZSk7ICAgXAogICAgIEludFNpemUgY2hpbGRTaXplID0gSW50
U2l6ZSgyMDAsIDIwMCk7ICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcAppbmRleCBhNmE0MjJlMzI3ZGU3
OTAyMmFlMTk1NjkyY2VjNWFhODYzMTYzMzIwLi4wNWQ3MTY2NDEzMmNkMDQzM2Q4MzgyYjdiOTM4
ZTkwODBlYjZlNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UmVuZGVyU3VyZmFjZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ0xh
eWVySW1wbC5oIgogI2luY2x1ZGUgIkNDU2hhcmVkUXVhZFN0YXRlLmgiCiAjaW5jbHVkZSAiQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgIk1vY2tDQ1F1YWRDdWxsZXIuaCIKICNpbmNs
dWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CkBAIC0xMTUsNyArMTE2LDE1IEBAIFRF
U1QoQ0NSZW5kZXJTdXJmYWNlVGVzdCwgc2FuaXR5Q2hlY2tTdXJmYWNlQ3JlYXRlc0NvcnJlY3RT
aGFyZWRRdWFkU3RhdGUpCiAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q2xpcFJlY3QoY2xpcFJlY3Qp
OwogICAgIHJlbmRlclN1cmZhY2UtPnNldERyYXdPcGFjaXR5KDEpOwogCi0gICAgT3duUHRyPEND
U2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSByZW5kZXJTdXJmYWNlLT5jcmVhdGVT
aGFyZWRRdWFkU3RhdGUoMCk7CisgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsKKyAgICBDQ1NoYXJl
ZFF1YWRTdGF0ZUxpc3Qgc2hhcmVkU3RhdGVMaXN0OworICAgIE1vY2tDQ1F1YWRDdWxsZXIgbW9j
a1F1YWRDdWxsZXIocXVhZExpc3QsIHNoYXJlZFN0YXRlTGlzdCk7CisKKyAgICBib29sIGZvclJl
cGxpY2EgPSBmYWxzZTsKKyAgICByZW5kZXJTdXJmYWNlLT5hcHBlbmRRdWFkcyhtb2NrUXVhZEN1
bGxlciwgZm9yUmVwbGljYSwgMSk7CisKKyAgICBBU1NFUlRfRVEoMXUsIHNoYXJlZFN0YXRlTGlz
dC5zaXplKCkpOworICAgIENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUgPSBzaGFy
ZWRTdGF0ZUxpc3RbMF0uZ2V0KCk7CiAKICAgICBFWFBFQ1RfRVEoMzAsIHNoYXJlZFF1YWRTdGF0
ZS0+cXVhZFRyYW5zZm9ybS5tNDEoKSk7CiAgICAgRVhQRUNUX0VRKDQwLCBzaGFyZWRRdWFkU3Rh
dGUtPnF1YWRUcmFuc2Zvcm0ubTQyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggMWViYTk5
MWMzMzViMGIzOGU1MmY5NzE0YTA3NWNkNzIwNWIwMWZlNS4uMjIwMTg5YjQxNjQzY2Q5N2RkNWFk
ZGMwMzY2Y2RmNzU4ZWJmOGE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1NvbGlkQ29sb3JMYXllckltcGxUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDU29saWRDb2xvckxheWVySW1wbFRlc3QuY3BwCkBAIC01Myw5ICs1Myw4
IEBAIFRFU1QoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsVGVzdCwgdmVyaWZ5VGlsaW5nQ29tcGxldGVB
bmROb092ZXJsYXApCiAgICAgbGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBsYXll
ci0+c2V0UmVuZGVyVGFyZ2V0KGxheWVyLmdldCgpKTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1
YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgw
KTsKICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRR
dWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7
CisgICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAK
ICAgICB2ZXJpZnlRdWFkc0V4YWN0bHlDb3ZlclJlY3QocXVhZEN1bGxlci5xdWFkTGlzdCgpLCB2
aXNpYmxlQ29udGVudFJlY3QpOwogfQpAQCAtNzgsOSArNzcsOCBAQCBURVNUKENDU29saWRDb2xv
ckxheWVySW1wbFRlc3QsIHZlcmlmeUNvcnJlY3RCYWNrZ3JvdW5kQ29sb3JJblF1YWQpCiAgICAg
bGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICBsYXllci0+c2V0UmVuZGVyVGFyZ2V0
KGxheWVyLmdldCgpKTsKIAotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVh
ZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKICAgICBib29sIGhhZE1p
c3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiAKICAgICBBU1NFUlRfRVEocXVh
ZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMVUpOwogICAgIEVYUEVDVF9FUShDQ1NvbGlkQ29s
b3JEcmF3UXVhZDo6bWF0ZXJpYWxDYXN0KHF1YWRDdWxsZXIucXVhZExpc3QoKVswXS5nZXQoKSkt
PmNvbG9yKCksIHRlc3RDb2xvcik7CkBAIC0xMDQsOSArMTAyLDggQEAgVEVTVChDQ1NvbGlkQ29s
b3JMYXllckltcGxUZXN0LCB2ZXJpZnlDb3JyZWN0T3BhY2l0eUluUXVhZCkKICAgICBsYXllci0+
Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwogICAgIGxheWVyLT5zZXRSZW5kZXJUYXJnZXQobGF5ZXIu
Z2V0KCkpOwogCi0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUg
PSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOwogICAgIGJvb2wgaGFkTWlzc2luZ1Rp
bGVzID0gZmFsc2U7Ci0gICAgbGF5ZXItPmFwcGVuZFF1YWRzKHF1YWRDdWxsZXIsIHNoYXJlZFF1
YWRTdGF0ZS5nZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKKyAgICBsYXllci0+YXBwZW5kUXVhZHMo
cXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKIAogICAgIEFTU0VSVF9FUShxdWFkQ3VsbGVy
LnF1YWRMaXN0KCkuc2l6ZSgpLCAxVSk7CiAgICAgRVhQRUNUX0VRKG9wYWNpdHksIENDU29saWRD
b2xvckRyYXdRdWFkOjptYXRlcmlhbENhc3QocXVhZEN1bGxlci5xdWFkTGlzdCgpWzBdLmdldCgp
KS0+b3BhY2l0eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NUaWxlZExheWVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q1RpbGVkTGF5ZXJJbXBsVGVzdC5jcHAKaW5kZXggNjIzMzZiYjUwYzQ4ODY2MDQ4YWJiMzc0NjFh
NWY4N2Y1NjY0MGQ4OC4uOGI0YmQyMGU4ZDljYTIyMTQzZjEyZTlmN2NlNWZhNzdkOTcwZTc2MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RpbGVkTGF5ZXJJ
bXBsVGVzdC5jcHAKQEAgLTc2LDkgKzc2LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
ZW1wdHlRdWFkTGlzdCkKICAgICB7CiAgICAgICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBs
YXllciA9IGNyZWF0ZUxheWVyKHRpbGVTaXplLCBsYXllclNpemUsIENDTGF5ZXJUaWxpbmdEYXRh
OjpOb0JvcmRlclRleGVscyk7CiAgICAgICAgIE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcjsK
LSAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBsYXll
ci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOwogICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxl
cyA9IGZhbHNlOwotICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVk
UXVhZFN0YXRlLmdldCgpLCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICBsYXllci0+YXBwZW5k
UXVhZHMocXVhZEN1bGxlciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgbnVtVGlsZXMgPSBudW1UaWxlc1ggKiBudW1UaWxlc1k7CiAgICAgICAgIEVYUEVDVF9FUShx
dWFkQ3VsbGVyLnF1YWRMaXN0KCkuc2l6ZSgpLCBudW1UaWxlcyk7CiAgICAgfQpAQCAtODksOSAr
ODgsOCBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBlbXB0eVF1YWRMaXN0KQogICAgICAg
ICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoKSk7CiAKICAgICAgICAgTW9j
a0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3Rh
dGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CiAg
ICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxl
cyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGls
ZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUp
OwogICAgIH0KIApAQCAtMTAzLDkgKzEwMSw4IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3Qs
IGVtcHR5UXVhZExpc3QpCiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3Qob3V0
c2lkZUJvdW5kcyk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3VsbGVyOwotICAg
ICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9IGxheWVyLT5j
cmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CiAgICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0g
ZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFk
U3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFk
cyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1RfRVEocXVhZEN1
bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIApAQCAtMTE1LDkgKzExMiw4IEBA
IFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGVtcHR5UXVhZExpc3QpCiAgICAgICAgIGxheWVy
LT5zZXRTa2lwc0RyYXcodHJ1ZSk7CiAKICAgICAgICAgTW9ja0NDUXVhZEN1bGxlciBxdWFkQ3Vs
bGVyOwotICAgICAgICBPd25QdHI8Q0NTaGFyZWRRdWFkU3RhdGU+IHNoYXJlZFF1YWRTdGF0ZSA9
IGxheWVyLT5jcmVhdGVTaGFyZWRRdWFkU3RhdGUoMCk7CiAgICAgICAgIGJvb2wgaGFkTWlzc2lu
Z1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBz
aGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgIGxheWVyLT5h
cHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBFQ1Rf
RVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgMHUpOwogICAgIH0KIH0KQEAgLTEzMiwx
MyArMTI4LDEyIEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGluZykK
ICAgICBjb25zdCBJbnRTaXplIGxheWVyU2l6ZSh0aWxlU2l6ZS53aWR0aCgpICogbnVtVGlsZXNY
LCB0aWxlU2l6ZS5oZWlnaHQoKSAqIG51bVRpbGVzWSk7CiAKICAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0
ZT4gc2hhcmVkUXVhZFN0YXRlID0gbGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgwKTsKIAog
ICAgIC8vIE5vIGNoZWNrZXJib2FyZGluZwogICAgIHsKICAgICAgICAgTW9ja0NDUXVhZEN1bGxl
ciBxdWFkQ3VsbGVyOwogICAgICAgICBib29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAg
ICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxlciwgc2hhcmVkUXVhZFN0YXRlLmdldCgp
LCBoYWRNaXNzaW5nVGlsZXMpOworICAgICAgICBsYXllci0+YXBwZW5kUXVhZHMocXVhZEN1bGxl
ciwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgRVhQRUNUX0VRKHF1YWRDdWxsZXIucXVhZExp
c3QoKS5zaXplKCksIDR1KTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKGhhZE1pc3NpbmdUaWxlcyk7
CiAKQEAgLTE1NCw3ICsxNDksNyBAQCBURVNUKENDVGlsZWRMYXllckltcGxUZXN0LCBjaGVja2Vy
Ym9hcmRpbmcpCiAgICAgewogICAgICAgICBNb2NrQ0NRdWFkQ3VsbGVyIHF1YWRDdWxsZXI7CiAg
ICAgICAgIGJvb2wgaGFkTWlzc2luZ1RpbGVzID0gZmFsc2U7Ci0gICAgICAgIGxheWVyLT5hcHBl
bmRRdWFkcyhxdWFkQ3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxl
cyk7CisgICAgICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFkQ3VsbGVyLCBoYWRNaXNzaW5nVGls
ZXMpOwogICAgICAgICBFWFBFQ1RfVFJVRShoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICBFWFBF
Q1RfRVEocXVhZEN1bGxlci5xdWFkTGlzdCgpLnNpemUoKSwgNHUpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHF1YWRDdWxsZXIucXVhZExpc3QoKS5zaXplKCk7ICsraSkKQEAgLTE2
MiwxNyArMTU3LDE1IEBAIFRFU1QoQ0NUaWxlZExheWVySW1wbFRlc3QsIGNoZWNrZXJib2FyZGlu
ZykKICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBnZXRR
dWFkcyhDQ1F1YWRMaXN0JiBxdWFkcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYg
bGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4
ZWxPcHRpb24sIGNvbnN0IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkKK3N0YXRpYyB2b2lk
IGdldFF1YWRzKENDUXVhZExpc3QmIHF1YWRzLCBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3QmIHNoYXJl
ZFN0YXRlcywgSW50U2l6ZSB0aWxlU2l6ZSwgY29uc3QgSW50U2l6ZSYgbGF5ZXJTaXplLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyVGV4ZWxPcHRpb24sIGNvbnN0
IEludFJlY3QmIHZpc2libGVDb250ZW50UmVjdCkKIHsKICAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbD4gbGF5ZXIgPSBjcmVhdGVMYXllcih0aWxlU2l6ZSwgbGF5ZXJTaXplLCBib3JkZXJUZXhl
bE9wdGlvbik7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNpYmxlQ29udGVu
dFJlY3QpOwogICAgIGxheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIAotICAgIE1vY2tDQ1F1
YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkcyk7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRl
PiBzaGFyZWRRdWFkU3RhdGUgPSBsYXllci0+Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKDApOworICAg
IE1vY2tDQ1F1YWRDdWxsZXIgcXVhZEN1bGxlcihxdWFkcywgc2hhcmVkU3RhdGVzKTsKICAgICBi
b29sIGhhZE1pc3NpbmdUaWxlcyA9IGZhbHNlOwotICAgIGxheWVyLT5hcHBlbmRRdWFkcyhxdWFk
Q3VsbGVyLCBzaGFyZWRRdWFkU3RhdGUuZ2V0KCksIGhhZE1pc3NpbmdUaWxlcyk7Ci0gICAgcmV0
dXJuIHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCk7IC8vIFRoZSBzaGFyZWQgZGF0YSBtdXN0IGJl
IG93bmVkIGFzIGxvbmcgYXMgdGhlIHF1YWQgbGlzdCBleGlzdHMuCisgICAgbGF5ZXItPmFwcGVu
ZFF1YWRzKHF1YWRDdWxsZXIsIGhhZE1pc3NpbmdUaWxlcyk7CiB9CiAKIC8vIFRlc3Qgd2l0aCBi
b3RoIGJvcmRlciB0ZXhlbHMgYW5kIHdpdGhvdXQuCkBAIC0xOTIsOCArMTg1LDggQEAgc3RhdGlj
IHZvaWQgY292ZXJhZ2VWaXNpYmxlUmVjdE9uVGlsZUJvdW5kYXJpZXMoQ0NMYXllclRpbGluZ0Rh
dGE6OkJvcmRlclRleGVsT3AKIAogICAgIEludFNpemUgbGF5ZXJTaXplKDEwMDAsIDEwMDApOwog
ICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFy
ZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwg
MTAwKSwgbGF5ZXJTaXplLCBib3JkZXJzLCBJbnRSZWN0KEludFBvaW50KCksIGxheWVyU2l6ZSkp
OworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCBzaGFyZWRTdGF0ZXM7CisgICAgZ2V0UXVhZHMo
cXVhZHMsIHNoYXJlZFN0YXRlcywgSW50U2l6ZSgxMDAsIDEwMCksIGxheWVyU2l6ZSwgYm9yZGVy
cywgSW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpKTsKICAgICB2ZXJpZnlRdWFkc0V4YWN0
bHlDb3ZlclJlY3QocXVhZHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiB9CiBX
SVRIX0FORF9XSVRIT1VUX0JPUkRFUl9URVNUKGNvdmVyYWdlVmlzaWJsZVJlY3RPblRpbGVCb3Vu
ZGFyaWVzKTsKQEAgLTIwOSw4ICsyMDIsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2libGVS
ZWN0SW50ZXJzZWN0c1RpbGVzKENDTGF5ZXJUaWxpbmdEYXRhOjpCb3JkZXJUZXhlbE9wdAogCiAg
ICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0g
ICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0
ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBD
Q0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7Cisg
ICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFk
cywgc2hhcmVkU3RhdGVzLCBJbnRTaXplKDUwLCA1MCksIEludFNpemUoMjUwLCAyNTApLCBDQ0xh
eWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7CiAgICAg
dmVyaWZ5UXVhZHNFeGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlQ29udGVudFJlY3QpOwog
fQogV0lUSF9BTkRfV0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJz
ZWN0c1RpbGVzKTsKQEAgLTIyMiw4ICsyMTUsOCBAQCBzdGF0aWMgdm9pZCBjb3ZlcmFnZVZpc2li
bGVSZWN0SW50ZXJzZWN0c0JvdW5kcyhDQ0xheWVyVGlsaW5nRGF0YTo6Qm9yZGVyVGV4ZWxPcAog
ICAgIEludFNpemUgbGF5ZXJTaXplKDIyMCwgMjEwKTsKICAgICBJbnRSZWN0IHZpc2libGVDb250
ZW50UmVjdChJbnRQb2ludCgpLCBsYXllclNpemUpOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0g
ICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0
ZSA9IGdldFF1YWRzKHF1YWRzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7CisgICAgQ0NT
aGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hh
cmVkU3RhdGVzLCBJbnRTaXplKDEwMCwgMTAwKSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0
YTo6Tm9Cb3JkZXJUZXhlbHMsIHZpc2libGVDb250ZW50UmVjdCk7CiAgICAgdmVyaWZ5UXVhZHNF
eGFjdGx5Q292ZXJSZWN0KHF1YWRzLCB2aXNpYmxlQ29udGVudFJlY3QpOwogfQogV0lUSF9BTkRf
V0lUSE9VVF9CT1JERVJfVEVTVChjb3ZlcmFnZVZpc2libGVSZWN0SW50ZXJzZWN0c0JvdW5kcyk7
CkBAIC0yMzUsOCArMjI4LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwgdGV4dHVyZUlu
Zm9Gb3JMYXllck5vQm9yZGVycykKICAgICBJbnRTaXplIHRpbGVTaXplKDUwLCA1MCk7CiAgICAg
SW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3QgcXVhZHM7Ci0gICAg
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBzaGFyZWRTdGF0ZSA9
IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6
Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CisgICAgQ0NT
aGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBnZXRRdWFkcyhxdWFkcywgc2hh
cmVkU3RhdGVzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3Jk
ZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVF9FUShx
dWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50KSA8PCBxdWFkU3Ry
aW5nIDw8IGk7CkBAIC0yNTYsOCArMjQ5LDggQEAgVEVTVChDQ1RpbGVkTGF5ZXJJbXBsVGVzdCwg
dGlsZU9wYXF1ZVJlY3RGb3JMYXllck5vQm9yZGVycykKICAgICBJbnRTaXplIHRpbGVTaXplKDUw
LCA1MCk7CiAgICAgSW50U2l6ZSBsYXllclNpemUoMjUwLCAyNTApOwogICAgIENDUXVhZExpc3Qg
cXVhZHM7Ci0gICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRTdGF0ZTsKLSAgICBz
aGFyZWRTdGF0ZSA9IGdldFF1YWRzKHF1YWRzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVy
VGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXpl
KSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGVMaXN0IHNoYXJlZFN0YXRlczsKKyAgICBnZXRRdWFk
cyhxdWFkcywgc2hhcmVkU3RhdGVzLCB0aWxlU2l6ZSwgbGF5ZXJTaXplLCBDQ0xheWVyVGlsaW5n
RGF0YTo6Tm9Cb3JkZXJUZXhlbHMsIEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXJTaXplKSk7CiAK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1YWRzLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IEFTU0VSVF9FUShxdWFkc1tpXS0+bWF0ZXJpYWwoKSwgQ0NEcmF3UXVhZDo6VGlsZWRDb250ZW50
KSA8PCBxdWFkU3RyaW5nIDw8IGk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL01vY2tDQ1F1YWRDdWxsZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
TW9ja0NDUXVhZEN1bGxlci5oCmluZGV4IDdmNmUwZjg1YWVhMjZjNTM3NjIzYmI4OTdhODUwYTFi
ZjY1ZDdhMjAuLjU5YTAwNzNjZTE0ZGUwYjczNDZmMTY0ODM3MmQwZDZmMzc2YTEzYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTW9ja0NDUXVhZEN1bGxlci5oCkBAIC0z
MiwxOSArMzIsMjEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBNb2NrQ0NRdWFk
Q3VsbGVyIDogcHVibGljIFdlYkNvcmU6OkNDUXVhZFNpbmsgeworY2xhc3MgTW9ja0NDUXVhZEN1
bGxlciA6IHB1YmxpYyBDQ1F1YWRTaW5rIHsKIHB1YmxpYzoKICAgICBNb2NrQ0NRdWFkQ3VsbGVy
KCkKICAgICAgICAgOiBtX2FjdGl2ZVF1YWRMaXN0KG1fcXVhZExpc3RTdG9yYWdlKQorICAgICAg
ICAsIG1fYWN0aXZlU2hhcmVkUXVhZFN0YXRlTGlzdChtX3NoYXJlZFF1YWRTdGF0ZVN0b3JhZ2Up
CiAgICAgeyB9CiAKLSAgICBleHBsaWNpdCBNb2NrQ0NRdWFkQ3VsbGVyKENDUXVhZExpc3QmIGV4
dGVybmFsUXVhZExpc3QpCisgICAgZXhwbGljaXQgTW9ja0NDUXVhZEN1bGxlcihDQ1F1YWRMaXN0
JiBleHRlcm5hbFF1YWRMaXN0LCBDQ1NoYXJlZFF1YWRTdGF0ZUxpc3QmIGV4dGVybmFsU2hhcmVk
UXVhZFN0YXRlTGlzdCkKICAgICAgICAgOiBtX2FjdGl2ZVF1YWRMaXN0KGV4dGVybmFsUXVhZExp
c3QpCisgICAgICAgICwgbV9hY3RpdmVTaGFyZWRRdWFkU3RhdGVMaXN0KGV4dGVybmFsU2hhcmVk
UXVhZFN0YXRlTGlzdCkKICAgICB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBhcHBlbmQoV1RGOjpQ
YXNzT3duUHRyPFdlYkNvcmU6OkNDRHJhd1F1YWQ+IG5ld1F1YWQpCisgICAgdmlydHVhbCBib29s
IGFwcGVuZChXVEY6OlBhc3NPd25QdHI8Q0NEcmF3UXVhZD4gbmV3UXVhZCkgT1ZFUlJJREUKICAg
ICB7Ci0gICAgICAgIE93blB0cjxXZWJDb3JlOjpDQ0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1
YWQ7CisgICAgICAgIE93blB0cjxDQ0RyYXdRdWFkPiBkcmF3UXVhZCA9IG5ld1F1YWQ7CiAgICAg
ICAgIGlmICghZHJhd1F1YWQtPnF1YWRSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBt
X2FjdGl2ZVF1YWRMaXN0LmFwcGVuZChkcmF3UXVhZC5yZWxlYXNlKCkpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CkBAIC01MiwxMSArNTQsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgV2ViQ29yZTo6Q0NRdWFkTGlzdCYgcXVhZExpc3Qo
KSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZVF1YWRMaXN0OyB9OworICAgIHZpcnR1YWwgQ0NTaGFy
ZWRRdWFkU3RhdGUqIHVzZVNoYXJlZFF1YWRTdGF0ZShQYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0
YXRlPiBwYXNzU2hhcmVkUXVhZFN0YXRlKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgT3duUHRy
PENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUocGFzc1NoYXJlZFF1YWRTdGF0ZSk7
CisgICAgICAgIHNoYXJlZFF1YWRTdGF0ZS0+aWQgPSBtX2FjdGl2ZVNoYXJlZFF1YWRTdGF0ZUxp
c3Quc2l6ZSgpOworCisgICAgICAgIENDU2hhcmVkUXVhZFN0YXRlKiByYXdQdHIgPSBzaGFyZWRR
dWFkU3RhdGUuZ2V0KCk7CisgICAgICAgIG1fYWN0aXZlU2hhcmVkUXVhZFN0YXRlTGlzdC5hcHBl
bmQoc2hhcmVkUXVhZFN0YXRlLnJlbGVhc2UoKSk7CisgICAgICAgIHJldHVybiByYXdQdHI7Cisg
ICAgfQorCisgICAgY29uc3QgQ0NRdWFkTGlzdCYgcXVhZExpc3QoKSBjb25zdCB7IHJldHVybiBt
X2FjdGl2ZVF1YWRMaXN0OyB9OworICAgIGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlTGlzdCYgc2hh
cmVkUXVhZFN0YXRlTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU2hhcmVkUXVhZFN0YXRl
TGlzdDsgfTsKIAogcHJpdmF0ZToKLSAgICBXZWJDb3JlOjpDQ1F1YWRMaXN0JiBtX2FjdGl2ZVF1
YWRMaXN0OwotICAgIFdlYkNvcmU6OkNDUXVhZExpc3QgbV9xdWFkTGlzdFN0b3JhZ2U7CisgICAg
Q0NRdWFkTGlzdCYgbV9hY3RpdmVRdWFkTGlzdDsKKyAgICBDQ1F1YWRMaXN0IG1fcXVhZExpc3RT
dG9yYWdlOworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCYgbV9hY3RpdmVTaGFyZWRRdWFkU3Rh
dGVMaXN0OworICAgIENDU2hhcmVkUXVhZFN0YXRlTGlzdCBtX3NoYXJlZFF1YWRTdGF0ZVN0b3Jh
Z2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>