<?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>133932</bug_id>
          
          <creation_ts>2014-06-15 20:51:25 -0700</creation_ts>
          <short_desc>Subpixel layout: Switch inlines&apos; baseline positioning from int to LayoutUnit.</short_desc>
          <delta_ts>2021-04-02 02:08:19 -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>Layout and Rendering</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>136332</blocked>
    
    <blocked>158441</blocked>
    
    <blocked>133575</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>hyatt</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>phiw2</cc>
    
    <cc>rbuis</cc>
    
    <cc>rego</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1015805</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-15 20:51:25 -0700</bug_when>
    <thetext>This is mainly about *::baselinePosition() *::firstLineBaseline() *::inlineBlockBaseline()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1744714</commentid>
    <comment_count>1</comment_count>
      <attachid>424534</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-03-29 09:18:05 -0700</bug_when>
    <thetext>Created attachment 424534
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745097</commentid>
    <comment_count>2</comment_count>
      <attachid>424633</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-03-30 06:27:42 -0700</bug_when>
    <thetext>Created attachment 424633
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745135</commentid>
    <comment_count>3</comment_count>
      <attachid>424645</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-03-30 09:00:52 -0700</bug_when>
    <thetext>Created attachment 424645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745181</commentid>
    <comment_count>4</comment_count>
      <attachid>424658</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-03-30 10:41:12 -0700</bug_when>
    <thetext>Created attachment 424658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745485</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-03-30 20:24:50 -0700</bug_when>
    <thetext>My general advice (but it&apos;s really up to you) is to use auto whenever possible as well as uniform initialization (and also make this patch strictly about int -&gt; LayoutUnit (e.g. do not convert special values to Optional)).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745531</commentid>
    <comment_count>6</comment_count>
      <attachid>424739</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-03-31 00:30:54 -0700</bug_when>
    <thetext>Created attachment 424739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1745618</commentid>
    <comment_count>7</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-03-31 07:58:55 -0700</bug_when>
    <thetext>(In reply to zalan from comment #5)
&gt; My general advice (but it&apos;s really up to you) is to use auto whenever
&gt; possible as well as uniform initialization (and also make this patch
&gt; strictly about int -&gt; LayoutUnit (e.g. do not convert special values to
&gt; Optional)).

Thanks, I tried to do this in the latest patch. Also I try to get away with the minimum amount of explicit toInt() calls, just enough to keep the bots green.

Follow up work (removing more toInt()) will likely be smaller (code) patches, since these small changes may need a lot of rebaselining of the tests, big changes may cause huge patches/rebaselining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746214</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-01 13:11:11 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #7)
&gt; (In reply to zalan from comment #5)
&gt; &gt; My general advice (but it&apos;s really up to you) is to use auto whenever
&gt; &gt; possible as well as uniform initialization (and also make this patch
&gt; &gt; strictly about int -&gt; LayoutUnit (e.g. do not convert special values to
&gt; &gt; Optional)).
&gt; 
&gt; Thanks, I tried to do this in the latest patch. Also I try to get away with
&gt; the minimum amount of explicit toInt() calls, just enough to keep the bots
&gt; green.
&gt; 
&gt; Follow up work (removing more toInt()) will likely be smaller (code)
&gt; patches, since these small changes may need a lot of rebaselining of the
&gt; tests, big changes may cause huge patches/rebaselining.
Sounds good. Any particular reason you left in the &quot;-1 -&gt; Optional&quot; transition?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746223</commentid>
    <comment_count>9</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-04-01 13:30:07 -0700</bug_when>
    <thetext>(In reply to zalan from comment #8)
&gt; (In reply to Rob Buis from comment #7)
&gt; &gt; (In reply to zalan from comment #5)
&gt; &gt; &gt; My general advice (but it&apos;s really up to you) is to use auto whenever
&gt; &gt; &gt; possible as well as uniform initialization (and also make this patch
&gt; &gt; &gt; strictly about int -&gt; LayoutUnit (e.g. do not convert special values to
&gt; &gt; &gt; Optional)).
&gt; &gt; 
&gt; &gt; Thanks, I tried to do this in the latest patch. Also I try to get away with
&gt; &gt; the minimum amount of explicit toInt() calls, just enough to keep the bots
&gt; &gt; green.
&gt; &gt; 
&gt; &gt; Follow up work (removing more toInt()) will likely be smaller (code)
&gt; &gt; patches, since these small changes may need a lot of rebaselining of the
&gt; &gt; tests, big changes may cause huge patches/rebaselining.
&gt; Sounds good. Any particular reason you left in the &quot;-1 -&gt; Optional&quot;
&gt; transition?

In GridBaselineAlignment? When doing some work on flexbox, there was a preference for doing -1 -&gt; Optional changes, which is also my preference, but if you want to keep that as-is, that is also fine by me. I can&apos;t quite remember if not doing that would make tests fail, but I lean towards thinking there is no difference in behaviour either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746233</commentid>
    <comment_count>10</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-01 13:47:05 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #9)
&gt; (In reply to zalan from comment #8)
&gt; &gt; (In reply to Rob Buis from comment #7)
&gt; &gt; &gt; (In reply to zalan from comment #5)
&gt; &gt; &gt; &gt; My general advice (but it&apos;s really up to you) is to use auto whenever
&gt; &gt; &gt; &gt; possible as well as uniform initialization (and also make this patch
&gt; &gt; &gt; &gt; strictly about int -&gt; LayoutUnit (e.g. do not convert special values to
&gt; &gt; &gt; &gt; Optional)).
&gt; &gt; &gt; 
&gt; &gt; &gt; Thanks, I tried to do this in the latest patch. Also I try to get away with
&gt; &gt; &gt; the minimum amount of explicit toInt() calls, just enough to keep the bots
&gt; &gt; &gt; green.
&gt; &gt; &gt; 
&gt; &gt; &gt; Follow up work (removing more toInt()) will likely be smaller (code)
&gt; &gt; &gt; patches, since these small changes may need a lot of rebaselining of the
&gt; &gt; &gt; tests, big changes may cause huge patches/rebaselining.
&gt; &gt; Sounds good. Any particular reason you left in the &quot;-1 -&gt; Optional&quot;
&gt; &gt; transition?
&gt; 
&gt; In GridBaselineAlignment? When doing some work on flexbox, there was a
&gt; preference for doing -1 -&gt; Optional changes, which is also my preference,
&gt; but if you want to keep that as-is, that is also fine by me. I can&apos;t quite
&gt; remember if not doing that would make tests fail, but I lean towards
&gt; thinking there is no difference in behaviour either way.
Ok, I just prefer a clean int -&gt; LayoutUnit patch to make things like tracking down regressions easier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746237</commentid>
    <comment_count>11</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-01 13:47:51 -0700</bug_when>
    <thetext>&gt;there was a preference for doing -1 -&gt; Optional changes, which is also my preference
that&apos;s absolutely my preference too. just not in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746239</commentid>
    <comment_count>12</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-04-01 13:49:27 -0700</bug_when>
    <thetext>(In reply to zalan from comment #11)
&gt; &gt;there was a preference for doing -1 -&gt; Optional changes, which is also my preference
&gt; that&apos;s absolutely my preference too. just not in this patch.

Sure, makes sense. I&apos;ll remove that part tomorrow and check nothing breaks :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746258</commentid>
    <comment_count>13</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-04-01 14:06:03 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #12)
&gt; (In reply to zalan from comment #11)
&gt; &gt; &gt;there was a preference for doing -1 -&gt; Optional changes, which is also my preference
&gt; &gt; that&apos;s absolutely my preference too. just not in this patch.
&gt; 
&gt; Sure, makes sense. I&apos;ll remove that part tomorrow and check nothing breaks :)
Thanks. Let me just r+/cq- this patch so that tomorrow you don&apos;t need to ask for review again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746404</commentid>
    <comment_count>14</comment_count>
      <attachid>424993</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2021-04-02 00:30:27 -0700</bug_when>
    <thetext>Created attachment 424993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746415</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 01:29:53 -0700</bug_when>
    <thetext>commit-queue failed to commit attachment 424993 to WebKit repository. To retry, please set cq+ flag again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746425</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 02:07:46 -0700</bug_when>
    <thetext>Committed r275413: &lt;https://commits.webkit.org/r275413&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 424993.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746426</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-02 02:08:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/76143175&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424534</attachid>
            <date>2021-03-29 09:18:05 -0700</date>
            <delta_ts>2021-03-30 06:27:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133932-20210329181803.patch</filename>
            <type>text/plain</type>
            <size>70438</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGIyYTgwNGNjYzUxYjU4
ODNmMGUyMzY5MmJjOWExZThlYzVkMDAyZi4uZGM3Y2ZiNDg2OGZmOTMzMjJiMTMzYTRmNzc1ZDUy
NDQ0ZWM3NjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAzLTI3ICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgbGF5b3V0OiBTd2l0
Y2ggaW5saW5lcycgYmFzZWxpbmUgcG9zaXRpb25pbmcgZnJvbSBpbnQgdG8gTGF5b3V0VW5pdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzkzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUC4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckF0dGFjaG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQnV0
dG9uOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QnV0dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpi
YXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OmJhc2VsaW5lUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGU6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFzZWxpbmVQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorCiAyMDIx
LTAzLTI2ICBJYW4gR2lsYmVydCAgPGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIERpcnR5IGxh
eW91dCBmb3IgZmxvYXRpbmcgY2hpbGRyZW4gb2YgaW5saW5lIG9uIGZ1bGwgbGF5b3V0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCmlu
ZGV4IDE1NDAzYTg1ZWRlZmVlYTRhY2NiYjNjNTM0ZDU1ZGIwMGVhOWYyOGMuLmE4MWU0ZmY2M2E2
ZDkwNzQ5N2ZkY2QzMDNjMzkzNWUyZTcyNWIyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCkBAIC02NSwxNCArNjUsMTYgQEAg
TGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmxvZ2ljYWxBc2NlbnRGb3JDaGlsZChj
b25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6
OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdyaWRBeGlzIGJhc2VsaW5l
QXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IG1hcmdpbiA9IGlzRGVzY2VudEJhc2VsaW5l
Rm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBtYXJnaW5VbmRlckZvckNoaWxkKGNoaWxk
LCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3ZlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMp
OwotICAgIExheW91dFVuaXQgYmFzZWxpbmUoaXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hp
bGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVl
T3IoLTEpIDogLTEpOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJhc2VsaW5lOworICAgIGlm
IChpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSkK
KyAgICAgICAgYmFzZWxpbmUgPSBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpOwogICAgIC8vIFdl
IHRha2UgYm9yZGVyLWJveCdzIHVuZGVyIGVkZ2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCi0gICAg
aWYgKGJhc2VsaW5lID09IC0xKSB7CisgICAgaWYgKCFiYXNlbGluZSkgewogICAgICAgICBpZiAo
aXNIb3Jpem9udGFsQmFzZWxpbmVBeGlzKGJhc2VsaW5lQXhpcykpCiAgICAgICAgICAgICByZXR1
cm4gaXNGbGlwcGVkV3JpdGluZ01vZGUobV9ibG9ja0Zsb3cpID8gY2hpbGQuc2l6ZSgpLndpZHRo
KCkudG9JbnQoKSArIG1hcmdpbiA6IG1hcmdpbjsKICAgICAgICAgcmV0dXJuIGNoaWxkLnNpemUo
KS5oZWlnaHQoKSArIG1hcmdpbjsKICAgICB9Ci0gICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2lu
OworICAgIHJldHVybiAqYmFzZWxpbmUgKyBtYXJnaW47CiB9CiAKIExheW91dFVuaXQgR3JpZEJh
c2VsaW5lQWxpZ25tZW50OjpkZXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwg
TGF5b3V0VW5pdCBhc2NlbnQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKaW5kZXggMWE0NTc5YjI5MjQ0MGVkZDRmNmVkYzNk
NjM2MDA0NzJhZGZkODE0Mi4uOTMyNDFlMTZkYzg3NWVlNDI0NTNmZWQ4MDEzMDQ4NTM2NDJlNGU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKQEAgLTE0NSw3ICsxNDUs
NyBAQCBmbG9hdCBJbmxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLWludCBJbmxpbmVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSkgY29uc3QKK0xheW91dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJveE1v
ZGVsT2JqZWN0KCktPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBtX2JpdGZpZWxkcy5m
aXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVCb3guaAppbmRleCA4MTY3ZTRkZDRhYWZkNDc0YWM5ZTJjZDdmMmFmZWZkOGExMTNkNjE2Li40
ZTU4NTljYWE2YmFiNTlmYTcxYjIwNDY0Mjg2YTA4NDE1ODY1NDRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUJveC5oCkBAIC0yMDQsNyArMjA0LDcgQEAgcHVibGljOgogICAgIEZsb2F0
UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBG
bG9hdFJlY3QobV90b3BMZWZ0LngoKSwgbV90b3BMZWZ0LnkoKSwgbV9sb2dpY2FsV2lkdGgsIGxv
Z2ljYWxIZWlnaHQoKSkgOiBGbG9hdFJlY3QobV90b3BMZWZ0LnkoKSwgbV90b3BMZWZ0LngoKSwg
bV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSk7IH0KICAgICBGbG9hdFJlY3QgZnJhbWVS
ZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQoKSwgc2l6ZSgpKTsgfQogCi0g
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIExheW91
dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0
OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyNGRl
NTE1MDM2NDAwMTgwNWNjYmMyZDBjZTc0OTI0MzY4OWRhYzkyLi4yNmU2Yzg0MmE1MTdlZDQyMmM4
MjQyMTdmODlhMjFkMmNmNzUwMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpzZXRM
b2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiAgICAgZ1RleHRCb3hl
c1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJlY3QpOwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0
VW5pdCBJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGlu
ZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRleCAwZjcxN2JkNzZiMDEw
OWQxZGNlNDMwYzgxNDE3MDIzOGJhYWI5MDA3Li42NTRkODc3YWQ4ZjAzZTdjNWU1ZDg1ODc1YTIw
YTMyOTRjMGFkNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgK
QEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBh
cmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRCb3gqIGZpcnN0LCBjb25zdCBJbmxpbmVUZXh0Qm94
KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5zdGFydCgpIDwgc2Vjb25kLT5zdGFydCgpOyB9CiAK
LSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOworICAg
IExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOwog
ICAgIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0IGZpbmFsOwogCiAgICAgT3B0aW9uYWw8
Ym9vbD4gZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmlu
ZGV4IGM5MmZlYTgzNmI3ZTdjODQ3ZTUyM2E0YTU5MTJlYzk4NTM5OTVlNDQuLmY5NjViOTg5OWJl
MmU4NWE3YzdlNDYyNmFhMGRhNDIxM2RjOWVjZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJB
dHRhY2htZW50OjppbnZhbGlkYXRlKCkKICAgICByZXBhaW50KCk7CiB9CiAKLWludCBSZW5kZXJB
dHRhY2htZW50OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckF0dGFj
aG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9u
TW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gdGhlbWUoKS5hdHRh
Y2htZW50QmFzZWxpbmUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJBdHRhY2htZW50LmgKaW5kZXggZDMyOTIyYTYwYjI1MTQ4ZjNlYTFmMmZjMzAxMWNmMzRmMGEx
YmYyMC4uNTBkZDkyNGIzZWFlNzEyZmJiMGRhM2Y3YzFjMGIzMmVhMTY3YmI1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCkBAIC01NCw3ICs1NCw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwogCi0gICAgaW50IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBtX21pbmltdW1JbnRyaW5zaWNX
aWR0aDsKICAgICBib29sIG1fc2hvdWxkRHJhd0JvcmRlciB7IHRydWUgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDgwMTQwODUyNThmYTdhMmM4NDAwMjY2
YTQ3MmQzNjliMDU1ZDAxZDYuLmRmMDcwODk5MWEzNDljOTIwZTU5ZmM0ZWY4MzJhNzdjMjIyZTdl
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQ4MSw3
ICsyNDgxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bGluZUhlaWdodChib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLAogICAgIHJldHVybiBzdHlsZSgpLmNv
bXB1dGVkTGluZUhlaWdodCgpOwogfQogCi1pbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9u
LCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gSW5s
aW5lIGJsb2NrcyBhcmUgcmVwbGFjZWQgZWxlbWVudHMuIE90aGVyd2lzZSwganVzdCBwYXNzIG9m
ZiB0bwogICAgIC8vIHRoZSBiYXNlIGNsYXNzLiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0
aG91Z2ggd2UncmUgdGhlIHJvb3QgbGluZQpAQCAtMjUxNiw3ICsyNTE2LDcgQEAgaW50IFJlbmRl
ckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAgIHJldHVybiBzY3JvbGxhYmxlQXJlYS0+aG9yaXpv
bnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiAg
ICAgICAgIH07CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJh
c2VsaW5lKCkgPyBPcHRpb25hbDxpbnQ+KCkgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlv
bik7CisgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJhc2VsaW5lUG9zID0gaWdub3JlQmFz
ZWxpbmUoKSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KCkgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRp
cmVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNEZXByZWNhdGVkRmxleGlibGVCb3go
KSkgewogICAgICAgICAgICAgLy8gSGlzdG9yaWNhbGx5LCB3ZSBkaWQgdGhpcyBjaGVjayBmb3Ig
YWxsIGJhc2VsaW5lcy4gQnV0IHdlIGNhbid0CkBAIC0yNTI2LDcgKzI1MjYsNyBAQCBpbnQgUmVu
ZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsIExpbgogICAgICAgICAgICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIHVzZSB0
aGlzIGZvciBhbGwgdXNlcyBvZiBkZXByZWNhdGVkIGZsZXhib3guCiAgICAgICAgICAgICBMYXlv
dXRVbml0IGJvdHRvbU9mQ29udGVudCA9IGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJv
cmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgpIDogYm9yZGVyUmlnaHQo
KSArIHBhZGRpbmdSaWdodCgpICsgY29udGVudFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoYmFz
ZWxpbmVQb3MgJiYgYmFzZWxpbmVQb3MudmFsdWUoKSA+IGJvdHRvbU9mQ29udGVudCkKLSAgICAg
ICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgICAgICAg
ICBiYXNlbGluZVBvcyA9IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGJhc2VsaW5lUG9zKQogICAgICAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jp
em9udGFsTGluZSA/IG1hcmdpblRvcCgpICsgYmFzZWxpbmVQb3MudmFsdWUoKSA6IG1hcmdpblJp
Z2h0KCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpOwpAQCAtMjUzNiw3ICsyNTM2LDcgQEAgaW50IFJl
bmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJv
b2wgZmlyc3RMaW5lLCBMaW4KIAogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0
TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0IEZvbnRN
ZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0dXJuIGZv
bnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBk
aXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsK
KyAgICByZXR1cm4gTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSAr
IChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZv
bnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRvSW50KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVy
QmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUs
IExheW91dFVuaXQgcmVwbGFjZWRIZWlnaHQpIGNvbnN0CkBAIC0yNTUxLDQzICsyNTUxLDQzIEBA
IExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVy
KGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+
KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0
aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRl
cmlvckxpbmVCb3hlcykpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrOjpmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYm
ICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY3Vy
ciA9IGZpcnN0Q2hpbGRCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5leHRTaWJsaW5nQm94KCkp
IHsKICAgICAgICAgaWYgKCFjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkp
IHsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3VsdCA9IGN1cnItPmZpcnN0TGlu
ZUJhc2VsaW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oY3Vyci0+
bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3Jk
aW5hdGUgc3BhY2UuCisgICAgICAgICAgICBpZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gcmVzdWx0
ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTGF5
b3V0VW5pdChjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0
ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9
CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJl
Y3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1
bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0
aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIGJvb2wgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IGZh
bHNlOwogICAgIGZvciAoYXV0byogYm94ID0gbGFzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94
LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoYm94LT5pc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaGF2
ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7Ci0gICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3Vs
dCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKSkKLSAgICAgICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KGJveC0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkp
OyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgIGlmIChPcHRp
b25hbDxMYXlvdXRVbml0PiByZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURp
cmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCgoYm94LT5sb2dpY2FsVG9w
KCkgKyByZXN1bHQudmFsdWUoKSkudG9JbnQoKSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRp
bmF0ZSBzcGFjZS4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFz
TGluZUlmRW1wdHkoKSkgewogICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0
eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oZm9udE1l
dHJpY3MuYXNjZW50KCkKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQoTGF5b3V0VW5pdChmb250
TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGly
ZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0
KCkpIC8gMgotICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/
IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdo
dCgpKSk7CisgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
Ym9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0
KCkpKS50b0ludCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAg
IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNSZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVt
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBmOWIyZDk4ZGQ5
YTllNTlkZTFjYWU5MzYyMTI3NmM2OGQ0MTMzZWQ3Li5lZmMwMTU0ZGI4Njg3OWRmMzM3MGFmOTcz
ZjYyOWUwNGY4NWI2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApA
QCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1
bmN0aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3IgaW5saW5lLWJsb2NrLgogICAgIExheW91dFVuaXQg
bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlv
bk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIGludCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
LCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQ
b3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5p
dCBtaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlv
dXRVbml0IHJlcGxhY2VkSGVpZ2h0KSBjb25zdDsKIApAQCAtMzUzLDggKzM1Myw4IEBAIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQm
IG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7
CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJy
aWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9u
cyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2Nl
bmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbElu
Zm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNGQ0MjQzNDNhYTYzYmM0ZTU2ZDdlY2M5OTJlMGNhMTdk
OGFiZmMwNC4uMGQxM2IxNWVjNzI4MDA1ZGUyMDU4NTAwOGRiZTg0ZDY5MDUyYjNmYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxMDYsNyAr
MzEwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5n
ZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuCiAgICAgfQogfQogCi1PcHRpb25hbDxp
bnQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7
CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpICYmICFpc0dyaWRJ
dGVtKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMTE5LDE2ICszMTE5LDE2
IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAobW9k
ZXJuTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gZmxvb3JUb0ludChtb2Rlcm5MaW5lTGF5
b3V0KCktPmZpcnN0TGluZUJhc2VsaW5lKCkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChm
bG9vclRvSW50KG1vZGVybkxpbmVMYXlvdXQoKS0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkpOwogI2Vu
ZGlmCiAKICAgICBBU1NFUlQoZmlyc3RSb290Qm94KCkpOwogICAgIGlmIChzdHlsZSgpLmlzRmxp
cHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZpcnN0Um9vdEJveCgpLT5s
b2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuZGVzY2VudChmaXJz
dFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpOwotICAgIHJldHVybiBmaXJzdFJvb3RCb3goKS0+
bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJz
dFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChm
aXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmlj
cygpLmRlc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKSk7CisgICAgcmV0dXJu
IExheW91dFVuaXQoZmlyc3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxl
KCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKSk7
CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5l
KExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitPcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAm
JiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMTQ0LDcg
KzMxNDQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aQogICAgIGZsb2F0IGJveEhlaWdodCA9
IGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBoZWlnaHQoKSArIG1fbWFyZ2luQm94
LmJvdHRvbSgpIDogd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKTsKICAgICBmbG9hdCBsYXN0
QmFzZWxpbmUgPSAwOwogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSkgewotICAgICAgICBPcHRp
b25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUgPSBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tC
YXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAgICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5s
aW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGxpbmVE
aXJlY3Rpb24pOwogICAgICAgICBpZiAoIWlubGluZUJsb2NrQmFzZWxpbmUpCiAgICAgICAgICAg
ICByZXR1cm4gaW5saW5lQmxvY2tCYXNlbGluZTsKICAgICAgICAgbGFzdEJhc2VsaW5lID0gaW5s
aW5lQmxvY2tCYXNlbGluZS52YWx1ZSgpOwpAQCAtMzE1Myw5ICszMTUzLDkgQEAgT3B0aW9uYWw8
aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUgbGluZURpcmVjdGkKICAgICAgICAgICAgIGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgY29uc3QgYXV0byYg
Zm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8aW50Pihmb250TWV0cmljcy5hc2NlbnQoKQorICAgICAgICAgICAg
cmV0dXJuIExheW91dFVuaXQoTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAg
ICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZklu
dGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKLSAgICAgICAgICAg
ICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKTsKKyAgICAgICAg
ICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21wbGV4TGluZUxheW91dCgpKSB7CkBAIC0z
MTczLDcgKzMxNzMsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxv
Y2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aQogICAgIC8vIEFjY29yZGlu
ZyB0byB0aGUgQ1NTIHNwZWMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1s
LCB3ZSBzaG91bGRuJ3QgYmUgcGVyZm9ybWluZyB0aGlzIG1pbiwgYnV0IHNob3VsZAogICAgIC8v
IGluc3RlYWQgYmUgcmV0dXJuaW5nIGJveEhlaWdodCBkaXJlY3RseS4gSG93ZXZlciwgd2UgZmVl
bCB0aGF0IGEgbWluIGhlcmUgaXMgYmV0dGVyIGJlaGF2aW9yIChhbmQgaXMgY29uc2lzdGVudAog
ICAgIC8vIGVub3VnaCB3aXRoIHRoZSBzcGVjIHRvIG5vdCBjYXVzZSB0b25zIG9mIGJyZWFrYWdl
cykuCi0gICAgcmV0dXJuIHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3ZlcmZsb3c6OlZpc2libGUg
PyBsYXN0QmFzZWxpbmUgOiBzdGQ6Om1pbihib3hIZWlnaHQsIGxhc3RCYXNlbGluZSk7CisgICAg
cmV0dXJuIExheW91dFVuaXQoc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6VmlzaWJs
ZSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWluKGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKSk7CiB9
CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0
ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRl
eCA1N2YyNjljOWIyODhjMDE1MjA0OTg1ZmRlYjZmNWNhNzVjOWQzMTliLi5mNmE3NjQ5ZTkyNjJh
ODFkZGM0M2JjYjBmMGRlNDU5OGFlYjAwMTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrRmxvdy5oCkBAIC00NTAsOCArNDUwLDggQEAgcHJvdGVjdGVkOgogCiAgICAg
dm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzTXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtdWx0aUNvbHVtbkZsb3coKTsgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzZjMyNDY2ZGFmYjVmOGU3MjFkNWNk
MTI5NzAxZWMwMzQ3ZTVlMzY3Li5lMGY1NDdhZGYzY2FkOWQ3ZDEwODMzZTdlZTE0MmI3Nzc5NWNl
NWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNDg2Niw3ICs0
ODY2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmxpbmVIZWlnaHQoYm9vbCAvKmZpcnN0TGlu
ZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24KICAgICByZXR1cm4gMDsKIH0KIAotaW50
IFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBi
b29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgLypmaXJz
dExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8q
bGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAogewogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAg
ICAgICAgYXV0byByZXN1bHQgPSByb3VuZFRvSW50KGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGlu
ZSA/IG1fbWFyZ2luQm94LnRvcCgpICsgaGVpZ2h0KCkgKyBtX21hcmdpbkJveC5ib3R0b20oKSA6
IG1fbWFyZ2luQm94LnJpZ2h0KCkgKyB3aWR0aCgpICsgbV9tYXJnaW5Cb3gubGVmdCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjNWE4ZDhmYzk1N2RkZTM5MDYyYzAz
ZWExZmFmN2M2ZGNhY2NlNTEyLi4xZTUxMWM5YzFkYzhiYmZjODJiNTQ5OGVjZjExYTJiNWIwMThj
MjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC01NDEsOCArNTQxLDgg
QEAgb3ZlcnJpZGU7CiAgICAgCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xvc2luZ0Zsb2F0UGFpbnRp
bmdMYXllcigpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsgfQotICAgIHZpcnR1
YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBj
b25zdCB7IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBz
aG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5s
aW5lLWJsb2NrLgorICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOyB9CisgICAgdmly
dHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOyB9IC8vIFJldHVy
bnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNraXAgdGhpcyBib3ggd2hlbiBjb21wdXRpbmcgdGhlIGJh
c2VsaW5lIG9mIGFuIGlubGluZS1ibG9jay4KIAogICAgIGJvb2wgc2hyaW5rVG9Bdm9pZEZsb2F0
cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMoKSBjb25zdDsKQEAgLTU1
NSw3ICs1NTUsNyBAQCBvdmVycmlkZTsKICAgICBib29sIGlzRmxleEl0ZW1JbmNsdWRpbmdEZXBy
ZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlzRmxvYXRpbmdPck91dE9m
Rmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJveElu
Y2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogICAgIAogICAgIExheW91dFVuaXQgbGluZUhlaWdodChi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBvZmZzZXRM
ZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmgKaW5kZXggNThjNDg5YWU0ZWRiZGUwMDYxYWRhZWFmNjljNzBmZjk3YTFmN2M1OC4uMDY1
N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVjNWQ4YjcwODMwZjFmNWMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTIxNiw3ICsyMTYsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgdG8gZGV0ZXJtaW5l
IGxpbmUgaGVpZ2h0IGFuZCBiYXNlbGluZSBwb3NpdGlvbi4KICAgICB2aXJ0dWFsIExheW91dFVu
aXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0
dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0ID0gMDsKIAogICAgIHZv
aWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3Jt
U3RhdGUmKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QnV0dG9uLmNwcAppbmRleCA3ZWQ4MTVjNzZhNGUxMjk3YTZkMTg2YTMyMjJmMDc1MjZkNzQ0YjE2
Li4yMTM2MTAwNzZhNTdiMTUwYWNjMjRjMTFhODkxNTU2YjZkMGM1MjRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRp
YyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNvbnN0IFJlbmRlckJveCYg
Ym94LCBMaW5lRGlyZWN0aW9uCiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGlu
ZSA/IGJveC5ib3JkZXJUb3AoKSArIGJveC5wYWRkaW5nVG9wKCkgKyBib3guY29udGVudEhlaWdo
dCgpIDogYm94LmJvcmRlclJpZ2h0KCkgKyBib3gucGFkZGluZ1JpZ2h0KCkgKyBib3guY29udGVu
dFdpZHRoKCk7CiB9CiAKLWludCBSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1v
ZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJ1dHRvbjo6YmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9u
TW9kZSkgY29uc3QKIHsKICAgICAvLyBXZSBjYW5ub3QgcmVseSBvbiBSZW5kZXJGbGV4aWJsZUJv
eDo6YmFzZWxpbmVQb3NpdGlvbigpIGJlY2F1c2Ugb2YgZmxleGJveGVzIGhhdmUgc29tZSBzcGVj
aWFsIGJlaGF2aW9yCiAgICAgLy8gcmVnYXJkaW5nIGJhc2VsaW5lcyB0aGF0IHNob3VsZG4ndCBh
cHBseSB0byBidXR0b25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmlu
ZGV4IGU5YzRjMGU5OTM5YWI4NDUxZjY1MGE5OWZmYTY1NTEwY2VkNjk3NDIuLmE0OTM5YzRhMDA3
NTAyYTU3ODk0OWZkYzVjYzY1NmNjNzk1ZDUzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2Nr
KiBpbm5lclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lci5nZXQoKTsgfQogICAgIHZv
aWQgc2V0SW5uZXJSZW5kZXJlcihSZW5kZXJCbG9jayYpOwogCi0gICAgaW50IGJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExp
bmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRl
OworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVt
ZW50KCkgY29uc3QgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94LmNwcAppbmRleCAyY2M5M2Q2YWQ5M2EwYWQ1MjJjOTA4NTE4ODczYjI5MTJk
N2ZjMTIxLi5lZDAxMmJkNzhkZWViNGRkY2QwYjQ0N2Q4ODQ0NDZhNjUzOGY2Y2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE0NCwx
MiArMTQ0LDEyIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0CiAgICAgbWluTG9naWNhbFdpZHRo
ICs9IHNjcm9sbGJhcldpZHRoOwogfQogCi1zdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVG
cm9tQm9yZGVyQm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24pCitzdGF0aWMgTGF5b3V0VW5pdCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJv
eChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQogewot
ICAgIHJldHVybiAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm94LnNpemUoKS5oZWln
aHQoKSA6IGJveC5zaXplKCkud2lkdGgoKSkudG9JbnQoKTsKKyAgICByZXR1cm4gKGRpcmVjdGlv
biA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgpLndp
ZHRoKCkpOwogfQogCi1pbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGF1dG8gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNl
bGluZSgpOwogICAgIGlmICghYmFzZWxpbmUpCkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBpbnQgUmVu
ZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5l
RGlyZWN0aW9uTW9kZSBkaQogICAgIHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVjdGlv
biA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9JbnQo
KTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBt
X251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwKQotICAgICAgICByZXR1cm4g
T3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsK
ICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGludCBjaGlsZE51
bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZp
cnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKQEAgLTE4MCwy
NSArMTgwLDI1IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRV
bml0PigpOwogCiAgICAgaWYgKCFpc0NvbHVtbkZsb3coKSAmJiAhbWFpbkF4aXNJc0NoaWxkSW5s
aW5lQXhpcygqYmFzZWxpbmVDaGlsZCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGNy
b3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxv
Z2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFz
ZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCk7CiAgICAgaWYgKGlzQ29s
dW1uRmxvdygpICYmIG1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoKmJhc2VsaW5lQ2hpbGQpKQot
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihtYWluQXhpc0V4dGVudEZvckNoaWxkKCpiYXNl
bGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVy
biBtYWluQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQt
PmxvZ2ljYWxUb3AoKTsKIAotICAgIE9wdGlvbmFsPGludD4gYmFzZWxpbmUgPSBiYXNlbGluZUNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJhc2Vs
aW5lID0gYmFzZWxpbmVDaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsKICAgICBpZiAoIWJhc2Vs
aW5lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyB8ZGlyZWN0aW9ufCBpbnRv
IGZpcnN0TGluZUJveEJhc2VsaW5lIGFuZCBzdG9wIGJhaWxpbmcgb3V0IGlmIHdlJ3JlIGEgd3Jp
dGluZyBtb2RlIHJvb3QuCiAgICAgICAgIC8vIFRoaXMgd291bGQgYWxzbyBmaXggc29tZSBjYXNl
cyB3aGVyZSB0aGUgZmxleGJveCBpcyBvcnRob2dvbmFsIHRvIGl0cyBjb250YWluZXIuCiAgICAg
ICAgIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
KCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZTsKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKmJhc2VsaW5lQ2hpbGQs
IGRpcmVjdGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOworICAgICAgICByZXR1
cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKmJhc2VsaW5lQ2hpbGQsIGRpcmVj
dGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IE9wdGlvbmFsPGludD4oYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxU
b3AoKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5l
Q2hpbGQtPmxvZ2ljYWxUb3AoKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVC
b3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CitPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXgg
ZTkzZWU3YmFmZmZlNjRmNmEwN2Y2YjAxYjgwNTNmZmQ0OTEwZGU3ZS4uMWMyNTE5MTZkNTMyYTFm
MGQyZjNmNWE1ZTY5YjBiNzVlYTg4Njg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIGJvb2wg
Y2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0
IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGlu
ZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2Rl
ID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVu
Y2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoaXRUZXN0Q2hpbGRy
ZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rp
b24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4
IGU2MjZkOTliNDQ5MTUzOTNmNTYzNDk3NzAxOWRlOTQyODA4YTRhNzkuLmFmNjRkYTM4ZmQ3YzU5
YzE3NGZkYjM3M2RhZTA3MzZkN2UzNDlhNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyR3JpZC5jcHAKQEAgLTEyMzMsNyArMTIzMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6dXBkYXRl
QXV0b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkKQogfQogCiAv
LyBGSVhNRTogVGhpcyBsb2dpYyBjb3VsZCBiZSByZWZhY3RvcmVkIHNvbWVob3cgYW5kIGRlZmlu
ZWQgaW4gUmVuZGVyQm94Lgotc3RhdGljIGludCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRl
ckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQor
c3RhdGljIExheW91dFVuaXQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goY29uc3Qg
UmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikKIHsKICAgICByZXR1
cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkgOiBi
b3guc2l6ZSgpLndpZHRoKCkpLnRvSW50KCk7CiB9CkBAIC0xMjUzLDcgKzEyNTMsNyBAQCBib29s
IFJlbmRlckdyaWQ6OmlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gm
IGNoaWxkLCBHcmlkQXhpcyBiYQogfQogCiAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBzaGFyZWQg
YnkgUmVuZGVyRmxleGlibGVCb3gsIHNvIGl0IG1pZ2h0IGJlIHJlZmFjdG9yZWQgc29tZWhvdy4K
LWludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIG1vZGUpIGNvbnN0CitM
YXlvdXRVbml0IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbW9kZSkgY29u
c3QKIHsKICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKTsKICAgICBhdXRvIGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKTsKQEAgLTEy
NjMsNyArMTI2Myw3IEBAIGludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uCiAgICAgcmV0dXJuIGJhc2Vs
aW5lLnZhbHVlKCkgKyAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkg
OiBtYXJnaW5SaWdodCgpKS50b0ludCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6
OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdy
aWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJv
b3QoKSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpAQCAtMTI5NCwxMiArMTI5NCwxMiBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNz
IHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQmFzZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQg
aWYgd2UncmUgYSB3cml0aW5nCiAgICAgICAgIC8vIG1vZGUgcm9vdC4gVGhpcyB3b3VsZCBhbHNv
IGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBncmlkIGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRh
aW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uID0gaXNIb3Jpem9udGFs
V3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lOwotICAgICAgICBy
ZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKmJhc2VsaW5lQ2hpbGQsIGRp
cmVjdGlvbikgKyBsb2dpY2FsVG9wRm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpLnRvSW50KCk7Cisg
ICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVD
aGlsZCwgZGlyZWN0aW9uKSArIGxvZ2ljYWxUb3BGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCk7CiAg
ICAgfQotICAgIHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNh
bFRvcCgpLnRvSW50KCk7CisgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNo
aWxkLT5sb2dpY2FsVG9wKCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyR3JpZDo6aW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKK09wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBiYjg1YzY3Yzg4MjQ1YzcxNTkzZTAwYjFmYmI2NDkx
ZDRkNjI4ZTBlLi4xZGJlOTFjNzhlNmY2ZjQwODRiMDZkNDliNGUwMzJjODQxZTdkNGNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTE2OSw5ICsxNjksOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgdXBkYXRlQXV0b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRlZChSZW5k
ZXJCb3gmKTsKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJnaW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVu
ZGVyQm94Jik7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNJbmxpbmVCYXNlbGlu
ZUFsaWduZWRDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAogICAgIExheW91dFVuaXQg
Y29sdW1uQXhpc0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDJhY2EwN2Qy
YTczYjRmOTE4MzlhNWE5ZDc1MGUxOTY2MGM2YjZjMGQuLjNmODk2MzIzMzA4ZTk4NzI1MmUwNDlh
MzY2Nzg3NjY0YWMwZDA5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwCkBAIC0xMTYyLDExICsxMTYyLDExIEBAIExheW91dFVuaXQgUmVuZGVySW5saW5lOjps
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvCiAg
ICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiB9CiAKLWludCBSZW5kZXJJ
bmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBs
aW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2Rl
KSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZp
cnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBm
b250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNz
LmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24s
IGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1
cm4gKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RM
aW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkp
IC8gMikudG9JbnQoKTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZvcklu
Rmxvd1Bvc2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAzYmM1MWEwZDQ2MmZmY2RlNGM0
ZDdmNmUwNDdlNDg5Y2MwYzFlNDcwLi4yZDRlNzYyNGNhZWI4YmE1NDBiMWExMWNjMTY3N2EzOTE1
ZDE1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxk
KFJlbmRlck9iamVjdCYgY2hpbGQpIGZpbmFsIHsgbV9saW5lQm94ZXMuZGlydHlMaW5lc0Zyb21D
aGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQogCiAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0
KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgaW50IGJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExp
bmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwor
ICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVIaXRUZXN0UmVz
dWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IDNmOTZlYjYzMDc2
YjA2NzEyMWY4NTFlM2NjZjc3ZDcwODY3NzU4NGMuLmU3MjhkMTQ5ZjljNGFmNDY1ODQ2MDBkOGVm
Y2U4NzRmM2UyOTI0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6
OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKICAg
ICByZXR1cm4gbV9jYWNoZWRMaW5lSGVpZ2h0OwogfQogCi1pbnQgUmVuZGVyTGluZUJyZWFrOjpi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0
aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGluZUJyZWFrOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExp
bmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1l
dHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOwotICAgIHJldHVybiBmb250TWV0cmljcy5hc2Nl
bnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5l
UG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDI7CisgICAgcmV0dXJuIChm
b250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwg
ZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIp
LnRvSW50KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJM
aW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmgKaW5kZXggZTU5YmFmMjIxMjFiMTYxZWNhYTY3NGE4NzUzNDI2MzU0ZjY4
YzljZS4uZTc1M2U0NTUwMGUwZmM5ZDJjZWRjZmYxZGVkOTY1ZWM2YjRlNTU5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAtNjcsNyArNjcsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgZmluYWw7CiAKICAg
ICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIExheW91dFVuaXQgbWFyZ2luQm90dG9tKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guY3BwCmluZGV4IDA2NGY4MTQ4ODlhNTQ3ZGZkZWJkMzZlZWYzYzg0M2ZlN2QzYWIzNTIu
Ljk1MGIxZDdlMzFkMmMwY2Q4NDc3ZGQxYWI2YTM4YzUwZjU3MmRmOWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBSZW5k
ZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJMaXN0Qm94Ojpjb21wdXRl
TG9naWNhbEhlaWdodChMYXlvdQogICAgIHJldHVybiBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2Fs
SGVpZ2h0KGhlaWdodCwgbG9naWNhbFRvcCk7CiB9CiAKLWludCBSZW5kZXJMaXN0Qm94OjpiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3Np
dGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGxpbmVEaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5l
VHlwZSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGJhc2Vs
aW5lQWRqdXN0bWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5o
CmluZGV4IGM2NzA0MmQxZGVhYjdlYWY5ZGIzMzhjZDIzMzQ4ZDUwN2YyNDczMjUuLjIxYmJhYTI3
ODA4NjA5ODFlMTgyYWYwZjk5MjZjNGYyMTdlMTM0MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RCb3guaApAQCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lk
dGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwotICAgIGludCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBv
dmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3Np
dGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogICAgIExvZ2ljYWxFeHRlbnRD
b21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWln
aHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxh
eW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RN
YXJrZXIuY3BwCmluZGV4IDE1ODEyMTFkYmI2YzcyZmQ4YjFmYWIzNTkzMWQyYmEyMDk5MDZjMzgu
LjM3NDE3ZmRmNDdiOWRiNjNhMmY2YmUzY2U0YjQwMDRjYmNiMjI2ZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAgLTE3OTEsNyArMTc5MSw3
IEBAIExheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdodChib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0CiAgICAgcmV0dXJuIFJlbmRlckJveDo6bGluZUhl
aWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSk7CiB9CiAKLWludCBS
ZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3Np
dGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGlzdE1h
cmtlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxp
bmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0ltYWdlKCkpCiAgICAgICAgIHJl
dHVybiBtX2xpc3RJdGVtLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5l
LCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAppbmRleCAwODQ0ZTk3NmRjZTBmZjQ5ODcy
ZGUwYzRlZThhMzczZjkzZDU3MWQ2Li45ODFlOTBlZTE0MThiZDQ2YmVhMDNmM2IzNGI0MzJjY2Zi
ZjMwMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgK
QEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxl
bWVudEJveD4gY3JlYXRlSW5saW5lQm94KCkgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRVbml0IGxp
bmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25N
b2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQg
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4g
IWlzSW1hZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApp
bmRleCBiZmNiOTkwZjk5M2NkNWNiMWJkZjljZWM1NmFmNTVhMWVjYWMxZTZiLi5hNzE5ZjAzZjdm
MTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI1LDEyICsxMjUsMTIgQEAgcHJpdmF0ZToKIAogICAg
IC8vIEZsZXhib3ggZGVmaW5lcyBiYXNlbGluZXMgZGlmZmVyZW50bHkgdGhhbiByZWd1bGFyIGJs
b2Nrcy4KICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIG1lbnVsaXN0cyBuZWVk
IHRvIGRvIHRoZSByZWd1bGFyIGJsb2NrIGJlaGF2aW9yLgotICAgIGludCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUK
KyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lLCBi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25N
b2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIFJlbmRl
ckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwg
cG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7
IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5l
QmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmly
c3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CiAKICAg
ICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlzdEluZGV4LCBDb2xvciYs
IGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDRkMjc4ZDE3MmZkM2UzNzhiNzA1
MDRkMWE0YjQ5NGY5MzdkZjlmOWEuLjQ3MTY5ZWRmOThlMTQyOGM0YTA3NzBmMmY0ZWZjMGI1OGQ4
MTNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC02
MSw3ICs2MSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQmIFJlbmRlclNsaWRlcjo6ZWxlbWVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9u
eW1vdXMoKSk7CiB9CiAKLWludCBSZW5kZXJTbGlkZXI6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJTbGlkZXI6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBQYXRjaCB0aGlzIGZ1bmN0aW9u
IGZvciB3cml0aW5nLW1vZGUuCiAgICAgcmV0dXJuIGhlaWdodCgpICsgbWFyZ2luVG9wKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKaW5kZXggYTMzNzQ5NmQ3NWY1ZmEw
NTg2MDI1NzIxOWZiN2JjMTRiNDZlNWRjYi4uM2JhMDUxMDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0
OTM3ZDMyYTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAt
NDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVyIjsgfQogICAgIGJvb2wgaXNTbGlkZXIo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGlu
ZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNv
bnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4
TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGEyMTQ4YzIzZjUxNjIz
M2M3NjQxYjMwMThmMzBkYmZmMDFhYzhlMjMuLjhmOGM1ZTNlMGU2NjQyOTIwNWJjMDE1ZTVhYjg1
NDc2ZmNlNDVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApA
QCAtMTQ3MSwzOSArMTQ3MSwzOSBAQCBSZW5kZXJCbG9jayogUmVuZGVyVGFibGU6OmZpcnN0TGlu
ZUJsb2NrKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotaW50IFJlbmRlclRhYmxl
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBv
c2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAogewogICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0g
ewogICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlw
ZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpOwogICAgIH0pOwogfQog
Ci1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGU6OmlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gVGFibGVz
IGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFuIGlubGluZS1ibG9jaydzIGJhc2VsaW5lLgot
ICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVu
aXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJhc2VsaW5lIG9mIGEgJ3RhYmxlJyBpcyB0aGUg
c2FtZSBhcyB0aGUgJ2lubGluZS10YWJsZScgYmFzZWxpbmUgcGVyIENTUyAzIEZsZXhib3ggKENT
UyAyLjEKICAgICAvLyBkb2Vzbid0IGRlZmluZSB0aGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIG9u
bHkgYW4gJ2lubGluZS10YWJsZScpLgogICAgIC8vIFRoaXMgaXMgYWxzbyBuZWVkZWQgdG8gcHJv
cGVybHkgZGV0ZXJtaW5lIHRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaWYgaXQgaGFzIGEgdGFibGUg
Y2hpbGQuCiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSkKLSAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAK
ICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAKICAgICBjb25zdCBSZW5kZXJUYWJsZVNl
Y3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMtPnRvcE5vbkVtcHR5U2VjdGlvbigpOwog
ICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50
PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAotICAgIGlmIChP
cHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5maXJzdExpbmVCYXNl
bGluZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pih0b3BOb25FbXB0eVNlY3Rpb24t
PmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOworICAgIGlmIChPcHRpb25hbDxMYXlv
dXRVbml0PiBiYXNlbGluZSA9IHRvcE5vbkVtcHR5U2VjdGlvbi0+Zmlyc3RMaW5lQmFzZWxpbmUo
KSkKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KHRvcE5vbkVtcHR5U2VjdGlv
bi0+bG9naWNhbFRvcCgpICsgYmFzZWxpbmUudmFsdWUoKSk7CiAKICAgICAvLyBGSVhNRTogQSB0
YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJhc2VsaW5lIHBlciBDU1MgMi4xLiBXaWxsIHRoaXMgcmV0
dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJl
dHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogfQogCiBMYXlvdXRSZWN0IFJlbmRlclRhYmxl
OjpvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyRnJh
Z21lbnRDb250YWluZXIqIGZyYWdtZW50LCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSBy
ZWxldmFuY3ksIFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5oCmluZGV4IDZmZTBjYWQyNTNkZTM0ZjExODUxZmVlOGZlYTQ3M2ZkZDY1M2Jh
MjMuLjg4MWE2NzU0OTNkNDc0YzYwYWVmZTQ5MjkxZGJhYzIzOGNlYmI2NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0yOTIsOSArMjkyLDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
Ym9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBj
b25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBv
aW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVuZGVyVGFibGVDb2wqIHNsb3dDb2xFbGVtZW50
KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBib29sKiBlbmRFZGdlKSBjb25zdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRl
eCAxZTE5YjNkYjM1MTFhMjlhZTZlY2Y2YzNlYjMzMzljNzczMDg1OWYxLi5kYmM4MTc5Y2E2OTA3
N2NhOWM2NmUxZjMyYTA4Y2Q0NjYyZjFhOWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtODY3LDIzICs4NjcsMjMgQEAgdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OnJlY2FsY091dGVyQm9yZGVyKCkKICAgICBtX291dGVyQm9yZGVy
RW5kID0gY2FsY091dGVyQm9yZGVyRW5kKCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFi
bGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fZ3JpZC5zaXplKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAg
ICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0gICAgaW50IGZpcnN0TGluZUJh
c2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5lOworICAgIExheW91dFVuaXQgZmlyc3RMaW5lQmFz
ZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAgICAgaWYgKGZpcnN0TGluZUJhc2VsaW5lKQot
ICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUgKyByb3VuZFRvSW50KG1fcm93UG9zWzBd
KTsKKyAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lICsgbV9yb3dQb3NbMF07CiAKLSAg
ICBPcHRpb25hbDxpbnQ+IHJlc3VsdDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiByZXN1bHQ7
CiAgICAgY29uc3QgUm93JiBmaXJzdFJvdyA9IG1fZ3JpZFswXS5yb3c7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmaXJzdFJvdy5zaXplKCk7ICsraSkgewogICAgICAgICBjb25zdCBDZWxs
U3RydWN0JiBjcyA9IGZpcnN0Um93LmF0KGkpOwogICAgICAgICBjb25zdCBSZW5kZXJUYWJsZUNl
bGwqIGNlbGwgPSBjcy5wcmltYXJ5Q2VsbCgpOwogICAgICAgICAvLyBPbmx5IGNlbGxzIHdpdGgg
Y29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwgJiYgY2VsbC0+Y29udGVu
dExvZ2ljYWxIZWlnaHQoKSkgewotICAgICAgICAgICAgaW50IGNhbmRpZGF0ZSA9IHJvdW5kVG9J
bnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsg
Y2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAgICBMYXlvdXRVbml0IGNh
bmRpZGF0ZSA9IGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwtPmJvcmRlckFuZFBhZGRpbmdCZWZv
cmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAgICAgICAgICByZXN1bHQg
PSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5kaWRhdGUpOwogICAgICAg
ICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oCmluZGV4IGUzZjk0NjdhYjEwNzBhMjFlM2MzNjNiYWNkNzI3MDAzZDZlOWE2ZjcuLjNhNjMw
NWJlYzc1Zjg5MDJlMDRjN2QzMDM1NzVlZDQ1OGNmZDZjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGlj
OgogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJvdygpIGNvbnN0OwogICAgIFJlbmRlclRhYmxl
Um93KiBsYXN0Um93KCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRkQ2VsbChSZW5kZXJUYWJs
ZUNlbGwqLCBSZW5kZXJUYWJsZVJvdyogcm93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCA2OWIxOTNiMWZmMjhiZjJkMGU1OGJlNmFlMzE1
MmRhOGQ5MjI5YTkwLi42YTM3YjBiM2U3ZDY2MDJkNTdlNjVmNjY2NWU3YzdhNTUzMGIyYWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaApAQCAtOTQs
MTIgKzk0LDEyIEBAIHB1YmxpYzoKICAgICB7IH0KICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29u
dHJvbElubmVyQ29udGFpbmVyKCkgPSBkZWZhdWx0OwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQor
ICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1v
ZGUgcG9zaXRpb24pIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gUmVuZGVy
QmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBw
b3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsg
fQotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVC
bG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJz
dExpbmVCYXNlbGluZSgpOyB9CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KIAogcHJp
dmF0ZToKICAgICBib29sIGlzRmxleGlibGVCb3hJbXBsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXggMjgzNWM3OTY0NmE2ZDU3Nzc3MmVjY2Q4ZDBh
Yjg0MmQ4Y2M5NWI1OS4uMjk4MzA3MDlkODA2MGM5YTMxY2VjYjc4YWE3MWIwNGY3OWQyMGEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmU6OmNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxp
CiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKiB0ZXh0QXJlYUVsZW1lbnQoKS5yb3dzKCkgKyBub25D
b250ZW50SGVpZ2h0OwogfQogCi1pbnQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25N
b2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1v
ZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmgKaW5kZXggNzIxYWY5ZjZhMzNmYWY0Yjg5Yzc1MWNiZTkyNDkzOGI0Y2QzYjA2OS4uNDQw
OTRjZTAzMjAzMWZlYzg2OWUzMjNkMzI4MTA2MDY0NWJjMWEwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBnZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3Zl
cnJpZGU7CiAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50TG9naWNhbFdpZHRoKGZsb2F0
IGNoYXJXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJv
bExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRl
bnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25N
b2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlv
dXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xp
bmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDQ5MjU5NWQzNDE4M2I5NDA3MmZiOTEwMDUzOTBh
YmNkYjExMDdhY2MuLjY0OTExMzBjY2RjYjU2NmVlY2E2ZmY4N2E5NThlZWJmMTk4MWQ1MmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTEwMSw3ICsx
MDEsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1pbnQgUm9vdElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBSb290SW5saW5lQm94Ojpi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHJlbmRlcmVyKCkuYmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGlzRmlyc3RM
aW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBv
c2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jv
b3RJbmxpbmVCb3guaAppbmRleCBlY2YyYTUwYmQ0Yjc4NjIxNDhlY2ZkMzBlZDFmZjNkZGY1NTVk
YWEyLi45Mjk0MDk2YzFkNTkwN2Y5ODBmMThhZGMwZDlhZjIxNmE2YTc5Yjc3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJs
aWM6CiAKICAgICBib29sIGlzSHlwaGVuYXRlZCgpIGNvbnN0OwogCi0gICAgaW50IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QgZmluYWw7CisgICAgTGF5
b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0
IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0IGZpbmFsOwogCiAgICAg
dm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIExheW91dFVuaXQgbGlu
ZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNGJh
ZTRkMmIyODI4YjY0ZjQ2ZmE2ZTFhZGY5ODM4NmEzYzQ3Y2U0Mi4uMDg0NTFmZmNkZWRlOGU4MGJl
NjAyMmE1NmM3MDA1ZmJjMzA1MDYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWlycm9ySWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jp
em9udGFsT2Zmc2V0LCBMYXlvdXQKICAgICByZXR1cm4gaG9yaXpvbnRhbE9mZnNldDsKIH0KIAot
aW50IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExp
bmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVy
TWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9u
TW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8vIG1hdGhtbC5jc3Mgc2V0cyBt
YXRoIHsgLXdlYmtpdC1saW5lLWJveC1jb250YWluOiBnbHlwaHMgcmVwbGFjZWQ7IGxpbmUtaGVp
Z2h0OiAwOyB9LCBzbyB3aGVuIGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9zaXRpb25PZkludGVyaW9y
TGluZUJveGVzIHdlIHdhbnQgdG8KICAgICAvLyByZXR1cm4gMCBoZXJlIHRvIG1hdGNoIG91ciBs
aW5lLWhlaWdodC4gVGhpcyBtYXR0ZXJzIHdoZW4gUm9vdElubGluZUJveDo6YXNjZW50QW5kRGVz
Y2VudEZvckJveCBpcyBjYWxsZWQgb24gYSBSb290SW5saW5lQm94IGZvciBhbiBpbmxpbmUtYmxv
Y2suCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBMYXlvdXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1h
dGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJTdHlsZSYgcwogICAgIH0K
IH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MVGFibGU6OmZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBCeSBkZWZhdWx0IHRoZSB2ZXJ0aWNhbCBjZW50
ZXIgb2YgPG10YWJsZT4gaXMgYWxpZ25lZCBvbiB0aGUgbWF0aCBheGlzLgogICAgIC8vIFRoaXMg
aXMgZGlmZmVyZW50IHRoYW4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJveEJhc2VsaW5lLCB3aGlj
aCByZXR1cm5zIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgcm93IG9mIGEgPHRhYmxlPi4KLSAg
ICByZXR1cm4gT3B0aW9uYWw8aW50Pihsb2dpY2FsSGVpZ2h0KCkgLyAyICsgYXhpc0hlaWdodChz
dHlsZSgpKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoKGxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBh
eGlzSGVpZ2h0KHN0eWxlKCkpKS50b0ludCgpKTsKIH0KIAogdm9pZCBSZW5kZXJNYXRoTUxCbG9j
azo6bGF5b3V0SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCmluZGV4IDBmNmM3NjIy
Nzc4ODM3ZjI5MWNiZGQ0NzRmNWM4MmI4M2E3MzVjODUuLjJlMzc2NjA3M2E4MmRkZWNhNmI0MWJh
NWFiZmJjYTMxYmFkNDQ3NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODYxNy4KICAgICB2
aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25z
dCB7IHJldHVybiAwOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShERUJVR19NQVRIX0xBWU9VVCkKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKQEAgLTExMyw3ICsx
MTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1l
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPE1h
dGhNTFN0eWxlPiBtX21hdGhNTFN0eWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggZWYzYjY0
N2JmZjQ3MmI2NjJmNmRhZGZmYjYzNDY2YWYzOTk2NDQ4Yy4uZmM1ZDIxNWNkODNkNTIxZTJlYWMw
OWRmMjBlYzg2ZGM2YzgwMTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTI3MiwxMCArMjcyLDEw
IEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29u
c3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUo
YWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVk
UGFpbnRPZmZzZXQueCgpICsgbG9naWNhbFdpZHRoKCksIExheW91dFVuaXQoYWRqdXN0ZWRQYWlu
dE9mZnNldC55KCkpKSkpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9u
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJN
YXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19j
YXN0PGZsb2F0PihmcmFjdGlvbkFzY2VudCgpKSkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5p
dChyb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyYWN0aW9uQXNjZW50KCkpKSk7CiAgICAgcmV0
dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9u
LmgKaW5kZXggMjBiNWI0YzlhZWVmNWZkZGM2MjFmMzcyNWVhZTQ1NGMzNDZkMDU5MC4uMjdmMTRk
NzVmMGUyODg4M2VjYTNmMDEyMTk3ZjE3NmFmOWUxY2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNTEs
NyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdp
ZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7Ci0gICAgT3B0aW9u
YWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWlu
dChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIFJlbmRlck1hdGhN
TE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcAppbmRleCA3MGVkOTc3YTYzODE5ZWFmZGZmNmUyMWQ4NjNjZTIzMTMxZTAzNDA3Li4y
Yzk3NGNjYjA3ZWI2YzgzNmJjNTI3MWQ5YjU0NzYwNTQ1ZGMwZWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNw
cApAQCAtMzAxLDEwICszMDEsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6
dmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3Ry
ZXRjaERlcHRoQmVsb3dCYXNlbGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBt
X21hdGhPcGVyYXRvci5kZXNjZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwog
fQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmICh1c2VNYXRoT3BlcmF0b3IoKSkKLSAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KG1fbWF0aE9wZXJhdG9yLmFzY2VudCgpIC0gdmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0
KCkpKSk7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0KHN0YXRpY19jYXN0PGludD4obHJvdW5k
KHN0YXRpY19jYXN0PGZsb2F0PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3Ry
ZXRjaGVkT3BlcmF0b3JTaGlmdCgpKSkpKTsKICAgICByZXR1cm4gUmVuZGVyTWF0aE1MVG9rZW46
OmZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCA5ZDMxMDk2ZjI0NzM4
MDcyMDhiMTQwMmFmMzc5NGNiOTc4ZTFhZmU4Li5mZTg5YWExYWYyNmEwN2MwMTYwM2ZlMTc5Yzcy
ZTg5ZjY5NzI3ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIGJvb2wgaXNJbnZpc2libGVPcGVyYXRvcigpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyTWF0
aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGNvbnN0X2Nhc3Q8UmVuZGVyTWF0aE1MT3BlcmF0b3IqPih0aGlzKTsgfQogCiAgICAgTGF5b3V0
VW5pdCB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcApp
bmRleCBkMTNjOGI0YmE1ZDExMDU3NDkwMTQwMWE5OTkyZmFmN2EzMmNkY2M3Li43OTBhZjdhYTM2
ZGVhNjIxNDhjYTM5ZTdlNTAzZTNjYTMyYmMyY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCkBAIC0xMTYsNyAr
MTE2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxQYWRkZWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlv
dXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9w
dGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxQYWRkZWQ6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKICAgICAvLyBXZSB0cnkgYW5kIGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUg
ZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoaWxkLgogICAgIExheW91dFVuaXQgYXNj
ZW50OwpAQCAtMTI0LDcgKzEyNCw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVk
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAgICAgICAgIGFzY2VudCA9IGFzY2VudEZvckNo
aWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSArIHZvZmZz
ZXQoKTsKICAgICBlbHNlCiAgICAgICAgIGFzY2VudCA9IG1wYWRkZWRIZWlnaHQoMCk7Ci0gICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFzY2Vu
dCkpKTsKKyAgICByZXR1cm4gYXNjZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCAwZDdmMzEwYWJi
NDVmM2EyMDhmMTYyNjExZDcyODhkOWNmYTFjYmM2Li45M2IzNjZlY2ZlNjJhZTcwZGU0NTJhYmFl
MDVkNjM2NDU1ODJjMzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lk
IGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNh
bEhlaWdodCA9IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxlbWVudCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihub2RlRm9y
Tm9uQW5vbnltb3VzKCkpOyB9CiAgICAgTGF5b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAK
aW5kZXggOWIzZWIwODhmYWIzNDM0MjIwYmEwZmJhNzlkMmQ4OGM5NTBjZTNhMS4uNTA3ZjY5OGVi
ODk4MDVjYWUwMzYyZmQ2ZDY2YjEwOTBmNjI4NTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNTIsMTMgKzUyLDEz
IEBAIE1hdGhNTFJvd0VsZW1lbnQmIFJlbmRlck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFJvd0VsZW1lbnQmPihub2RlRm9yTm9uQW5vbnlt
b3VzKCkpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFJvdzo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MUm93OjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZWxpbmVDaGlsZCA9IGZpcnN0
Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0g
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZv
ckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkpKTsK
KyAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9y
Q2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOwog
fQogCiBzdGF0aWMgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHRvVmVydGljYWxTdHJldGNoeU9wZXJh
dG9yKFJlbmRlckJveCogYm94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXggZTg3NThhZThlYmMxMGE1ZjFhYmQ4NDE5NjdmZDE1
YzY4NWJkODkxOC4uMTY5NTY0MjkwNTNlZDY0ZmM3Zjg3MDg5MDRjMDk4ZDI0ZDIzMDQ0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5o
CkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0
QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
ID0gMF9sdSkgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0cmV0Y2hWZXJ0aWNhbE9wZXJhdG9y
c0FuZExheW91dENoaWxkcmVuKCk7CiAgICAgdm9pZCBnZXRDb250ZW50Qm91bmRpbmdCb3goTGF5
b3V0VW5pdCYgd2lkdGgsIExheW91dFVuaXQmIGFzY2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCA1YzE1ZWI0NGE4YjlmODkxMGFlOGM5YmIwMjAxMTMz
MWU3YzhjN2MzLi5kYzExYzNiYmM3YjljZmZiZTk0YjAyY2VlOTE4NjdiY2JiMGYwN2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlw
dHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U2NyaXB0cy5jcHAKQEAgLTQ2NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0
czo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNs
ZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRz
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJN
YXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFz
ZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihs
cm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKKyAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CisgICAgcmV0dXJuIExheW91dFVu
aXQocm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5oCmluZGV4IDgyZjI1NzBmZjhjOTdhNDc1N2FkZTExNGNhN2FkODNiNzkz
YjQ2MGMuLjlkMjNhYmUzOTQwZjUyZmY2ZWM2NGYzZGU3OGJmMWQzYjYzOTcyZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0
cy5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxT
Y3JpcHRzRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJl
biB7CiAgICAgICAgIFJlbmRlckJveCogYmFzZTsKICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3Jp
cHREZWxpbWl0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MU3BhY2UuY3BwCmluZGV4IDMxMzY5M2E0YWUwNTJmZGIyYjYxYWYwNmY4MmE1
YzVkODE2YTkzZTMuLmY5MjQ2NTcxMmRiNzhkZjY0NjEzMTI0MWJlNGMwMGNmZGY4ZDI2M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Bh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3BhY2UuY3BwCkBAIC04NiwxMSArODYsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVl
ZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU3Bh
Y2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGhlaWdodCwg
ZGVwdGg7CiAgICAgZ2V0U3BhY2VIZWlnaHRBbmREZXB0aChoZWlnaHQsIGRlcHRoKTsKLSAgICBy
ZXR1cm4gT3B0aW9uYWw8aW50PihoZWlnaHQpOworICAgIHJldHVybiBoZWlnaHQ7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
U3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Bh
Y2UuaAppbmRleCBiMjU5NzI2MTQ5MmM3MTRjZjNhMjBjZmRkM2I3YjcxNjk1OWIwMWI3Li43MjVk
NGYyMGEzMjVhYmNhMWZkYzg0YzA3MzU1YjEzMmQ1NjU2YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00NCw3ICs0
NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmpl
Y3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQg
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
SGVpZ2h0ID0gMF9sdSkgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IHNwYWNlV2lkdGgoKSBjb25zdDsK
ICAgICB2b2lkIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlv
dXRVbml0JiBkZXB0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCmluZGV4IDdlZmFlNGQwZmI5Yjc3NWU2OTc4
ZjUwMjI4OTY2Zjc1NzlhMzM4MTYuLjViMDU1NmJjZGVhZWNiZjY3ZGFjZDBjNzk1NmQyNDRkZGJl
NDA4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01NTQsMTIgKzU1NCwxMiBAQCB2b2lkIFJlbmRlck1hdGhN
TFRva2VuOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAgc2V0TWF0aFZhcmlhbnRHbHlwaERpcnR5
KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQp
IHsKICAgICAgICAgYXV0byBtYXRoVmFyaWFudEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgp
LmdseXBoRGF0YUZvckNoYXJhY3RlcihtX21hdGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1f
bWF0aFZhcmlhbnRJc01pcnJvcmVkKTsKICAgICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9u
dCkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJv
dW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEds
eXBoLmdseXBoKS55KCkpKSk7CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0aWNf
Y2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgo
bWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgpKSkpOwogICAgIH0KICAgICByZXR1cm4gUmVuZGVy
TWF0aE1MQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggYzI2ZjExYWY2
MzliM2U5MmVjOTdlMDdjNDBhZmQ0ZjU4MDM5ZWJlZC4uY2U1M2Q1NTQzMzg3YzI2N2RkMzZlODI1
M2EwMGZmYTc4YWVhMmI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92
ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0
IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92
ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBj
b21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424633</attachid>
            <date>2021-03-30 06:27:42 -0700</date>
            <delta_ts>2021-03-30 09:00:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133932-20210330152739.patch</filename>
            <type>text/plain</type>
            <size>70810</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVkODU1N2ZkYjYwMjBh
ODBhZjczNTg2MzBjYWQzNDg4ZTUyOWNmZi4uY2U1N2ZiZWQwYTNkMzc3NjZiZGRkMWQxZTdmYzM3
NDAzZTllYTI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIxLTAzLTMwICBSb2Ig
QnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CisKKyAgICAgICAgU3VicGl4ZWwgbGF5b3V0OiBTd2l0
Y2ggaW5saW5lcycgYmFzZWxpbmUgcG9zaXRpb25pbmcgZnJvbSBpbnQgdG8gTGF5b3V0VW5pdC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzkzMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdJUC4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckF0dGFjaG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQnV0
dG9uOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QnV0dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpi
YXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRp
b24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RNYXJrZXI6OmJhc2VsaW5lUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGU6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFzZWxpbmVQb3NpdGlvbiBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmg6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorCiAyMDIx
LTAzLTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIEFj
Y291bnQgZm9yICJjb3ZlciIgYW5kICJjb250YWluIiB3aGVuIGludGVycG9sYXRpbmcgYmFja2dy
b3VuZC1zaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2Vs
aW5lQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVB
bGlnbm1lbnQuY3BwCmluZGV4IDE1NDAzYTg1ZWRlZmVlYTRhY2NiYjNjNTM0ZDU1ZGIwMGVhOWYy
OGMuLmE4MWU0ZmY2M2E2ZDkwNzQ5N2ZkY2QzMDNjMzkzNWUyZTcyNWIyMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCkBAIC02
NSwxNCArNjUsMTYgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmxvZ2ljYWxB
c2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5b3V0VW5pdCBHcmlkQmFz
ZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsIEdy
aWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IG1hcmdpbiA9IGlz
RGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBtYXJnaW5VbmRl
ckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3ZlckZvckNoaWxkKGNoaWxk
LCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxpbmUoaXNQYXJhbGxlbFRvQmFz
ZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBjaGlsZC5maXJzdExpbmVC
YXNlbGluZSgpLnZhbHVlT3IoLTEpIDogLTEpOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJh
c2VsaW5lOworICAgIGlmIChpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNGb3JDaGlsZChjaGlsZCwg
YmFzZWxpbmVBeGlzKSkKKyAgICAgICAgYmFzZWxpbmUgPSBjaGlsZC5maXJzdExpbmVCYXNlbGlu
ZSgpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJveCdzIHVuZGVyIGVkZ2UgaWYgbm8gdmFsaWQg
YmFzZWxpbmUuCi0gICAgaWYgKGJhc2VsaW5lID09IC0xKSB7CisgICAgaWYgKCFiYXNlbGluZSkg
ewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFzZWxpbmVBeGlzKGJhc2VsaW5lQXhpcykpCiAg
ICAgICAgICAgICByZXR1cm4gaXNGbGlwcGVkV3JpdGluZ01vZGUobV9ibG9ja0Zsb3cpID8gY2hp
bGQuc2l6ZSgpLndpZHRoKCkudG9JbnQoKSArIG1hcmdpbiA6IG1hcmdpbjsKICAgICAgICAgcmV0
dXJuIGNoaWxkLnNpemUoKS5oZWlnaHQoKSArIG1hcmdpbjsKICAgICB9Ci0gICAgcmV0dXJuIGJh
c2VsaW5lICsgbWFyZ2luOworICAgIHJldHVybiAqYmFzZWxpbmUgKyBtYXJnaW47CiB9CiAKIExh
eW91dFVuaXQgR3JpZEJhc2VsaW5lQWxpZ25tZW50OjpkZXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVu
ZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBhc2NlbnQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKaW5kZXggMWE0NTc5YjI5
MjQ0MGVkZDRmNmVkYzNkNjM2MDA0NzJhZGZkODE0Mi4uOTMyNDFlMTZkYzg3NWVlNDI0NTNmZWQ4
MDEzMDQ4NTM2NDJlNGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAK
QEAgLTE0NSw3ICsxNDUsNyBAQCBmbG9hdCBJbmxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQoKSBjb25z
dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBJbmxpbmVCb3g6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKK0xheW91dFVuaXQgSW5saW5lQm94
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGJveE1vZGVsT2JqZWN0KCktPmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBl
LCBtX2JpdGZpZWxkcy5maXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCA4MTY3ZTRkZDRhYWZkNDc0YWM5ZTJjZDdmMmFm
ZWZkOGExMTNkNjE2Li40ZTU4NTljYWE2YmFiNTlmYTcxYjIwNDY0Mjg2YTA4NDE1ODY1NDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC0yMDQsNyArMjA0LDcgQEAgcHVi
bGljOgogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gaXNI
b3Jpem9udGFsKCkgPyBGbG9hdFJlY3QobV90b3BMZWZ0LngoKSwgbV90b3BMZWZ0LnkoKSwgbV9s
b2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSkgOiBGbG9hdFJlY3QobV90b3BMZWZ0LnkoKSwg
bV90b3BMZWZ0LngoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSk7IH0KICAgICBG
bG9hdFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRSZWN0KHRvcExlZnQoKSwg
c2l6ZSgpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBpbnQgYmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxp
bmVUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIExheW91dFVuaXQgbGlu
ZUhlaWdodCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBpbnQgY2FyZXRN
aW5PZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAppbmRleCAyNGRlNTE1MDM2NDAwMTgwNWNjYmMyZDBjZTc0OTI0MzY4OWRhYzkyLi4yNmU2
Yzg0MmE1MTdlZDQyMmM4MjQyMTdmODlhMjFkMmNmNzUwMGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBJbmxp
bmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3Qp
CiAgICAgZ1RleHRCb3hlc1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJlY3QpOwogfQogCi1pbnQg
SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBl
KSBjb25zdAorTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAppbmRl
eCAwZjcxN2JkNzZiMDEwOWQxZGNlNDMwYzgxNDE3MDIzOGJhYWI5MDA3Li42NTRkODc3YWQ4ZjAz
ZTdjNWU1ZDg1ODc1YTIwYTMyOTRjMGFkNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVUZXh0Qm94LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGlu
bGluZSBib29sIGNvbXBhcmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRCb3gqIGZpcnN0LCBjb25z
dCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5zdGFydCgpIDwgc2Vjb25k
LT5zdGFydCgpOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUpIGNv
bnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUp
IGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0IGZpbmFsOwog
CiAgICAgT3B0aW9uYWw8Ym9vbD4gZW1waGFzaXNNYXJrRXhpc3RzQW5kSXNBYm92ZShjb25zdCBS
ZW5kZXJTdHlsZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0
dGFjaG1lbnQuY3BwCmluZGV4IGM5MmZlYTgzNmI3ZTdjODQ3ZTUyM2E0YTU5MTJlYzk4NTM5OTVl
NDQuLmY5NjViOTg5OWJlMmU4NWE3YzdlNDYyNmFhMGRhNDIxM2RjOWVjZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgdm9pZCBSZW5kZXJBdHRhY2htZW50OjppbnZhbGlkYXRlKCkKICAgICByZXBhaW50KCk7CiB9
CiAKLWludCBSZW5kZXJBdHRhY2htZW50OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRV
bml0IFJlbmRlckF0dGFjaG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1
cm4gdGhlbWUoKS5hdHRhY2htZW50QmFzZWxpbmUoKnRoaXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKaW5kZXggZDMyOTIyYTYwYjI1MTQ4ZjNlYTFm
MmZjMzAxMWNmMzRmMGExYmYyMC4uNTBkZDkyNGIzZWFlNzEyZmJiMGRhM2Y3YzFjMGIzMmVhMTY3
YmI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCkBA
IC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwog
Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5p
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBtX21p
bmltdW1JbnRyaW5zaWNXaWR0aDsKICAgICBib29sIG1fc2hvdWxkRHJhd0JvcmRlciB7IHRydWUg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IDgwMTQwODUy
NThmYTdhMmM4NDAwMjY2YTQ3MmQzNjliMDU1ZDAxZDYuLmRmMDcwODk5MWEzNDljOTIwZTU5ZmM0
ZWY4MzJhNzdjMjIyZTdlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
LmNwcApAQCAtMjQ4MSw3ICsyNDgxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLAogICAgIHJl
dHVybiBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogfQogCi1pbnQgUmVuZGVyQmxvY2s6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9z
aXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0
CiB7CiAgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgcmVwbGFjZWQgZWxlbWVudHMuIE90aGVyd2lz
ZSwganVzdCBwYXNzIG9mZiB0bwogICAgIC8vIHRoZSBiYXNlIGNsYXNzLiAgSWYgd2UncmUgYmVp
bmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhlIHJvb3QgbGluZQpAQCAtMjUxNiw3ICsyNTE2
LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAgIHJldHVybiBzY3JvbGxh
YmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFibGVBcmVhLT5zY3JvbGxP
ZmZzZXQoKS54KCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgT3B0aW9uYWw8aW50PiBiYXNlbGlu
ZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxpbnQ+KCkgOiBpbmxpbmVCbG9ja0Jh
c2VsaW5lKGRpcmVjdGlvbik7CisgICAgICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGJhc2VsaW5l
UG9zID0gaWdub3JlQmFzZWxpbmUoKSA/IE9wdGlvbmFsPExheW91dFVuaXQ+KCkgOiBpbmxpbmVC
bG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CiAgICAgICAgIAogICAgICAgICBpZiAoaXNEZXByZWNh
dGVkRmxleGlibGVCb3goKSkgewogICAgICAgICAgICAgLy8gSGlzdG9yaWNhbGx5LCB3ZSBkaWQg
dGhpcyBjaGVjayBmb3IgYWxsIGJhc2VsaW5lcy4gQnV0IHdlIGNhbid0CkBAIC0yNTI2LDcgKzI1
MjYsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgogICAgICAgICAgICAgLy8gRm9yIHNpbXBs
aWNpdHksIHdlIHVzZSB0aGlzIGZvciBhbGwgdXNlcyBvZiBkZXByZWNhdGVkIGZsZXhib3guCiAg
ICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbU9mQ29udGVudCA9IGRpcmVjdGlvbiA9PSBIb3Jp
em9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsgY29udGVudEhlaWdodCgp
IDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpICsgY29udGVudFdpZHRoKCk7CiAgICAg
ICAgICAgICBpZiAoYmFzZWxpbmVQb3MgJiYgYmFzZWxpbmVQb3MudmFsdWUoKSA+IGJvdHRvbU9m
Q29udGVudCkKLSAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9wdGlvbmFsPGludD4oKTsK
KyAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGJhc2VsaW5lUG9zKQogICAgICAgICAgICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpICsgYmFzZWxpbmVQb3MudmFs
dWUoKSA6IG1hcmdpblJpZ2h0KCkgKyBiYXNlbGluZVBvcy52YWx1ZSgpOwpAQCAtMjUzNiw3ICsy
NTM2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KIAogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwog
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7
Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWln
aHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3Mu
aGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1cm4gTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQo
YmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9z
aXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRvSW50KCk7CiB9CiAKIExh
eW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJv
b2wgaXNGaXJzdExpbmUsIExheW91dFVuaXQgcmVwbGFjZWRIZWlnaHQpIGNvbnN0CkBAIC0yNTUx
LDQzICsyNTUxLDQzIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JS
ZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAgICAgcmV0dXJuIHN0ZDo6
bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0KGlzRmlyc3RMaW5lLCBp
c0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUs
IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRl
ckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBS
ZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRp
bmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGlu
dD4oKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICBmb3Ig
KFJlbmRlckJveCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPm5l
eHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5pc0Zsb2F0aW5nT3JPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3VsdCA9
IGN1cnItPmZpcnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oY3Vyci0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xh
dGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgICAgICBpZiAoT3B0aW9uYWw8TGF5
b3V0VW5pdD4gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUo
KSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIE9wdGlvbmFsPExh
eW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK09wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290
KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIGJvb2wgaGF2ZU5vcm1h
bEZsb3dDaGlsZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byogYm94ID0gbGFzdENoaWxkQm94KCk7
IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoYm94
LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7Ci0gICAgICAgIGlmIChPcHRp
b25hbDxpbnQ+IHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9u
KSkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGJveC0+bG9naWNhbFRvcCgpICsg
cmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisg
ICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiByZXN1bHQgPSBib3gtPmlubGluZUJsb2Nr
QmFzZWxpbmUobGluZURpcmVjdGlvbikpCisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCgo
Ym94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSkudG9JbnQoKSk7IC8vIFRyYW5zbGF0
ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxG
bG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBhdXRvJiBmb250TWV0cmlj
cyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQo
TGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgKyAobGluZUhlaWdo
dCh0cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpIC0gZm9u
dE1ldHJpY3MuaGVpZ2h0KCkpIC8gMgotICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBI
b3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQo
KSArIHBhZGRpbmdSaWdodCgpKSk7CisgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgp
ICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gT3B0aW9u
YWw8aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgaXNSZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVt
ZW50JiByZW5kZXJFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApp
bmRleCBmOWIyZDk4ZGQ5YTllNTlkZTFjYWU5MzYyMTI3NmM2OGQ0MTMzZWQ3Li5lZmMwMTU0ZGI4
Njg3OWRmMzM3MGFmOTczZjYyOWUwNGY4NWI2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAg
Ly8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3IgaW5saW5lLWJsb2NrLgog
ICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZp
bmFsOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQ
b3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgTGF5b3V0VW5pdCBtaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29sIGlz
Rmlyc3RMaW5lLCBMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0KSBjb25zdDsKIApAQCAtMzUzLDgg
KzM1Myw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdp
ZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lk
dGhzKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGlu
ZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5kQW5k
Q29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxsZWQu
IFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxheWlu
ZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBiZWdp
blVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNGQ0MjQzNDNhYTYzYmM0ZTU2
ZDdlY2M5OTJlMGNhMTdkOGFiZmMwNC4uMGQxM2IxNWVjNzI4MDA1ZGUyMDU4NTAwOGRiZTg0ZDY5
MDUyYjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5j
cHAKQEAgLTMxMDYsNyArMzEwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJrTGluZXNE
aXJ0eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuCiAgICAgfQog
fQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1
bigpICYmICFpc0dyaWRJdGVtKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0z
MTE5LDE2ICszMTE5LDE2IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKICAgICBpZiAobW9kZXJuTGluZUxheW91dCgpKQotICAgICAgICByZXR1cm4gZmxvb3JUb0lu
dChtb2Rlcm5MaW5lTGF5b3V0KCktPmZpcnN0TGluZUJhc2VsaW5lKCkpOworICAgICAgICByZXR1
cm4gTGF5b3V0VW5pdChmbG9vclRvSW50KG1vZGVybkxpbmVMYXlvdXQoKS0+Zmlyc3RMaW5lQmFz
ZWxpbmUoKSkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQoZmlyc3RSb290Qm94KCkpOwogICAgIGlm
IChzdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZp
cnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNz
KCkuZGVzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpOwotICAgIHJldHVybiBm
aXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmlj
cygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpOworICAgICAgICByZXR1
cm4gTGF5b3V0VW5pdChmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5
bGUoKS5mb250TWV0cmljcygpLmRlc2NlbnQoZmlyc3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgp
KSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoZmlyc3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSAr
IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoZmlyc3RSb290Qm94KCktPmJh
c2VsaW5lVHlwZSgpKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93Ojppbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitP
cHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNXcml0
aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CkBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aQogICAgIGZs
b2F0IGJveEhlaWdodCA9IGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBoZWlnaHQo
KSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKTsK
ICAgICBmbG9hdCBsYXN0QmFzZWxpbmUgPSAwOwogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSkg
ewotICAgICAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUgPSBSZW5kZXJCbG9j
azo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAgICAgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJsb2NrOjppbmxpbmVCbG9j
a0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIWlubGluZUJsb2NrQmFzZWxp
bmUpCiAgICAgICAgICAgICByZXR1cm4gaW5saW5lQmxvY2tCYXNlbGluZTsKICAgICAgICAgbGFz
dEJhc2VsaW5lID0gaW5saW5lQmxvY2tCYXNlbGluZS52YWx1ZSgpOwpAQCAtMzE1Myw5ICszMTUz
LDkgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGkKICAgICAgICAgICAgIGlmICghaGFzTGluZUlm
RW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgICAgICAg
ICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNz
KCk7Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihmb250TWV0cmljcy5hc2NlbnQo
KQorICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoTGF5b3V0VW5pdChmb250TWV0cmljcy5h
c2NlbnQoKQogICAgICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlv
biwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAv
IDIKLSAgICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
Ym9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0
KCkpKTsKKyAgICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5l
ID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1Jp
Z2h0KCkpKS50b0ludCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb21wbGV4TGluZUxh
eW91dCgpKSB7CkBAIC0zMTczLDcgKzMxNzMsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2Nr
Rmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aQog
ICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTIHNwZWMgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NT
MjEvdmlzdWRldC5odG1sLCB3ZSBzaG91bGRuJ3QgYmUgcGVyZm9ybWluZyB0aGlzIG1pbiwgYnV0
IHNob3VsZAogICAgIC8vIGluc3RlYWQgYmUgcmV0dXJuaW5nIGJveEhlaWdodCBkaXJlY3RseS4g
SG93ZXZlciwgd2UgZmVlbCB0aGF0IGEgbWluIGhlcmUgaXMgYmV0dGVyIGJlaGF2aW9yIChhbmQg
aXMgY29uc2lzdGVudAogICAgIC8vIGVub3VnaCB3aXRoIHRoZSBzcGVjIHRvIG5vdCBjYXVzZSB0
b25zIG9mIGJyZWFrYWdlcykuCi0gICAgcmV0dXJuIHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3Zl
cmZsb3c6OlZpc2libGUgPyBsYXN0QmFzZWxpbmUgOiBzdGQ6Om1pbihib3hIZWlnaHQsIGxhc3RC
YXNlbGluZSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBP
dmVyZmxvdzo6VmlzaWJsZSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWluKGJveEhlaWdodCwgbGFz
dEJhc2VsaW5lKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpzZXRTZWxlY3Rpb25TdGF0
ZShIaWdobGlnaHRTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9ja0Zsb3cuaAppbmRleCA1N2YyNjljOWIyODhjMDE1MjA0OTg1ZmRlYjZmNWNhNzVjOWQzMTli
Li5mNmE3NjQ5ZTkyNjJhODFkZGM0M2JjYjBmMGRlNDU5OGFlYjAwMTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC00NTAsOCArNDUwLDggQEAgcHJv
dGVjdGVkOgogCiAgICAgdm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMoKTsKIAotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25h
bDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJy
aWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzTXVsdGlDb2x1
bW5CbG9ja0Zsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtdWx0aUNvbHVtbkZsb3coKTsg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzZjMyNDY2
ZGFmYjVmOGU3MjFkNWNkMTI5NzAxZWMwMzQ3ZTVlMzY3Li5lMGY1NDdhZGYzY2FkOWQ3ZDEwODMz
ZTdlZTE0MmI3Nzc5NWNlNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cApAQCAtNDg2Niw3ICs0ODY2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmxpbmVIZWlnaHQo
Ym9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24KICAgICByZXR1
cm4gMDsKIH0KIAotaW50IFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVj
dGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKK0xheW91
dFVuaXQgUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUsIGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAogewogICAgIGlmIChpc1Jl
cGxhY2VkKCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZFRvSW50KGRpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LnRvcCgpICsgaGVpZ2h0KCkgKyBtX21hcmdp
bkJveC5ib3R0b20oKSA6IG1fbWFyZ2luQm94LnJpZ2h0KCkgKyB3aWR0aCgpICsgbV9tYXJnaW5C
b3gubGVmdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjNWE4ZDhm
Yzk1N2RkZTM5MDYyYzAzZWExZmFmN2M2ZGNhY2NlNTEyLi4xZTUxMWM5YzFkYzhiYmZjODJiNTQ5
OGVjZjExYTJiNWIwMThjMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBA
IC01NDEsOCArNTQxLDggQEAgb3ZlcnJpZGU7CiAgICAgCiAgICAgUmVuZGVyTGF5ZXIqIGVuY2xv
c2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgT3B0aW9u
YWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPGludD4o
KTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVE
aXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7IH0gLy8gUmV0dXJu
cyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFz
ZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgorICAgIHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOyB9IC8vIFJldHVybnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNraXAgdGhpcyBib3ggd2hlbiBj
b21wdXRpbmcgdGhlIGJhc2VsaW5lIG9mIGFuIGlubGluZS1ibG9jay4KIAogICAgIGJvb2wgc2hy
aW5rVG9Bdm9pZEZsb2F0cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhdm9pZHNGbG9hdHMo
KSBjb25zdDsKQEAgLTU1NSw3ICs1NTUsNyBAQCBvdmVycmlkZTsKICAgICBib29sIGlzRmxleEl0
ZW1JbmNsdWRpbmdEZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlzSW5saW5lKCkgJiYgIWlz
RmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQoKSAmJiBwYXJlbnQoKS0+
aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogICAgIAogICAgIExheW91dFVu
aXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5
b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBvZmZz
ZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggNThjNDg5YWU0ZWRiZGUwMDYxYWRhZWFmNjljNzBm
Zjk3YTFmN2M1OC4uMDY1N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVjNWQ4YjcwODMwZjFmNWMwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAg
LTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNz
ZXMgdG8gZGV0ZXJtaW5lIGxpbmUgaGVpZ2h0IGFuZCBiYXNlbGluZSBwb3NpdGlvbi4KICAgICB2
aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
ID0gMDsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IGJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
ID0gMDsKIAogICAgIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQoTWFwQ29vcmRpbmF0ZXNG
bGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRleCA3ZWQ4MTVjNzZhNGUxMjk3YTZkMTg2YTMy
MjJmMDc1MjZkNzQ0YjE2Li4yMTM2MTAwNzZhNTdiMTUwYWNjMjRjMTFhODkxNTU2YjZkMGM1MjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcApAQCAtMTQ4LDcg
KzE0OCw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Db250ZW50Qm94KGNv
bnN0IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uCiAgICAgcmV0dXJuIGRpcmVjdGlvbiA9
PSBIb3Jpem9udGFsTGluZSA/IGJveC5ib3JkZXJUb3AoKSArIGJveC5wYWRkaW5nVG9wKCkgKyBi
b3guY29udGVudEhlaWdodCgpIDogYm94LmJvcmRlclJpZ2h0KCkgKyBib3gucGFkZGluZ1JpZ2h0
KCkgKyBib3guY29udGVudFdpZHRoKCk7CiB9CiAKLWludCBSZW5kZXJCdXR0b246OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJ1dHRvbjo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
biwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBXZSBjYW5ub3QgcmVseSBvbiBS
ZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbigpIGJlY2F1c2Ugb2YgZmxleGJveGVz
IGhhdmUgc29tZSBzcGVjaWFsIGJlaGF2aW9yCiAgICAgLy8gcmVnYXJkaW5nIGJhc2VsaW5lcyB0
aGF0IHNob3VsZG4ndCBhcHBseSB0byBidXR0b25zLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJ1dHRvbi5oCmluZGV4IGU5YzRjMGU5OTM5YWI4NDUxZjY1MGE5OWZmYTY1NTEwY2VkNjk3
NDIuLmE0OTM5YzRhMDA3NTAyYTU3ODk0OWZkYzVjYzY1NmNjNzk1ZDUzODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
ICAgIFJlbmRlckJsb2NrKiBpbm5lclJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lci5n
ZXQoKTsgfQogICAgIHZvaWQgc2V0SW5uZXJSZW5kZXJlcihSZW5kZXJCbG9jayYpOwogCi0gICAg
aW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9k
ZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAyY2M5M2Q2YWQ5M2EwYWQ1MjJj
OTA4NTE4ODczYjI5MTJkN2ZjMTIxLi5lZDAxMmJkNzhkZWViNGRkY2QwYjQ0N2Q4ODQ0NDZhNjUz
OGY2Y2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJv
eC5jcHAKQEAgLTE0NCwxMiArMTQ0LDEyIEBAIHZvaWQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1
dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0CiAgICAg
bWluTG9naWNhbFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwogfQogCi1zdGF0aWMgaW50IHN5bnRo
ZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24pCitzdGF0aWMgTGF5b3V0VW5pdCBzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uKQogewotICAgIHJldHVybiAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8g
Ym94LnNpemUoKS5oZWlnaHQoKSA6IGJveC5zaXplKCkud2lkdGgoKSkudG9JbnQoKTsKKyAgICBy
ZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkg
OiBib3guc2l6ZSgpLndpZHRoKCkpOwogfQogCi1pbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rp
b24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGF1dG8gYmFzZWxpbmUg
PSBmaXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmICghYmFzZWxpbmUpCkBAIC0xNTgsMTAgKzE1
OCwxMCBAQCBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaQogICAgIHJldHVybiBiYXNlbGluZS52YWx1
ZSgpICsgKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2lu
UmlnaHQoKSkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxl
eGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5n
TW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwKQot
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8
TGF5b3V0VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBudWxscHRyOwog
ICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9v
cmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0
KCkpIHsKQEAgLTE4MCwyNSArMTgwLDI1IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVC
b3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAgICBpZiAoIWJhc2VsaW5l
Q2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBP
cHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgaWYgKCFpc0NvbHVtbkZsb3coKSAmJiAhbWFp
bkF4aXNJc0NoaWxkSW5saW5lQXhpcygqYmFzZWxpbmVDaGlsZCkpCi0gICAgICAgIHJldHVybiBP
cHRpb25hbDxpbnQ+KGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJh
c2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBjcm9zc0F4aXNFeHRl
bnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCk7
CiAgICAgaWYgKGlzQ29sdW1uRmxvdygpICYmIG1haW5BeGlzSXNDaGlsZElubGluZUF4aXMoKmJh
c2VsaW5lQ2hpbGQpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihtYWluQXhpc0V4dGVu
dEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7
CisgICAgICAgIHJldHVybiBtYWluQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSAr
IGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKTsKIAotICAgIE9wdGlvbmFsPGludD4gYmFzZWxp
bmUgPSBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgpOworICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGJhc2VsaW5lID0gYmFzZWxpbmVDaGlsZC0+Zmlyc3RMaW5lQmFzZWxpbmUoKTsK
ICAgICBpZiAoIWJhc2VsaW5lKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcGFzcyB8
ZGlyZWN0aW9ufCBpbnRvIGZpcnN0TGluZUJveEJhc2VsaW5lIGFuZCBzdG9wIGJhaWxpbmcgb3V0
IGlmIHdlJ3JlIGEgd3JpdGluZyBtb2RlIHJvb3QuCiAgICAgICAgIC8vIFRoaXMgd291bGQgYWxz
byBmaXggc29tZSBjYXNlcyB3aGVyZSB0aGUgZmxleGJveCBpcyBvcnRob2dvbmFsIHRvIGl0cyBj
b250YWluZXIuCiAgICAgICAgIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiA9IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZTsKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3go
KmJhc2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkp
OworICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKmJhc2Vs
aW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCk7CiAgICAg
fQogCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oYmFzZWxpbmUudmFsdWUoKSArIGJhc2VsaW5l
Q2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoYmFzZWxpbmUudmFs
dWUoKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CiB9CiAKLU9wdGlvbmFsPGludD4g
UmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6aW5saW5lQmxv
Y2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RM
aW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmgKaW5kZXggZTkzZWU3YmFmZmZlNjRmNmEwN2Y2YjAxYjgwNTNmZmQ0OTEwZGU3ZS4u
MWMyNTE5MTZkNTMyYTFmMGQyZjNmNWE1ZTY5YjBiNzVlYTg4Njg2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTUyLDkgKzUyLDkgQEAgcHVi
bGljOgogICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAKLSAgICBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlk
ZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGlu
ZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgYm9v
bCBoaXRUZXN0Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0Jiwg
Y29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRp
b24sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckdyaWQuY3BwCmluZGV4IGU2MjZkOTliNDQ5MTUzOTNmNTYzNDk3NzAxOWRlOTQyODA4YTRhNzku
LmFmNjRkYTM4ZmQ3YzU5YzE3NGZkYjM3M2RhZTA3MzZkN2UzNDlhNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEyMzMsNyArMTIzMyw3IEBAIHZvaWQgUmVu
ZGVyR3JpZDo6dXBkYXRlQXV0b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRlZChSZW5kZXJCb3gm
IGNoaWxkKQogfQogCiAvLyBGSVhNRTogVGhpcyBsb2dpYyBjb3VsZCBiZSByZWZhY3RvcmVkIHNv
bWVob3cgYW5kIGRlZmluZWQgaW4gUmVuZGVyQm94Lgotc3RhdGljIGludCBzeW50aGVzaXplZEJh
c2VsaW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uKQorc3RhdGljIExheW91dFVuaXQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21C
b3JkZXJCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
bikKIHsKICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXpl
KCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgpLndpZHRoKCkpLnRvSW50KCk7CiB9CkBAIC0xMjUzLDcg
KzEyNTMsNyBAQCBib29sIFJlbmRlckdyaWQ6OmlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChj
b25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkQXhpcyBiYQogfQogCiAvLyBGSVhNRTogVGhpcyBs
b2dpYyBpcyBzaGFyZWQgYnkgUmVuZGVyRmxleGlibGVCb3gsIHNvIGl0IG1pZ2h0IGJlIHJlZmFj
dG9yZWQgc29tZWhvdy4KLWludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IG1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbW9kZSkgY29uc3QKIHsKICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKICAgICBhdXRvIGJhc2VsaW5lID0gZmlyc3RMaW5lQmFz
ZWxpbmUoKTsKQEAgLTEyNjMsNyArMTI2Myw3IEBAIGludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uCiAg
ICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5l
ID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpKS50b0ludCgpOwogfQogCi1PcHRpb25hbDxp
bnQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91
dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAo
aXNXcml0aW5nTW9kZVJvb3QoKSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygpKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTI5NCwxMiArMTI5NCwxMiBAQCBPcHRpb25hbDxpbnQ+
IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBwYXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQmFzZWxpbmUgYW5kIHN0
b3AgYmFpbGluZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nCiAgICAgICAgIC8vIG1vZGUgcm9vdC4g
VGhpcyB3b3VsZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBncmlkIGlzIG9ydGhvZ29u
YWwgdG8gaXRzIGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9u
ID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxM
aW5lOwotICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKmJh
c2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBsb2dpY2FsVG9wRm9yQ2hpbGQoKmJhc2VsaW5lQ2hp
bGQpLnRvSW50KCk7CisgICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRl
ckJveCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGxvZ2ljYWxUb3BGb3JDaGlsZCgqYmFz
ZWxpbmVDaGlsZCk7CiAgICAgfQotICAgIHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpLnRvSW50KCk7CisgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVl
KCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKK09w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBiYjg1YzY3Yzg4MjQ1Yzcx
NTkzZTAwYjFmYmI2NDkxZDRkNjI4ZTBlLi4xZGJlOTFjNzhlNmY2ZjQwODRiMDZkNDliNGUwMzJj
ODQxZTdkNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTE2OSw5
ICsxNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQXV0b01hcmdpbnNJbkNvbHVtbkF4
aXNJZk5lZWRlZChSZW5kZXJCb3gmKTsKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJnaW5zSW5Sb3dB
eGlzSWZOZWVkZWQoUmVuZGVyQm94Jik7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9u
YWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGlu
dD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7Cisg
ICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
aXNJbmxpbmVCYXNlbGluZUFsaWduZWRDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAog
ICAgIExheW91dFVuaXQgY29sdW1uQXhpc0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVu
ZGVyQm94JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CmluZGV4IDJhY2EwN2QyYTczYjRmOTE4MzlhNWE5ZDc1MGUxOTY2MGM2YjZjMGQuLjNmODk2MzIz
MzA4ZTk4NzI1MmUwNDlhMzY2Nzg3NjY0YWMwZDA5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTYyLDExICsxMTYyLDExIEBAIExheW91dFVuaXQg
UmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSAvKmRpcmVjdGlvCiAgICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiB9
CiAKLWludCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJJ
bmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBs
aW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0
dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RM
aW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkp
IC8gMjsKKyAgICByZXR1cm4gKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxp
bmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1l
dHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxp
bmU6Om9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGls
ZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAzYmM1
MWEwZDQ2MmZmY2RlNGM0ZDdmNmUwNDdlNDg5Y2MwYzFlNDcwLi4yZDRlNzYyNGNhZWI4YmE1NDBi
MWExMWNjMTY3N2EzOTE1ZDE1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpcnR5TGluZXNG
cm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpIGZpbmFsIHsgbV9saW5lQm94ZXMu
ZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQogCiAgICAgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAg
aW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1
cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIGZp
bmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmlu
ZGV4IDNmOTZlYjYzMDc2YjA2NzEyMWY4NTFlM2NjZjc3ZDcwODY3NzU4NGMuLmU3MjhkMTQ5Zjlj
NGFmNDY1ODQ2MDBkOGVmY2U4NzRmM2UyOTI0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgTGF5b3V0VW5pdCBS
ZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlIC8qZGlyZWMKICAgICByZXR1cm4gbV9jYWNoZWRMaW5lSGVpZ2h0OwogfQogCi1pbnQgUmVu
ZGVyTGluZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGluZUJyZWFr
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBv
c2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJz
dExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKICAgICBjb25zdCBGb250
TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOwotICAgIHJldHVybiBm
b250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwg
ZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDI7
CisgICAgcmV0dXJuIChmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVp
Z2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNz
LmhlaWdodCgpKSAvIDIpLnRvSW50KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVt
ZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggZTU5YmFmMjIxMjFiMTYxZWNhYTY3
NGE4NzUzNDI2MzU0ZjY4YzljZS4uZTc1M2U0NTUwMGUwZmM5ZDJjZWRjZmYxZGVkOTY1ZWM2YjRl
NTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVh
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAt
NjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29u
c3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKLSAgICBpbnQg
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIExheW91dFVuaXQg
bWFyZ2luVG9wKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIExheW91dFVuaXQgbWFy
Z2luQm90dG9tKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA2NGY4MTQ4ODlhNTQ3ZGZkZWJkMzZlZWYz
Yzg0M2ZlN2QzYWIzNTIuLjk1MGIxZDdlMzFkMmMwY2Q4NDc3ZGQxYWI2YTM4YzUwZjU3MmRmOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTI3Myw3
ICsyNzMsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBSZW5kZXJM
aXN0Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdQogICAgIHJldHVybiBSZW5kZXJCb3g6
OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGhlaWdodCwgbG9naWNhbFRvcCk7CiB9CiAKLWludCBSZW5k
ZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uLCBMaW5lUG9zaXRp
b25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckxpc3RCb3g6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGlu
ZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBv
c2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBsaW5lUG9zaXRp
b25Nb2RlKSAtIGJhc2VsaW5lQWRqdXN0bWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5oCmluZGV4IGM2NzA0MmQxZGVhYjdlYWY5ZGIzMzhjZDIzMzQ4ZDUwN2Yy
NDczMjUuLjIxYmJhYTI3ODA4NjA5ODFlMTgyYWYwZjk5MjZjNGYyMTdlMTM0MmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtODcsNyArODcsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0
JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkgY29uc3Qgb3Zl
cnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIG92ZXJyaWRl
OwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogICAg
IExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDE1ODEyMTFkYmI2YzcyZmQ4YjFmYWIzNTkz
MWQyYmEyMDk5MDZjMzguLjM3NDE3ZmRmNDdiOWRiNjNhMmY2YmUzY2U0YjQwMDRjYmNiMjI2ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKQEAg
LTE3OTEsNyArMTc5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6bGluZUhlaWdo
dChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0CiAgICAgcmV0dXJuIFJl
bmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9k
ZSk7CiB9CiAKLWludCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVu
aXQgUmVuZGVyTGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxp
bmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0ltYWdl
KCkpCiAgICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5l
VHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaAppbmRleCAwODQ0
ZTk3NmRjZTBmZjQ5ODcyZGUwYzRlZThhMzczZjkzZDU3MWQ2Li45ODFlOTBlZTE0MThiZDQ2YmVh
MDNmM2IzNGI0MzJjY2ZiZjMwMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gY3JlYXRlSW5saW5lQm94KCkgb3ZlcnJpZGU7CiAKICAg
ICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVy
cmlkZTsKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wgaXNUZXh0KCkg
Y29uc3QgeyByZXR1cm4gIWlzSW1hZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuaAppbmRleCBiZmNiOTkwZjk5M2NkNWNiMWJkZjljZWM1NmFmNTVhMWVjYWMx
ZTZiLi5hNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2JjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI1LDEyICsxMjUsMTIgQEAg
cHJpdmF0ZToKIAogICAgIC8vIEZsZXhib3ggZGVmaW5lcyBiYXNlbGluZXMgZGlmZmVyZW50bHkg
dGhhbiByZWd1bGFyIGJsb2Nrcy4KICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHks
IG1lbnVsaXN0cyBuZWVkIHRvIGRvIHRoZSByZWd1bGFyIGJsb2NrIGJlaGF2aW9yLgotICAgIGlu
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBwb3NpdGlvbikg
Y29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9u
LCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgcmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJzdExp
bmUsIGRpcmVjdGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZpcnN0
TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUo
TGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5k
ZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBS
ZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJl
Y3Rpb24pOyB9CiAKICAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5zaWduZWQgbGlz
dEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29sb3IpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmluZGV4IDRkMjc4
ZDE3MmZkM2UzNzhiNzA1MDRkMWE0YjQ5NGY5MzdkZjlmOWEuLjQ3MTY5ZWRmOThlMTQyOGM0YTA3
NzBmMmY0ZWZjMGI1OGQ4MTNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
bGlkZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQmIFJlbmRlclNsaWRl
cjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLWludCBSZW5kZXJTbGlkZXI6OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJTbGlkZXI6OmJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBQYXRj
aCB0aGlzIGZ1bmN0aW9uIGZvciB3cml0aW5nLW1vZGUuCiAgICAgcmV0dXJuIGhlaWdodCgpICsg
bWFyZ2luVG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKaW5kZXgg
YTMzNzQ5NmQ3NWY1ZmEwNTg2MDI1NzIxOWZiN2JjMTRiNDZlNWRjYi4uM2JhMDUxMDU3ODhmMWZj
NzkwYjZjNDEzZTUyNzM0OTM3ZDMyYTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTbGlkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJl
bmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVyIjsgfQogICAg
IGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2Rl
ID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNv
bXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwg
TGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNv
bXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsYXlvdXQo
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4
IGEyMTQ4YzIzZjUxNjIzM2M3NjQxYjMwMThmMzBkYmZmMDFhYzhlMjMuLjhmOGM1ZTNlMGU2NjQy
OTIwNWJjMDE1ZTVhYjg1NDc2ZmNlNDVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlLmNwcApAQCAtMTQ3MSwzOSArMTQ3MSwzOSBAQCBSZW5kZXJCbG9jayogUmVuZGVy
VGFibGU6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAot
aW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3Np
dGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyVGFibGU6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9z
aXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShmaXJzdExpbmVC
YXNlbGluZSgpLCBbJl0gewogICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0
aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
OwogICAgIH0pOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjppbmxpbmVCbG9ja0Jh
c2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7
CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFuIGlubGluZS1ibG9j
aydzIGJhc2VsaW5lLgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIE9w
dGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGU6OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlclRhYmxl
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJhc2VsaW5lIG9mIGEg
J3RhYmxlJyBpcyB0aGUgc2FtZSBhcyB0aGUgJ2lubGluZS10YWJsZScgYmFzZWxpbmUgcGVyIENT
UyAzIEZsZXhib3ggKENTUyAyLjEKICAgICAvLyBkb2Vzbid0IGRlZmluZSB0aGUgYmFzZWxpbmUg
b2YgYSAndGFibGUnIG9ubHkgYW4gJ2lubGluZS10YWJsZScpLgogICAgIC8vIFRoaXMgaXMgYWxz
byBuZWVkZWQgdG8gcHJvcGVybHkgZGV0ZXJtaW5lIHRoZSBiYXNlbGluZSBvZiBhIGNlbGwgaWYg
aXQgaGFzIGEgdGFibGUgY2hpbGQuCiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSkKLSAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExh
eW91dFVuaXQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAKICAgICBjb25z
dCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMtPnRvcE5vbkVt
cHR5U2VjdGlvbigpOwogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQotICAgICAgICByZXR1
cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4o
KTsKIAotICAgIGlmIChPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9u
LT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pih0b3BO
b25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOworICAgIGlm
IChPcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9IHRvcE5vbkVtcHR5U2VjdGlvbi0+Zmly
c3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KHRv
cE5vbkVtcHR5U2VjdGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxpbmUudmFsdWUoKSk7CiAKICAg
ICAvLyBGSVhNRTogQSB0YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJhc2VsaW5lIHBlciBDU1MgMi4x
LiBXaWxsIHRoaXMgcmV0dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAgICByZXR1cm4gT3B0aW9uYWw8
aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogfQogCiBMYXlvdXRS
ZWN0IFJlbmRlclRhYmxlOjpvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2Nh
dGlvbiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBPdmVybGF5U2Nyb2xsYmFy
U2l6ZVJlbGV2YW5jeSByZWxldmFuY3ksIFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IDZmZTBjYWQyNTNkZTM0ZjExODUxZmVl
OGZlYTQ3M2ZkZDY1M2JhMjMuLjg4MWE2NzU0OTNkNDc0YzYwYWVmZTQ5MjkxZGJhYzIzOGNlYmI2
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0yOTIsOSArMjky
LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhp
dFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIs
IGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3Zl
cnJpZGU7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxp
bmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVuZGVyVGFibGVDb2wq
IHNsb3dDb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBib29sKiBlbmRF
ZGdlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAppbmRleCAxZTE5YjNkYjM1MTFhMjlhZTZlY2Y2YzNlYjMzMzljNzczMDg1OWYx
Li5kYmM4MTc5Y2E2OTA3N2NhOWM2NmUxZjMyYTA4Y2Q0NjYyZjFhOWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtODY3LDIzICs4
NjcsMjMgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlY2FsY091dGVyQm9yZGVyKCkKICAg
ICBtX291dGVyQm9yZGVyRW5kID0gY2FsY091dGVyQm9yZGVyRW5kKCk7CiB9CiAKLU9wdGlvbmFs
PGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fZ3JpZC5zaXplKCkpCi0gICAgICAgIHJldHVybiBPcHRpb25h
bDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0gICAg
aW50IGZpcnN0TGluZUJhc2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5lOworICAgIExheW91dFVu
aXQgZmlyc3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAgICAgaWYgKGZpcnN0
TGluZUJhc2VsaW5lKQotICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUgKyByb3VuZFRv
SW50KG1fcm93UG9zWzBdKTsKKyAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lICsgbV9y
b3dQb3NbMF07CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJlc3VsdDsKKyAgICBPcHRpb25hbDxMYXlv
dXRVbml0PiByZXN1bHQ7CiAgICAgY29uc3QgUm93JiBmaXJzdFJvdyA9IG1fZ3JpZFswXS5yb3c7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXJzdFJvdy5zaXplKCk7ICsraSkgewogICAg
ICAgICBjb25zdCBDZWxsU3RydWN0JiBjcyA9IGZpcnN0Um93LmF0KGkpOwogICAgICAgICBjb25z
dCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBjcy5wcmltYXJ5Q2VsbCgpOwogICAgICAgICAvLyBP
bmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAgaWYgKGNlbGwg
JiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewotICAgICAgICAgICAgaW50IGNhbmRp
ZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFk
ZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7CisgICAgICAgICAg
ICBMYXlvdXRVbml0IGNhbmRpZGF0ZSA9IGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwtPmJvcmRl
ckFuZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCk7CiAgICAg
ICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5kaWRhdGUpLCBjYW5k
aWRhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IGUzZjk0NjdhYjEwNzBhMjFlM2MzNjNiYWNkNzI3MDAz
ZDZlOWE2ZjcuLjNhNjMwNWJlYzc1Zjg5MDJlMDRjN2QzMDM1NzVlZDQ1OGNmZDZjZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKQEAgLTYyLDcg
KzYyLDcgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJvdygpIGNvbnN0Owog
ICAgIFJlbmRlclRhYmxlUm93KiBsYXN0Um93KCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxpbnQ+
IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0
VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgYWRk
Q2VsbChSZW5kZXJUYWJsZUNlbGwqLCBSZW5kZXJUYWJsZVJvdyogcm93KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCA2OWIxOTNiMWZmMjhi
ZjJkMGU1OGJlNmFlMzE1MmRhOGQ5MjI5YTkwLi42YTM3YjBiM2U3ZDY2MDJkNTdlNjVmNjY2NWU3
YzdhNTUzMGIyYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaApAQCAtOTQsMTIgKzk0LDEyIEBAIHB1YmxpYzoKICAgICB7IH0KICAgICB2aXJ0dWFs
IH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKCkgPSBkZWZhdWx0OwogCi0gICAgaW50
IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBj
b25zdCBvdmVycmlkZQorICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgcG9zaXRpb24pIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAg
ICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUsIGZpcnN0TGlu
ZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RM
aW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRl
ckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJl
bmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgT3B0aW9uYWw8TGF5b3V0VW5p
dD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVj
dGlvbik7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzRmxleGlibGVCb3hJbXBsKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXggMjgzNWM3OTY0NmE2
ZDU3Nzc3MmVjY2Q4ZDBhYjg0MmQ4Y2M5NWI1OS4uMjk4MzA3MDlkODA2MGM5YTMxY2VjYjc4YWE3
MWIwNGY3OWQyMGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC05Miw3ICs5Miw3IEBAIExheW91dFVu
aXQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxpCiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKiB0ZXh0QXJlYUVsZW1lbnQo
KS5yb3dzKCkgKyBub25Db250ZW50SGVpZ2h0OwogfQogCi1pbnQgUmVuZGVyVGV4dENvbnRyb2xN
dWx0aUxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxp
bmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRp
b25Nb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggNzIxYWY5ZjZhMzNmYWY0Yjg5Yzc1MWNiZTkyNDkz
OGI0Y2QzYjA2OS4uNDQwOTRjZTAzMjAzMWZlYzg2OWUzMjNkMzI4MTA2MDY0NWJjMWEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlM
aW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBnZXRBdmVyYWdl
Q2hhcldpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRDb250ZW50TG9n
aWNhbFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5p
dCBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlv
dXRVbml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBsYXlvdXRFeGNs
dWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDQ5MjU5NWQzNDE4M2I5
NDA3MmZiOTEwMDUzOTBhYmNkYjExMDdhY2MuLjY0OTExMzBjY2RjYjU2NmVlY2E2ZmY4N2E5NThl
ZWJmMTk4MWQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmlzSHlwaGVuYXRlZCgp
IGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgUm9vdElubGluZUJveDo6YmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBS
b290SW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuYmFzZWxpbmVQb3NpdGlvbihiYXNlbGlu
ZVR5cGUsIGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRhbExpbmUgOiBW
ZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCBlY2YyYTUwYmQ0Yjc4NjIxNDhlY2Zk
MzBlZDFmZjNkZGY1NTVkYWEyLi45Mjk0MDk2YzFkNTkwN2Y5ODBmMThhZGMwZDlhZjIxNmE2YTc5
Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKQEAgLTExNyw3
ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSHlwaGVuYXRlZCgpIGNvbnN0OwogCi0g
ICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3Qg
ZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0
IGZpbmFsOwogCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5jcHAKaW5kZXggNGJhZTRkMmIyODI4YjY0ZjQ2ZmE2ZTFhZGY5ODM4NmEzYzQ3Y2U0Mi4uMDg0
NTFmZmNkZWRlOGU4MGJlNjAyMmE1NmM3MDA1ZmJjMzA1MDYxOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKQEAgLTk1
LDcgKzk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWlycm9ySWZOZWVkZWQo
TGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXQKICAgICByZXR1cm4gaG9yaXpvbnRh
bE9mZnNldDsKIH0KIAotaW50IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xh
eW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlv
biwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8vIG1h
dGhtbC5jc3Mgc2V0cyBtYXRoIHsgLXdlYmtpdC1saW5lLWJveC1jb250YWluOiBnbHlwaHMgcmVw
bGFjZWQ7IGxpbmUtaGVpZ2h0OiAwOyB9LCBzbyB3aGVuIGxpbmVQb3NpdGlvbk1vZGUgPT0gUG9z
aXRpb25PZkludGVyaW9yTGluZUJveGVzIHdlIHdhbnQgdG8KICAgICAvLyByZXR1cm4gMCBoZXJl
IHRvIG1hdGNoIG91ciBsaW5lLWhlaWdodC4gVGhpcyBtYXR0ZXJzIHdoZW4gUm9vdElubGluZUJv
eDo6YXNjZW50QW5kRGVzY2VudEZvckJveCBpcyBjYWxsZWQgb24gYSBSb290SW5saW5lQm94IGZv
ciBhbiBpbmxpbmUtYmxvY2suCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBMYXlvdXRVbml0IHRvVXNl
clVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25zdCBSZW5kZXJT
dHlsZSYgcwogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxUYWJsZTo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1M
VGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBCeSBkZWZhdWx0IHRo
ZSB2ZXJ0aWNhbCBjZW50ZXIgb2YgPG10YWJsZT4gaXMgYWxpZ25lZCBvbiB0aGUgbWF0aCBheGlz
LgogICAgIC8vIFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJv
eEJhc2VsaW5lLCB3aGljaCByZXR1cm5zIHRoZSBiYXNlbGluZSBvZiB0aGUgZmlyc3Qgcm93IG9m
IGEgPHRhYmxlPi4KLSAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihsb2dpY2FsSGVpZ2h0KCkgLyAy
ICsgYXhpc0hlaWdodChzdHlsZSgpKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoKGxvZ2ljYWxI
ZWlnaHQoKSAvIDIgKyBheGlzSGVpZ2h0KHN0eWxlKCkpKS50b0ludCgpKTsKIH0KIAogdm9pZCBS
ZW5kZXJNYXRoTUxCbG9jazo6bGF5b3V0SXRlbXMoYm9vbCByZWxheW91dENoaWxkcmVuKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5o
CmluZGV4IDBmNmM3NjIyNzc4ODM3ZjI5MWNiZGQ0NzRmNWM4MmI4M2E3MzVjODUuLjNhNjFmZmVm
MTNhZjVhN2M5OWU2ZDQ1MDk5OGY2MWI1YjI2MTRhZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTU5LDcgKzU5LDcg
QEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03ODYxNy4KICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVk
T3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Cisg
ICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRh
aW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShERUJVR19NQVRIX0xBWU9V
VCkKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQm
KTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIExheW91dFVuaXQg
YXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQubG9naWNhbEhlaWdo
dCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihj
aGlsZC5sb2dpY2FsSGVpZ2h0KCkudG9JbnQoKSk7CiAgICAgfQogCiAgICAgdm9pZCBsYXlvdXRC
bG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQg
PSAwX2x1KSBvdmVycmlkZTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlJl
bmRlck1hdGhNTFRhYmxlIjsgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPE1hdGhNTFN0eWxlPiBtX21hdGhNTFN0eWxlOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggZWYzYjY0N2JmZjQ3MmI2NjJmNmRhZGZmYjYzNDY2YWYz
OTk2NDQ4Yy4uZmM1ZDIxNWNkODNkNTIxZTJlYWMwOWRmMjBlYzg2ZGM2YzgwMTQ2MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5jcHAKQEAgLTI3MiwxMCArMjcyLDEwIEBAIHZvaWQgUmVuZGVyTWF0aE1MRnJhY3Rp
b246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNldCwgcm91bmRl
ZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsgbG9naWNhbFdp
ZHRoKCksIExheW91dFVuaXQoYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSkpOwogfQogCi1PcHRp
b25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihmcmFjdGlvbkFzY2VudCgp
KSkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyb3VuZGYoc3RhdGljX2Nhc3Q8ZmxvYXQ+
KGZyYWN0aW9uQXNjZW50KCkpKSk7CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJsb2NrOjpmaXJz
dExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggMjBiNWI0YzlhZWVmNWZkZGM2
MjFmMzcyNWVhZTQ1NGMzNDZkMDU5MC4uMjdmMTRkNzVmMGUyODg4M2VjYTNmMDEyMTk3ZjE3NmFm
OWUxY2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5
b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVp
Z2h0ID0gMF9sdSkgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVsbGlzaGVkT3Bl
cmF0b3IoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRleCA3MGVkOTc3YTYzODE5
ZWFmZGZmNmUyMWQ4NjNjZTIzMTMxZTAzNDA3Li4yYzk3NGNjYjA3ZWI2YzgzNmJjNTI3MWQ5YjU0
NzYwNTQ1ZGMwZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMzAxLDEwICszMDEsMTAgQEAgTGF5
b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNo
aWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERlcHRoQmVsb3dCYXNlbGluZSAtIG1f
c3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhPcGVyYXRvci5kZXNjZW50KCkgKyBt
X21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1h
dGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewog
ICAgIGlmICh1c2VNYXRoT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4o
c3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbWF0aE9wZXJhdG9yLmFzY2VudCgpIC0g
dmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkpKSk7CisgICAgICAgIHJldHVybiBMYXlv
dXRVbml0KHN0YXRpY19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihtX21hdGhP
cGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpKSkpKTsK
ICAgICByZXR1cm4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
T3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
T3BlcmF0b3IuaAppbmRleCA5ZDMxMDk2ZjI0NzM4MDcyMDhiMTQwMmFmMzc5NGNiOTc4ZTFhZmU4
Li5mZTg5YWExYWYyNmEwN2MwMTYwM2ZlMTc5YzcyZTg5ZjY5NzI3ODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5o
CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1hdGhNTE9wZXJh
dG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNJbnZpc2libGVP
cGVyYXRvcigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRP
cGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVyTWF0aE1MT3Bl
cmF0b3IqPih0aGlzKTsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJh
dG9yU2hpZnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAppbmRleCBkMTNjOGI0YmE1ZDExMDU3NDkwMTQw
MWE5OTkyZmFmN2EzMmNkY2M3Li43OTBhZjdhYTM2ZGVhNjIxNDhjYTM5ZTdlNTAzZTNjYTMyYmMy
Y2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFBhZGRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxQYWRkZWQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxQ
YWRkZWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAg
ICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFk
ZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5k
ZXJNYXRoTUxQYWRkZWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBXZSB0
cnkgYW5kIGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUgZnJvbSB0aGUgcG9zaXRpb24gb2YgdGhlIGZp
cnN0IGNoaWxkLgogICAgIExheW91dFVuaXQgYXNjZW50OwpAQCAtMTI0LDcgKzEyNCw3IEBAIE9w
dGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CiAgICAgICAgIGFzY2VudCA9IGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2Vs
aW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSArIHZvZmZzZXQoKTsKICAgICBlbHNlCiAgICAgICAgIGFz
Y2VudCA9IG1wYWRkZWRIZWlnaHQoMCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RkOjps
cm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFzY2VudCkpKTsKKyAgICByZXR1cm4gYXNjZW50Owog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxQYWRkZWQuaAppbmRleCAwZDdmMzEwYWJiNDVmM2EyMDhmMTYyNjExZDcyODhkOWNmYTFj
YmM2Li45M2IzNjZlY2ZlNjJhZTcwZGU0NTJhYmFlMDVkNjM2NDU1ODJjMzA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgK
QEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExv
Z2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRD
aGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwotICAg
IE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAg
TWF0aE1MUGFkZGVkRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9CiAgICAgTGF5
b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggOWIzZWIwODhmYWIzNDM0MjIwYmEw
ZmJhNzlkMmQ4OGM5NTBjZTNhMS4uNTA3ZjY5OGViODk4MDVjYWUwMzYyZmQ2ZDY2YjEwOTBmNjI4
NTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUm93LmNwcApAQCAtNTIsMTMgKzUyLDEzIEBAIE1hdGhNTFJvd0VsZW1lbnQmIFJlbmRl
ck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhN
TFJvd0VsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCi1PcHRpb25hbDxpbnQ+
IFJlbmRlck1hdGhNTFJvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAg
ICAgYXV0byogYmFzZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBpZiAoIWJhc2Vs
aW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVy
biBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3Rh
dGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJh
c2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0
aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFz
ZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOwogfQogCiBzdGF0aWMgUmVuZGVyTWF0aE1MT3Bl
cmF0b3IqIHRvVmVydGljYWxTdHJldGNoeU9wZXJhdG9yKFJlbmRlckJveCogYm94KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKaW5kZXgg
ZTg3NThhZThlYmMxMGE1ZjFhYmQ4NDE5NjdmZDE1YzY4NWJkODkxOC4uMTY5NTY0MjkwNTNlZDY0
ZmM3Zjg3MDg5MDRjMDk4ZDI0ZDIzMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVu
LCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHN0cmV0Y2hWZXJ0aWNhbE9wZXJhdG9yc0FuZExheW91dENoaWxkcmVuKCk7CiAgICAg
dm9pZCBnZXRDb250ZW50Qm91bmRpbmdCb3goTGF5b3V0VW5pdCYgd2lkdGgsIExheW91dFVuaXQm
IGFzY2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAppbmRleCA1
YzE1ZWI0NGE4YjlmODkxMGFlOGM5YmIwMjAxMTMzMWU3YzhjN2MzLi5kYzExYzNiYmM3YjljZmZi
ZTk0YjAyY2VlOTE4NjdiY2JiMGYwN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTQ2NiwxMiArNDY2
LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0
aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBp
ZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Ci0gICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNl
KSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91
dFVuaXQ+KCk7CisgICAgcmV0dXJuIExheW91dFVuaXQocm91bmRmKGFzY2VudEZvckNoaWxkKCpi
YXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmluZGV4IDgyZjI1
NzBmZjhjOTdhNDc1N2FkZTExNGNhN2FkODNiNzkzYjQ2MGMuLjlkMjNhYmUzOTQwZjUyZmY2ZWM2
NGYzZGU3OGJmMWQzYjYzOTcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC01MCw3ICs1MCw3IEBAIHByb3Rl
Y3RlZDoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudCYgZWxlbWVudCgpIGNv
bnN0OwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsK
KyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFs
OwogICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJlbmRlckJveCogYmFz
ZTsKICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCmluZGV4
IDMxMzY5M2E0YWUwNTJmZGIyYjYxYWYwNmY4MmE1YzVkODE2YTkzZTMuLmY5MjQ2NTcxMmRiNzhk
ZjY0NjEzMTI0MWJlNGMwMGNmZGY4ZDI2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04NiwxMSArODYsMTEg
QEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxk
cmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8
aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKIHsKICAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CiAgICAgZ2V0U3BhY2VIZWlnaHRB
bmREZXB0aChoZWlnaHQsIGRlcHRoKTsKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihoZWlnaHQp
OworICAgIHJldHVybiBoZWlnaHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCBiMjU5NzI2MTQ5MmM3MTRj
ZjNhMjBjZmRkM2I3YjcxNjk1OWIwMWI3Li43MjVkNGYyMGEzMjVhYmNhMWZkYzg0YzA3MzU1YjEz
MmQ1NjU2YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJTdHlsZSYpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENo
aWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7Ci0gICAg
T3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAgICBM
YXlvdXRVbml0IHNwYWNlV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNwYWNlSGVpZ2h0QW5k
RGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2Vu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCmluZGV4IDdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2Zjc1NzlhMzM4MTYuLjViMDU1
NmJjZGVhZWNiZjY3ZGFjZDBjNzk1NmQyNDRkZGJlNDA4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCkBAIC01NTQs
MTIgKzU1NCwxMiBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVGcm9tRWxlbWVudCgp
CiAgICAgc2V0TWF0aFZhcmlhbnRHbHlwaERpcnR5KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91
dFVuaXQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpIHsKICAgICAgICAgYXV0byBtYXRoVmFyaWFu
dEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJhY3RlcihtX21h
dGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0aFZhcmlhbnRJc01pcnJvcmVkKTsKICAg
ICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9udCkKLSAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRHbHlwaC5mb250
LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKSk7CisgICAgICAg
ICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoLW1hdGhWYXJp
YW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlwaCkueSgp
KSkpOwogICAgIH0KICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZpcnN0TGluZUJhc2Vs
aW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmgKaW5kZXggYzI2ZjExYWY2MzliM2U5MmVjOTdlMDdjNDBhZmQ0ZjU4MDM5
ZWJlZC4uY2U1M2Q1NTQzMzg3YzI2N2RkMzZlODI1M2EwMGZmYTc4YWVhMmI1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaApA
QCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwYWludChQYWlu
dEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcGFpbnRDaGls
ZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFpbnRJbmZvJiBm
b3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4g
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgbGF5b3V0
QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0
ID0gMF9sdSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424645</attachid>
            <date>2021-03-30 09:00:52 -0700</date>
            <delta_ts>2021-03-30 10:41:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133932-20210330180050.patch</filename>
            <type>text/plain</type>
            <size>73900</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVkODU1N2ZkYjYwMjBh
ODBhZjczNTg2MzBjYWQzNDg4ZTUyOWNmZi4uMGE2ZTQ5MjFkZDhmZDYwNDRiY2RiM2U4MzNhZmNh
YjFiNjI1N2EzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMS0wMy0zMCAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFN1YnBpeGVsIGxheW91dDogU3dp
dGNoIGlubGluZXMnIGJhc2VsaW5lIHBvc2l0aW9uaW5nIGZyb20gaW50IHRvIExheW91dFVuaXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM5MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNo
YW5nZSBjb252ZXJ0cyB0aGUgaW50IHJldHVybnMgdHlwZSB0byBMYXlvdXRVbml0LgorICAgICAg
ICBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgaW1wbGljaXQgdG9JbnQoKSBjYWxscwor
ICAgICAgICBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgZXhwbGljaXQgdG9JbnQoKSBjYWxscy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojphc2NlbnRGb3JDaGlsZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnQ6OmJh
c2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2ht
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5s
aW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aW5saW5lQmxv
Y2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZWRCYXNlbGluZUZyb21C
b3JkZXJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5l
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZp
cnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxpbmUgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFz
ZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRz
OjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmly
c3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVC
YXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oOgorCiAyMDIxLTAzLTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFjY291bnQgZm9yICJjb3ZlciIgYW5kICJjb250YWluIiB3aGVuIGludGVy
cG9sYXRpbmcgYmFja2dyb3VuZC1zaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCmluZGV4IDE1NDAzYTg1ZWRlZmVlYTRhY2NiYjNj
NTM0ZDU1ZGIwMGVhOWYyOGMuLmE4MWU0ZmY2M2E2ZDkwNzQ5N2ZkY2QzMDNjMzkzNWUyZTcyNWIy
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGln
bm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGln
bm1lbnQuY3BwCkBAIC02NSwxNCArNjUsMTYgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGln
bm1lbnQ6OmxvZ2ljYWxBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5
b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRV
bml0IG1hcmdpbiA9IGlzRGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhp
cykgPyBtYXJnaW5VbmRlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3Zl
ckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxpbmUo
aXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBj
aGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoLTEpIDogLTEpOworICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGJhc2VsaW5lOworICAgIGlmIChpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNG
b3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSkKKyAgICAgICAgYmFzZWxpbmUgPSBjaGlsZC5m
aXJzdExpbmVCYXNlbGluZSgpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJveCdzIHVuZGVyIGVk
Z2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCi0gICAgaWYgKGJhc2VsaW5lID09IC0xKSB7CisgICAg
aWYgKCFiYXNlbGluZSkgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFzZWxpbmVBeGlzKGJh
c2VsaW5lQXhpcykpCiAgICAgICAgICAgICByZXR1cm4gaXNGbGlwcGVkV3JpdGluZ01vZGUobV9i
bG9ja0Zsb3cpID8gY2hpbGQuc2l6ZSgpLndpZHRoKCkudG9JbnQoKSArIG1hcmdpbiA6IG1hcmdp
bjsKICAgICAgICAgcmV0dXJuIGNoaWxkLnNpemUoKS5oZWlnaHQoKSArIG1hcmdpbjsKICAgICB9
Ci0gICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luOworICAgIHJldHVybiAqYmFzZWxpbmUgKyBt
YXJnaW47CiB9CiAKIExheW91dFVuaXQgR3JpZEJhc2VsaW5lQWxpZ25tZW50OjpkZXNjZW50Rm9y
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBhc2NlbnQsIEdyaWRBeGlz
IGJhc2VsaW5lQXhpcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAK
aW5kZXggMWE0NTc5YjI5MjQ0MGVkZDRmNmVkYzNkNjM2MDA0NzJhZGZkODE0Mi4uOTMyNDFlMTZk
Yzg3NWVlNDI0NTNmZWQ4MDEzMDQ4NTM2NDJlNGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBmbG9hdCBJbmxpbmVCb3g6OmxvZ2lj
YWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBJbmxpbmVCb3g6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKK0xheW91
dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJveE1vZGVsT2JqZWN0KCktPmJhc2VsaW5lUG9zaXRp
b24oYmFzZWxpbmVUeXBlLCBtX2JpdGZpZWxkcy5maXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkg
PyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCA4MTY3ZTRkZDRhYWZk
NDc0YWM5ZTJjZDdmMmFmZWZkOGExMTNkNjE2Li40ZTU4NTljYWE2YmFiNTlmYTcxYjIwNDY0Mjg2
YTA4NDE1ODY1NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC0yMDQs
NyArMjA0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBGbG9hdFJlY3QobV90b3BMZWZ0LngoKSwgbV90
b3BMZWZ0LnkoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSkgOiBGbG9hdFJlY3Qo
bV90b3BMZWZ0LnkoKSwgbV90b3BMZWZ0LngoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWln
aHQoKSk7IH0KICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRS
ZWN0KHRvcExlZnQoKSwgc2l6ZSgpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyNGRlNTE1MDM2NDAwMTgwNWNjYmMyZDBjZTc0OTI0
MzY4OWRhYzkyLi4yNmU2Yzg0MmE1MTdlZDQyMmM4MjQyMTdmODlhMjFkMmNmNzUwMGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExh
eW91dFJlY3QmIHJlY3QpCiAgICAgZ1RleHRCb3hlc1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJl
Y3QpOwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFw
YXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAppbmRleCAwZjcxN2JkNzZiMDEwOWQxZGNlNDMwYzgxNDE3MDIzOGJhYWI5MDA3
Li42NTRkODc3YWQ4ZjAzZTdjNWU1ZDg1ODc1YTIwYTMyOTRjMGFkNDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRC
b3gqIGZpcnN0LCBjb25zdCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5z
dGFydCgpIDwgc2Vjb25kLT5zdGFydCgpOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgp
IGNvbnN0IGZpbmFsOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gZW1waGFzaXNNYXJrRXhpc3RzQW5k
SXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGM5MmZlYTgzNmI3ZTdjODQ3ZTUyM2E0
YTU5MTJlYzk4NTM5OTVlNDQuLmY5NjViOTg5OWJlMmU4NWE3YzdlNDYyNmFhMGRhNDIxM2RjOWVj
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50OjppbnZhbGlkYXRlKCkKICAg
ICByZXBhaW50KCk7CiB9CiAKLWludCBSZW5kZXJBdHRhY2htZW50OjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUp
IGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckF0dGFjaG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKIHsKICAgICByZXR1cm4gdGhlbWUoKS5hdHRhY2htZW50QmFzZWxpbmUoKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKaW5kZXggZDMyOTIy
YTYwYjI1MTQ4ZjNlYTFmMmZjMzAxMWNmMzRmMGExYmYyMC4uNTBkZDkyNGIzZWFlNzEyZmJiMGRh
M2Y3YzFjMGIzMmVhMTY3YmI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGlu
ZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
TGF5b3V0VW5pdCBtX21pbmltdW1JbnRyaW5zaWNXaWR0aDsKICAgICBib29sIG1fc2hvdWxkRHJh
d0JvcmRlciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDgwMTQwODUyNThmYTdhMmM4NDAwMjY2YTQ3MmQzNjliMDU1ZDAxZDYuLmRmMDcwODk5
MWEzNDljOTIwZTU5ZmM0ZWY4MzJhNzdjMjIyZTdlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQ4MSw3ICsyNDgxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uLAogICAgIHJldHVybiBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogfQogCi1p
bnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3Np
dGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgcmVwbGFjZWQgZWxl
bWVudHMuIE90aGVyd2lzZSwganVzdCBwYXNzIG9mZiB0bwogICAgIC8vIHRoZSBiYXNlIGNsYXNz
LiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhlIHJvb3QgbGluZQpA
QCAtMjUxNiw3ICsyNTE2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAg
IHJldHVybiBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgT3B0aW9u
YWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxpbnQ+KCkg
OiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CisgICAgICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGJhc2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUoKSA/IE9wdGlvbmFsPExheW91dFVu
aXQ+KCkgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CiAgICAgICAgIAogICAgICAg
ICBpZiAoaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSkgewogICAgICAgICAgICAgLy8gSGlzdG9y
aWNhbGx5LCB3ZSBkaWQgdGhpcyBjaGVjayBmb3IgYWxsIGJhc2VsaW5lcy4gQnV0IHdlIGNhbid0
CkBAIC0yNTI2LDcgKzI1MjYsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgogICAgICAgICAg
ICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIHVzZSB0aGlzIGZvciBhbGwgdXNlcyBvZiBkZXByZWNh
dGVkIGZsZXhib3guCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbU9mQ29udGVudCA9IGRp
cmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsg
Y29udGVudEhlaWdodCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpICsgY29udGVu
dFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoYmFzZWxpbmVQb3MgJiYgYmFzZWxpbmVQb3MudmFs
dWUoKSA+IGJvdHRvbU9mQ29udGVudCkKLSAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9w
dGlvbmFsPGludD4oKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9wdGlvbmFsPExh
eW91dFVuaXQ+KCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJhc2VsaW5lUG9zKQogICAgICAg
ICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpICsg
YmFzZWxpbmVQb3MudmFsdWUoKSA6IG1hcmdpblJpZ2h0KCkgKyBiYXNlbGluZVBvcy52YWx1ZSgp
OwpAQCAtMjUzNiw3ICsyNTM2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KIAogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0
aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxl
LmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5
cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
IC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1cm4gTGF5b3V0VW5pdChmb250
TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGly
ZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRv
SW50KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBs
YWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91dFVuaXQgcmVwbGFjZWRIZWlnaHQp
IGNvbnN0CkBAIC0yNTUxLDQzICsyNTUxLDQzIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1p
bkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAg
ICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0
KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1PcHRp
b25hbDxpbnQ+IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewog
ICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+
KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3Vycjsg
Y3VyciA9IGN1cnItPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5pc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25h
bDxpbnQ+IHJlc3VsdCA9IGN1cnItPmZpcnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oY3Vyci0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVl
KCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChjdXJyLT5sb2dpY2FsVG9wKCkg
KyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4K
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0
dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxv
Y2s6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikg
Y29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlz
V3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAg
IGJvb2wgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byogYm94ID0g
bGFzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewog
ICAgICAgICBpZiAoYm94LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7Ci0g
ICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGlu
ZShsaW5lRGlyZWN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGJveC0+
bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3Jk
aW5hdGUgc3BhY2UuCisgICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiByZXN1bHQgPSBi
b3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbikpCisgICAgICAgICAgICByZXR1
cm4gTGF5b3V0VW5pdCgoYm94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSkudG9JbnQo
KSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICB9CiAKICAgICBp
ZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKKyAgICAgICAgcmV0
dXJuIExheW91dFVuaXQoTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAg
ICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JM
aW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMgotICAgICAgICAgICAgKyAobGlu
ZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
IDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSk7CisgICAgICAgICAgICArIChsaW5l
RGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkg
OiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1
dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCBmOWIyZDk4ZGQ5YTllNTlkZTFjYWU5MzYyMTI3NmM2OGQ0MTMz
ZWQ3Li5lZmMwMTU0ZGI4Njg3OWRmMzM3MGFmOTczZjYyOWUwNGY4NWI2ODYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6
CiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3Ig
aW5saW5lLWJsb2NrLgogICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBtaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRS
ZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0KSBjb25z
dDsKIApAQCAtMzUzLDggKzM1Myw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5p
dCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJh
cnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBm
bGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBh
cmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNGQ0
MjQzNDNhYTYzYmM0ZTU2ZDdlY2M5OTJlMGNhMTdkOGFiZmMwNC4uMGQxM2IxNWVjNzI4MDA1ZGUy
MDU4NTAwOGRiZTg0ZDY5MDUyYjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxMDYsNyArMzEwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuCiAgICAgfQogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290
KCkgJiYgIWlzUnVieVJ1bigpICYmICFpc0dyaWRJdGVtKCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CkBAIC0zMTE5LDE2ICszMTE5LDE2IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxv
Y2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAobW9kZXJuTGluZUxheW91dCgpKQotICAgICAgICBy
ZXR1cm4gZmxvb3JUb0ludChtb2Rlcm5MaW5lTGF5b3V0KCktPmZpcnN0TGluZUJhc2VsaW5lKCkp
OworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChmbG9vclRvSW50KG1vZGVybkxpbmVMYXlvdXQo
KS0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQoZmlyc3RSb290
Qm94KCkpOwogICAgIGlmIChzdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAg
ICAgICAgcmV0dXJuIGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuZGVzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkp
OwotICAgIHJldHVybiBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5
bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkp
OworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgp
ICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmRlc2NlbnQoZmlyc3RSb290Qm94KCkt
PmJhc2VsaW5lVHlwZSgpKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoZmlyc3RSb290Qm94KCkt
PmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoZmly
c3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
QmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJl
Y3Rpb24pIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsK
ICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBPcHRpb25hbDxpbnQ+IFJl
bmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5l
RGlyZWN0aQogICAgIGZsb2F0IGJveEhlaWdodCA9IGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRh
bExpbmUgPyBoZWlnaHQoKSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogd2lkdGgoKSArIG1fbWFy
Z2luQm94LmxlZnQoKTsKICAgICBmbG9hdCBsYXN0QmFzZWxpbmUgPSAwOwogICAgIGlmICghY2hp
bGRyZW5JbmxpbmUoKSkgewotICAgICAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxp
bmUgPSBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJs
b2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIWlu
bGluZUJsb2NrQmFzZWxpbmUpCiAgICAgICAgICAgICByZXR1cm4gaW5saW5lQmxvY2tCYXNlbGlu
ZTsKICAgICAgICAgbGFzdEJhc2VsaW5lID0gaW5saW5lQmxvY2tCYXNlbGluZS52YWx1ZSgpOwpA
QCAtMzE1Myw5ICszMTUzLDkgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGkKICAgICAgICAgICAg
IGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICAgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihmb250
TWV0cmljcy5hc2NlbnQoKQorICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoTGF5b3V0VW5p
dChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1
ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRy
aWNzLmhlaWdodCgpKSAvIDIKLSAgICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgp
ICsgcGFkZGluZ1JpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09
IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdo
dCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChjb21wbGV4TGluZUxheW91dCgpKSB7CkBAIC0zMTczLDcgKzMxNzMsNyBAQCBPcHRpb25hbDxp
bnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSBsaW5lRGlyZWN0aQogICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTIHNwZWMgaHR0cDovL3d3
dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sLCB3ZSBzaG91bGRuJ3QgYmUgcGVyZm9ybWlu
ZyB0aGlzIG1pbiwgYnV0IHNob3VsZAogICAgIC8vIGluc3RlYWQgYmUgcmV0dXJuaW5nIGJveEhl
aWdodCBkaXJlY3RseS4gSG93ZXZlciwgd2UgZmVlbCB0aGF0IGEgbWluIGhlcmUgaXMgYmV0dGVy
IGJlaGF2aW9yIChhbmQgaXMgY29uc2lzdGVudAogICAgIC8vIGVub3VnaCB3aXRoIHRoZSBzcGVj
IHRvIG5vdCBjYXVzZSB0b25zIG9mIGJyZWFrYWdlcykuCi0gICAgcmV0dXJuIHN0eWxlKCkub3Zl
cmZsb3dZKCkgPT0gT3ZlcmZsb3c6OlZpc2libGUgPyBsYXN0QmFzZWxpbmUgOiBzdGQ6Om1pbihi
b3hIZWlnaHQsIGxhc3RCYXNlbGluZSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoc3R5bGUoKS5v
dmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWlu
KGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpz
ZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA1N2YyNjljOWIyODhjMDE1MjA0OTg1ZmRl
YjZmNWNhNzVjOWQzMTliLi5mNmE3NjQ5ZTkyNjJhODFkZGM0M2JjYjBmMGRlNDU5OGFlYjAwMTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC00NTAs
OCArNDUwLDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMo
KTsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBi
b29sIGlzTXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtdWx0
aUNvbHVtbkZsb3coKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCAzZjMyNDY2ZGFmYjVmOGU3MjFkNWNkMTI5NzAxZWMwMzQ3ZTVlMzY3Li5lMGY1NDdh
ZGYzY2FkOWQ3ZDEwODMzZTdlZTE0MmI3Nzc5NWNlNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtNDg2Niw3ICs0ODY2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmxpbmVIZWlnaHQoYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24KICAgICByZXR1cm4gMDsKIH0KIAotaW50IFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUq
LykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSBiYXNlbGluZVR5cGUsIGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAog
ewogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZFRv
SW50KGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LnRvcCgpICsgaGVp
Z2h0KCkgKyBtX21hcmdpbkJveC5ib3R0b20oKSA6IG1fbWFyZ2luQm94LnJpZ2h0KCkgKyB3aWR0
aCgpICsgbV9tYXJnaW5Cb3gubGVmdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAppbmRleCBjNWE4ZDhmYzk1N2RkZTM5MDYyYzAzZWExZmFmN2M2ZGNhY2NlNTEyLi4xZTUxMWM5
YzFkYzhiYmZjODJiNTQ5OGVjZjExYTJiNWIwMThjMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC01NDEsOCArNTQxLDggQEAgb3ZlcnJpZGU7CiAgICAgCiAgICAgUmVu
ZGVyTGF5ZXIqIGVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpIGNvbnN0OwogICAgIAotICAg
IHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsPGludD4oKTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9j
a0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxpbnQ+
KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNv
bXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgorICAgIHZpcnR1YWwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBPcHRp
b25hbDxMYXlvdXRVbml0PigpOyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRp
b25hbDxMYXlvdXRVbml0PigpOyB9IC8vIFJldHVybnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNraXAg
dGhpcyBib3ggd2hlbiBjb21wdXRpbmcgdGhlIGJhc2VsaW5lIG9mIGFuIGlubGluZS1ibG9jay4K
IAogICAgIGJvb2wgc2hyaW5rVG9Bdm9pZEZsb2F0cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBhdm9pZHNGbG9hdHMoKSBjb25zdDsKQEAgLTU1NSw3ICs1NTUsNyBAQCBvdmVycmlkZTsKICAg
ICBib29sIGlzRmxleEl0ZW1JbmNsdWRpbmdEZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlz
SW5saW5lKCkgJiYgIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQo
KSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogICAg
IAogICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
TGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggNThjNDg5YWU0ZWRiZGUw
MDYxYWRhZWFmNjljNzBmZjk3YTFmN2M1OC4uMDY1N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVjNWQ4Yjcw
ODMwZjFmNWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlk
ZGVuIGJ5IHN1YmNsYXNzZXMgdG8gZGV0ZXJtaW5lIGxpbmUgaGVpZ2h0IGFuZCBiYXNlbGluZSBw
b3NpdGlvbi4KICAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
TWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRleCA3ZWQ4MTVjNzZh
NGUxMjk3YTZkMTg2YTMyMjJmMDc1MjZkNzQ0YjE2Li4yMTM2MTAwNzZhNTdiMTUwYWNjMjRjMTFh
ODkxNTU2YjZkMGM1MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZy
b21Db250ZW50Qm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uCiAgICAgcmV0
dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5ib3JkZXJUb3AoKSArIGJveC5w
YWRkaW5nVG9wKCkgKyBib3guY29udGVudEhlaWdodCgpIDogYm94LmJvcmRlclJpZ2h0KCkgKyBi
b3gucGFkZGluZ1JpZ2h0KCkgKyBib3guY29udGVudFdpZHRoKCk7CiB9CiAKLWludCBSZW5kZXJC
dXR0b246OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckJ1dHRvbjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBXZSBj
YW5ub3QgcmVseSBvbiBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbigpIGJlY2F1
c2Ugb2YgZmxleGJveGVzIGhhdmUgc29tZSBzcGVjaWFsIGJlaGF2aW9yCiAgICAgLy8gcmVnYXJk
aW5nIGJhc2VsaW5lcyB0aGF0IHNob3VsZG4ndCBhcHBseSB0byBidXR0b25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4IGU5YzRjMGU5OTM5YWI4NDUxZjY1MGE5
OWZmYTY1NTEwY2VkNjk3NDIuLmE0OTM5YzRhMDA3NTAyYTU3ODk0OWZkYzVjYzY1NmNjNzk1ZDUz
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBpbm5lclJlbmRlcmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbm5lci5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW5uZXJSZW5kZXJlcihSZW5kZXJC
bG9jayYpOwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAyY2M5
M2Q2YWQ5M2EwYWQ1MjJjOTA4NTE4ODczYjI5MTJkN2ZjMTIxLi4yZmJjYjYyMzJhMjdjODk1M2Uw
Mzk4NGVjYTBiNTE0OWFiODMzODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE0NCwxMiArMTQ0LDEyIEBAIHZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0CiAgICAgbWluTG9naWNhbFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwogfQogCi1z
dGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KGNvbnN0IFJlbmRlckJv
eCYgYm94LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pCitzdGF0aWMgTGF5b3V0VW5pdCBz
eW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQogewotICAgIHJldHVybiAoZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gYm94LnNpemUoKS5oZWlnaHQoKSA6IGJveC5zaXplKCkud2lkdGgoKSku
dG9JbnQoKTsKKyAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5z
aXplKCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgpLndpZHRoKCkpOwogfQogCi1pbnQgUmVuZGVyRmxl
eGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAg
IGF1dG8gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmICghYmFzZWxpbmUp
CkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaQogICAgIHJldHVy
biBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdp
blRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5k
ZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZp
cnN0TGluZSA8PSAwKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hp
bGQgPSBudWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJC
b3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3Jk
ZXJJdGVyYXRvci5uZXh0KCkpIHsKQEAgLTE4MCwyNSArMTgwLDI1IEBAIE9wdGlvbmFsPGludD4g
UmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAg
ICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgaWYgKCFpc0NvbHVt
bkZsb3coKSAmJiAhbWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcygqYmFzZWxpbmVDaGlsZCkpCi0g
ICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNl
bGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVy
biBMYXlvdXRVbml0KChjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBi
YXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpLnRvSW50KCkpOwogICAgIGlmIChpc0NvbHVtbkZs
b3coKSAmJiBtYWluQXhpc0lzQ2hpbGRJbmxpbmVBeGlzKCpiYXNlbGluZUNoaWxkKSkKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4obWFpbkF4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVD
aGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOworICAgICAgICByZXR1cm4gTGF5
b3V0VW5pdCgobWFpbkF4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGlu
ZUNoaWxkLT5sb2dpY2FsVG9wKCkpLnRvSW50KCkpOwogCi0gICAgT3B0aW9uYWw8aW50PiBiYXNl
bGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gYmFzZWxpbmUgPSBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgp
OwogICAgIGlmICghYmFzZWxpbmUpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNz
IHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQm94QmFzZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBv
dXQgaWYgd2UncmUgYSB3cml0aW5nIG1vZGUgcm9vdC4KICAgICAgICAgLy8gVGhpcyB3b3VsZCBh
bHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBmbGV4Ym94IGlzIG9ydGhvZ29uYWwgdG8gaXRz
IGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lOwotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJv
eCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3Ao
KSk7CisgICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqYmFz
ZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCgoYmFzZWxpbmUu
dmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkudG9JbnQoKSk7CiB9CiAKLU9w
dGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJv
eDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggZTkzZWU3YmFmZmZlNjRmNmEwN2Y2YjAxYjgwNTNm
ZmQ0OTEwZGU3ZS4uMWMyNTE5MTZkNTMyYTFmMGQyZjNmNWE1ZTY5YjBiNzVlYTg4Njg2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTUyLDkg
KzUyLDkgQEAgcHVibGljOgogICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmlu
YWw7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5p
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBoaXRUZXN0Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFk
anVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGU2MjZkOTliNDQ5MTUzOTNmNTYzNDk3NzAxOWRl
OTQyODA4YTRhNzkuLmFmNjRkYTM4ZmQ3YzU5YzE3NGZkYjM3M2RhZTA3MzZkN2UzNDlhNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEyMzMsNyArMTIzMyw3
IEBAIHZvaWQgUmVuZGVyR3JpZDo6dXBkYXRlQXV0b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRl
ZChSZW5kZXJCb3gmIGNoaWxkKQogfQogCiAvLyBGSVhNRTogVGhpcyBsb2dpYyBjb3VsZCBiZSBy
ZWZhY3RvcmVkIHNvbWVob3cgYW5kIGRlZmluZWQgaW4gUmVuZGVyQm94Lgotc3RhdGljIGludCBz
eW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQorc3RhdGljIExheW91dFVuaXQgc3ludGhlc2l6ZWRC
YXNlbGluZUZyb21Cb3JkZXJCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbikKIHsKICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGlu
ZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgpLndpZHRoKCkpLnRvSW50KCk7CiB9
CkBAIC0xMjUzLDcgKzEyNTMsNyBAQCBib29sIFJlbmRlckdyaWQ6OmlzQmFzZWxpbmVBbGlnbm1l
bnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkQXhpcyBiYQogfQogCiAvLyBG
SVhNRTogVGhpcyBsb2dpYyBpcyBzaGFyZWQgYnkgUmVuZGVyRmxleGlibGVCb3gsIHNvIGl0IG1p
Z2h0IGJlIHJlZmFjdG9yZWQgc29tZWhvdy4KLWludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIG1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbW9kZSkgY29uc3QKIHsKICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKICAgICBhdXRvIGJhc2VsaW5lID0g
Zmlyc3RMaW5lQmFzZWxpbmUoKTsKQEAgLTEyNjMsNyArMTI2Myw3IEBAIGludCBSZW5kZXJHcmlk
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uCiAgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyAoZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpKS50b0ludCgpOwogfQog
Ci1PcHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
IHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTI5NCwxMiArMTI5NCwxMiBAQCBP
cHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQmFz
ZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nCiAgICAgICAgIC8v
IG1vZGUgcm9vdC4gVGhpcyB3b3VsZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBncmlk
IGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5l
IDogVmVydGljYWxMaW5lOwotICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21C
b3JkZXJCb3goKmJhc2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBsb2dpY2FsVG9wRm9yQ2hpbGQo
KmJhc2VsaW5lQ2hpbGQpLnRvSW50KCk7CisgICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGxvZ2ljYWxUb3BG
b3JDaGlsZCgqYmFzZWxpbmVDaGlsZCk7CiAgICAgfQotICAgIHJldHVybiBiYXNlbGluZS52YWx1
ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpLnRvSW50KCk7CisgICAgcmV0dXJuIGJh
c2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCk7CiB9CiAKLU9wdGlv
bmFsPGludD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFz
ZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0TGluZUJh
c2VsaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBiYjg1
YzY3Yzg4MjQ1YzcxNTkzZTAwYjFmYmI2NDkxZDRkNjI4ZTBlLi4xZGJlOTFjNzhlNmY2ZjQwODRi
MDZkNDliNGUwMzJjODQxZTdkNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlk
LmgKQEAgLTE2OSw5ICsxNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQXV0b01hcmdp
bnNJbkNvbHVtbkF4aXNJZk5lZWRlZChSZW5kZXJCb3gmKTsKICAgICB2b2lkIHVwZGF0ZUF1dG9N
YXJnaW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVuZGVyQm94Jik7CiAKLSAgICBpbnQgYmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7
Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwotICAg
IE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRV
bml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFs
OwogICAgIGJvb2wgaXNJbmxpbmVCYXNlbGluZUFsaWduZWRDaGlsZChjb25zdCBSZW5kZXJCb3gm
KSBjb25zdDsKIAogICAgIExheW91dFVuaXQgY29sdW1uQXhpc0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hp
bGQoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuY3BwCmluZGV4IDJhY2EwN2QyYTczYjRmOTE4MzlhNWE5ZDc1MGUxOTY2MGM2YjZj
MGQuLjNmODk2MzIzMzA4ZTk4NzI1MmUwNDlhMzY2Nzg3NjY0YWMwZDA5YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTYyLDExICsxMTYyLDExIEBA
IExheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvCiAgICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5l
SGVpZ2h0KCk7CiB9CiAKLWludCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRp
cmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0
VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5l
VHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBv
c2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgp
OwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNz
KCk7Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVI
ZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJp
Y3MuaGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1cm4gKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGlu
ZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1v
ZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKTsKIH0KIAogTGF5b3V0U2l6
ZSBSZW5kZXJJbmxpbmU6Om9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUoY29uc3QgUmVu
ZGVyQm94KiBjaGlsZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
aAppbmRleCAzYmM1MWEwZDQ2MmZmY2RlNGM0ZDdmNmUwNDdlNDg5Y2MwYzFlNDcwLi4yZDRlNzYy
NGNhZWI4YmE1NDBiMWExMWNjMTY3N2EzOTE1ZDE1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpcnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpIGZpbmFsIHsg
bV9saW5lQm94ZXMuZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQog
CiAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qg
ZmluYWw7Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29u
dGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7CiAgICAg
CiAgICAgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlv
dXRQb2ludCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwCmluZGV4IDNmOTZlYjYzMDc2YjA2NzEyMWY4NTFlM2NjZjc3ZDcwODY3NzU4NGMu
LmU3MjhkMTQ5ZjljNGFmNDY1ODQ2MDBkOGVmY2U4NzRmM2UyOTI0OWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAg
TGF5b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWMKICAgICByZXR1cm4gbV9jYWNoZWRMaW5lSGVpZ2h0Owog
fQogCi1pbnQgUmVuZGVyTGluZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyTGluZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKICAg
ICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOwot
ICAgIHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0
KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDI7CisgICAgcmV0dXJuIChmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBl
KSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAt
IGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRvSW50KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggZTU5YmFmMjIx
MjFiMTYxZWNhYTY3NGE4NzUzNDI2MzU0ZjY4YzljZS4uZTc1M2U0NTUwMGUwZmM5ZDJjZWRjZmYx
ZGVkOTY1ZWM2YjRlNTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rp
b25MZWFmKCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5h
bDsKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAg
TGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAg
IExheW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIExh
eW91dFVuaXQgbWFyZ2luQm90dG9tKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA2NGY4MTQ4ODlhNTQ3
ZGZkZWJkMzZlZWYzYzg0M2ZlN2QzYWIzNTIuLjk1MGIxZDdlMzFkMmMwY2Q4NDc3ZGQxYWI2YTM4
YzUwZjU3MmRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZh
bHVlcyBSZW5kZXJMaXN0Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdQogICAgIHJldHVy
biBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGhlaWdodCwgbG9naWNhbFRvcCk7CiB9
CiAKLWludCBSZW5kZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9u
LCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24sIExpbmVQb3Np
dGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyQm94
OjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9u
LCBsaW5lUG9zaXRpb25Nb2RlKSAtIGJhc2VsaW5lQWRqdXN0bWVudDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGM2NzA0MmQxZGVhYjdlYWY5ZGIzMzhj
ZDIzMzQ4ZDUwN2YyNDczMjUuLjIxYmJhYTI3ODA4NjA5ODFlMTgyYWYwZjk5MjZjNGYyMTdlMTM0
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtODcsNyAr
ODcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRo
cyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0
aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92
ZXJyaWRlOwogICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhl
aWdodChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDE1ODEyMTFkYmI2Yzcy
ZmQ4YjFmYWIzNTkzMWQyYmEyMDk5MDZjMzguLjM3NDE3ZmRmNDdiOWRiNjNhMmY2YmUzY2U0YjQw
MDRjYmNiMjI2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5jcHAKQEAgLTE3OTEsNyArMTc5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtl
cjo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0CiAg
ICAgcmV0dXJuIFJlbmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGlu
ZVBvc2l0aW9uTW9kZSk7CiB9CiAKLWludCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKK0xheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAg
aWYgKCFpc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5iYXNlbGluZVBvc2l0
aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlv
ckxpbmVCb3hlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGlzdE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIu
aAppbmRleCAwODQ0ZTk3NmRjZTBmZjQ5ODcyZGUwYzRlZThhMzczZjkzZDU3MWQ2Li45ODFlOTBl
ZTE0MThiZDQ2YmVhMDNmM2IzNGI0MzJjY2ZiZjMwMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gY3JlYXRlSW5saW5lQm94KCkgb3Zl
cnJpZGU7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBi
YXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJv
b2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gIWlzSW1hZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBiZmNiOTkwZjk5M2NkNWNiMWJkZjljZWM1
NmFmNTVhMWVjYWMxZTZiLi5hNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI1LDEy
ICsxMjUsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZsZXhib3ggZGVmaW5lcyBiYXNlbGluZXMg
ZGlmZmVyZW50bHkgdGhhbiByZWd1bGFyIGJsb2Nrcy4KICAgICAvLyBGb3IgYmFja3dhcmRzIGNv
bXBhdGliaWxpdHksIG1lbnVsaXN0cyBuZWVkIHRvIGRvIHRoZSByZWd1bGFyIGJsb2NrIGJlaGF2
aW9yLgotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2Vs
aW5lLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25h
bDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVy
QmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9Cisg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tC
YXNlbGluZShkaXJlY3Rpb24pOyB9CiAKICAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3Io
dW5zaWduZWQgbGlzdEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5k
Q29sb3IpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3Bw
CmluZGV4IDRkMjc4ZDE3MmZkM2UzNzhiNzA1MDRkMWE0YjQ5NGY5MzdkZjlmOWEuLjQ3MTY5ZWRm
OThlMTQyOGM0YTA3NzBmMmY0ZWZjMGI1OGQ4MTNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQm
IFJlbmRlclNsaWRlcjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLWludCBSZW5kZXJTbGlk
ZXI6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5k
ZXJTbGlkZXI6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5l
Ki8sIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBQYXRjaCB0aGlzIGZ1bmN0aW9uIGZvciB3cml0aW5nLW1vZGUuCiAgICAgcmV0dXJu
IGhlaWdodCgpICsgbWFyZ2luVG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xp
ZGVyLmgKaW5kZXggYTMzNzQ5NmQ3NWY1ZmEwNTg2MDI1NzIxOWZiN2JjMTRiNDZlNWRjYi4uM2Jh
MDUxMDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0OTM3ZDMyYTY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xp
ZGVyIjsgfQogICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGUuY3BwCmluZGV4IGEyMTQ4YzIzZjUxNjIzM2M3NjQxYjMwMThmMzBkYmZmMDFhYzhlMjMuLjhm
OGM1ZTNlMGU2NjQyOTIwNWJjMDE1ZTVhYjg1NDc2ZmNlNDVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTQ3MSwzOSArMTQ3MSwzOSBAQCBSZW5kZXJC
bG9jayogUmVuZGVyVGFibGU6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotaW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rp
b24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQg
UmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9u
TW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0
ZShmaXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewogICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpi
YXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQ
b3NpdGlvbk1vZGUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUpIGNvbnN0CiB7CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFu
IGlubGluZS1ibG9jaydzIGJhc2VsaW5lLgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJh
c2VsaW5lIG9mIGEgJ3RhYmxlJyBpcyB0aGUgc2FtZSBhcyB0aGUgJ2lubGluZS10YWJsZScgYmFz
ZWxpbmUgcGVyIENTUyAzIEZsZXhib3ggKENTUyAyLjEKICAgICAvLyBkb2Vzbid0IGRlZmluZSB0
aGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIG9ubHkgYW4gJ2lubGluZS10YWJsZScpLgogICAgIC8v
IFRoaXMgaXMgYWxzbyBuZWVkZWQgdG8gcHJvcGVybHkgZGV0ZXJtaW5lIHRoZSBiYXNlbGluZSBv
ZiBhIGNlbGwgaWYgaXQgaGFzIGEgdGFibGUgY2hpbGQuCiAKICAgICBpZiAoaXNXcml0aW5nTW9k
ZVJvb3QoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7
CiAKICAgICBjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRo
aXMtPnRvcE5vbkVtcHR5U2VjdGlvbigpOwogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQot
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8
TGF5b3V0VW5pdD4oKTsKIAotICAgIGlmIChPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9u
RW1wdHlTZWN0aW9uLT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8aW50Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVl
KCkpOworICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9IHRvcE5vbkVtcHR5
U2VjdGlvbi0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExh
eW91dFVuaXQ+KHRvcE5vbkVtcHR5U2VjdGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxpbmUudmFs
dWUoKSk7CiAKICAgICAvLyBGSVhNRTogQSB0YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJhc2VsaW5l
IHBlciBDU1MgMi4xLiBXaWxsIHRoaXMgcmV0dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAgICByZXR1
cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwog
fQogCiBMYXlvdXRSZWN0IFJlbmRlclRhYmxlOjpvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91
dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBPdmVy
bGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3ksIFBhaW50UGhhc2UgcGhhc2UpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IDZmZTBjYWQyNTNk
ZTM0ZjExODUxZmVlOGZlYTQ3M2ZkZDY1M2JhMjMuLjg4MWE2NzU0OTNkNDc0YzYwYWVmZTQ5Mjkx
ZGJhYzIzOGNlYmI2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBA
IC0yOTIsOSArMjkyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9u
SW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVz
dEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9
IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4g
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAg
TGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVu
ZGVyVGFibGVDb2wqIHNsb3dDb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdl
LCBib29sKiBlbmRFZGdlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCAxZTE5YjNkYjM1MTFhMjlhZTZlY2Y2YzNlYjMz
MzljNzczMDg1OWYxLi5kYmM4MTc5Y2E2OTA3N2NhOWM2NmUxZjMyYTA4Y2Q0NjYyZjFhOWRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApA
QCAtODY3LDIzICs4NjcsMjMgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlY2FsY091dGVy
Qm9yZGVyKCkKICAgICBtX291dGVyQm9yZGVyRW5kID0gY2FsY091dGVyQm9yZGVyRW5kKCk7CiB9
CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZ3JpZC5zaXplKCkpCi0gICAgICAgIHJl
dHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOwogCi0gICAgaW50IGZpcnN0TGluZUJhc2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5lOwor
ICAgIExheW91dFVuaXQgZmlyc3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAg
ICAgaWYgKGZpcnN0TGluZUJhc2VsaW5lKQotICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxp
bmUgKyByb3VuZFRvSW50KG1fcm93UG9zWzBdKTsKKyAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJh
c2VsaW5lICsgbV9yb3dQb3NbMF07CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJlc3VsdDsKKyAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiByZXN1bHQ7CiAgICAgY29uc3QgUm93JiBmaXJzdFJvdyA9IG1f
Z3JpZFswXS5yb3c7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXJzdFJvdy5zaXplKCk7
ICsraSkgewogICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjcyA9IGZpcnN0Um93LmF0KGkpOwog
ICAgICAgICBjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBjcy5wcmltYXJ5Q2VsbCgpOwog
ICAgICAgICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAg
ICAgaWYgKGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewotICAgICAgICAg
ICAgaW50IGNhbmRpZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+
Ym9yZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7
CisgICAgICAgICAgICBMYXlvdXRVbml0IGNhbmRpZGF0ZSA9IGNlbGwtPmxvZ2ljYWxUb3AoKSAr
IGNlbGwtPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVp
Z2h0KCk7CiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5k
aWRhdGUpLCBjYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IGUzZjk0NjdhYjEwNzBhMjFlM2Mz
NjNiYWNkNzI3MDAzZDZlOWE2ZjcuLjNhNjMwNWJlYzc1Zjg5MDJlMDRjN2QzMDM1NzVlZDQ1OGNm
ZDZjZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJv
dygpIGNvbnN0OwogICAgIFJlbmRlclRhYmxlUm93KiBsYXN0Um93KCkgY29uc3Q7CiAKLSAgICBP
cHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIHZvaWQgYWRkQ2VsbChSZW5kZXJUYWJsZUNlbGwqLCBSZW5kZXJUYWJsZVJvdyogcm93KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCA2
OWIxOTNiMWZmMjhiZjJkMGU1OGJlNmFlMzE1MmRhOGQ5MjI5YTkwLi42YTM3YjBiM2U3ZDY2MDJk
NTdlNjVmNjY2NWU3YzdhNTUzMGIyYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuaApAQCAtOTQsMTIgKzk0LDEyIEBAIHB1YmxpYzoKICAgICB7IH0K
ICAgICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKCkgPSBkZWZhdWx0
OwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgcG9zaXRpb24pIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxp
bmUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFs
PGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJC
bG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxv
Y2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KKyAg
ICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jh
c2VsaW5lKGRpcmVjdGlvbik7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzRmxleGlibGVCb3hJ
bXBsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXgg
MjgzNWM3OTY0NmE2ZDU3Nzc3MmVjY2Q4ZDBhYjg0MmQ4Y2M5NWI1OS4uMjk4MzA3MDlkODA2MGM5
YTMxY2VjYjc4YWE3MWIwNGY3OWQyMGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC05Miw3ICs5Miw3
IEBAIExheW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNvbXB1dGVDb250cm9s
TG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpCiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKiB0ZXh0
QXJlYUVsZW1lbnQoKS5yb3dzKCkgKyBub25Db250ZW50SGVpZ2h0OwogfQogCi1pbnQgUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGlu
ZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxp
bmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRl
ckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9u
LCBsaW5lUG9zaXRpb25Nb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggNzIxYWY5ZjZhMzNmYWY0Yjg5
Yzc1MWNiZTkyNDkzOGI0Y2QzYjA2OS4uNDQwOTRjZTAzMjAzMWZlYzg2OWUzMjNkMzI4MTA2MDY0
NWJjMWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sTXVsdGlMaW5lLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBmbG9h
dCBnZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBwcmVmZXJy
ZWRDb250ZW50TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5l
SGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAg
IGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1v
ZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBsYXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDQ5
MjU5NWQzNDE4M2I5NDA3MmZiOTEwMDUzOTBhYmNkYjExMDdhY2MuLjY0OTExMzBjY2RjYjU2NmVl
Y2E2ZmY4N2E5NThlZWJmMTk4MWQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6Omlz
SHlwaGVuYXRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgUm9vdElubGlu
ZUJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAor
TGF5b3V0VW5pdCBSb290SW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuYmFzZWxpbmVQb3Np
dGlvbihiYXNlbGluZVR5cGUsIGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpv
bnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCBlY2YyYTUwYmQ0
Yjc4NjIxNDhlY2ZkMzBlZDFmZjNkZGY1NTVkYWEyLi45Mjk0MDk2YzFkNTkwN2Y5ODBmMThhZGMw
ZDlhZjIxNmE2YTc5Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94
LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSHlwaGVuYXRlZCgp
IGNvbnN0OwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5l
VHlwZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhl
aWdodCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5jcHAKaW5kZXggNGJhZTRkMmIyODI4YjY0ZjQ2ZmE2ZTFhZGY5ODM4NmEz
YzQ3Y2U0Mi4uMDg0NTFmZmNkZWRlOGU4MGJlNjAyMmE1NmM3MDA1ZmJjMzA1MDYxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9j
ay5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWly
cm9ySWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXQKICAgICByZXR1
cm4gaG9yaXpvbnRhbE9mZnNldDsKIH0KIAotaW50IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5l
RGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9k
ZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAog
ewogICAgIC8vIG1hdGhtbC5jc3Mgc2V0cyBtYXRoIHsgLXdlYmtpdC1saW5lLWJveC1jb250YWlu
OiBnbHlwaHMgcmVwbGFjZWQ7IGxpbmUtaGVpZ2h0OiAwOyB9LCBzbyB3aGVuIGxpbmVQb3NpdGlv
bk1vZGUgPT0gUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzIHdlIHdhbnQgdG8KICAgICAvLyBy
ZXR1cm4gMCBoZXJlIHRvIG1hdGNoIG91ciBsaW5lLWhlaWdodC4gVGhpcyBtYXR0ZXJzIHdoZW4g
Um9vdElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveCBpcyBjYWxsZWQgb24gYSBSb290
SW5saW5lQm94IGZvciBhbiBpbmxpbmUtYmxvY2suCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBMYXlv
dXRVbml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBj
b25zdCBSZW5kZXJTdHlsZSYgcwogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRo
TUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyTWF0aE1MVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBC
eSBkZWZhdWx0IHRoZSB2ZXJ0aWNhbCBjZW50ZXIgb2YgPG10YWJsZT4gaXMgYWxpZ25lZCBvbiB0
aGUgbWF0aCBheGlzLgogICAgIC8vIFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gUmVuZGVyVGFibGU6
OmZpcnN0TGluZUJveEJhc2VsaW5lLCB3aGljaCByZXR1cm5zIHRoZSBiYXNlbGluZSBvZiB0aGUg
Zmlyc3Qgcm93IG9mIGEgPHRhYmxlPi4KLSAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihsb2dpY2Fs
SGVpZ2h0KCkgLyAyICsgYXhpc0hlaWdodChzdHlsZSgpKSk7CisgICAgcmV0dXJuIExheW91dFVu
aXQoKGxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBheGlzSGVpZ2h0KHN0eWxlKCkpKS50b0ludCgpKTsK
IH0KIAogdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6bGF5b3V0SXRlbXMoYm9vbCByZWxheW91dENo
aWxkcmVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oCmluZGV4IDBmNmM3NjIyNzc4ODM3ZjI5MWNiZGQ0NzRmNWM4MmI4M2E3MzVj
ODUuLjNhNjFmZmVmMTNhZjVhN2M5OWU2ZDQ1MDk5OGY2MWI1YjI2MTRhZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODYxNy4KICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1
bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICBpbnQgYmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShERUJV
R19NQVRIX0xBWU9VVCkKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGlj
IExheW91dFVuaXQgYXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQu
bG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5l
KCkudmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkudG9JbnQoKSk7CiAgICAgfQogCiAgICAg
dm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxIZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPE1hdGhNTFN0eWxlPiBtX21h
dGhNTFN0eWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggZWYzYjY0N2JmZjQ3MmI2NjJmNmRh
ZGZmYjYzNDY2YWYzOTk2NDQ4Yy4uZmM1ZDIxNWNkODNkNTIxZTJlYWMwOWRmMjBlYzg2ZGM2Yzgw
MTQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTI3MiwxMCArMjcyLDEwIEBAIHZvaWQgUmVuZGVy
TWF0aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9m
ZnNldCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgp
ICsgbG9naWNhbFdpZHRoKCksIExheW91dFVuaXQoYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSkp
OwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihmcmFj
dGlvbkFzY2VudCgpKSkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyb3VuZGYoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGZyYWN0aW9uQXNjZW50KCkpKSk7CiAgICAgcmV0dXJuIFJlbmRlck1hdGhN
TEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggMjBiNWI0
YzlhZWVmNWZkZGM2MjFmMzcyNWVhZTQ1NGMzNDZkMDU5MC4uMjdmMTRkNzVmMGUyODg4M2VjYTNm
MDEyMTk3ZjE3NmFmOWUxY2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwog
ICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBj
b25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVt
YmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRleCA3
MGVkOTc3YTYzODE5ZWFmZGZmNmUyMWQ4NjNjZTIzMTMxZTAzNDA3Li4yYzk3NGNjYjA3ZWI2Yzgz
NmJjNTI3MWQ5YjU0NzYwNTQ1ZGMwZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMzAxLDEwICsz
MDEsMTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGljYWxTdHJldGNo
ZWRPcGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERlcHRoQmVsb3dC
YXNlbGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhPcGVyYXRvci5k
ZXNjZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1PcHRpb25hbDxp
bnQ+IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAogewogICAgIGlmICh1c2VNYXRoT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbWF0aE9wZXJhdG9y
LmFzY2VudCgpIC0gdmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkpKSk7CisgICAgICAg
IHJldHVybiBMYXlvdXRVbml0KHN0YXRpY19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGZs
b2F0PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JT
aGlmdCgpKSkpKTsKICAgICByZXR1cm4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2Vs
aW5lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCA5ZDMxMDk2ZjI0NzM4MDcyMDhiMTQwMmFmMzc5
NGNiOTc4ZTFhZmU4Li5mZTg5YWExYWYyNmEwN2MwMTYwM2ZlMTc5YzcyZTg5ZjY5NzI3ODY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9w
ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRl
ck1hdGhNTE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wg
aXNJbnZpc2libGVPcGVyYXRvcigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVu
ZW1iZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVu
ZGVyTWF0aE1MT3BlcmF0b3IqPih0aGlzKTsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0
cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAppbmRleCBkMTNjOGI0YmE1
ZDExMDU3NDkwMTQwMWE5OTkyZmFmN2EzMmNkY2M3Li43OTBhZjdhYTM2ZGVhNjIxNDhjYTM5ZTdl
NTAzZTNjYTMyYmMyY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBS
ZW5kZXJNYXRoTUxQYWRkZWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5
b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJNYXRoTUxQYWRkZWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsK
ICAgICAvLyBXZSB0cnkgYW5kIGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUgZnJvbSB0aGUgcG9zaXRp
b24gb2YgdGhlIGZpcnN0IGNoaWxkLgogICAgIExheW91dFVuaXQgYXNjZW50OwpAQCAtMTI0LDcg
KzEyNCw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CiAgICAgICAgIGFzY2VudCA9IGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNo
aWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSArIHZvZmZzZXQoKTsKICAgICBlbHNl
CiAgICAgICAgIGFzY2VudCA9IG1wYWRkZWRIZWlnaHQoMCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFzY2VudCkpKTsKKyAgICByZXR1
cm4gYXNjZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCAwZDdmMzEwYWJiNDVmM2EyMDhmMTYyNjEx
ZDcyODhkOWNmYTFjYmM2Li45M2IzNjZlY2ZlNjJhZTcwZGU0NTJhYmFlMDVkNjM2NDU1ODJjMzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFBhZGRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MUGFkZGVkLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUp
IGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5h
bDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZp
bmFsOwogCiAgICAgTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkp
OyB9CiAgICAgTGF5b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggOWIzZWIwODhm
YWIzNDM0MjIwYmEwZmJhNzlkMmQ4OGM5NTBjZTNhMS4uNTA3ZjY5OGViODk4MDVjYWUwMzYyZmQ2
ZDY2YjEwOTBmNjI4NTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNTIsMTMgKzUyLDEzIEBAIE1hdGhNTFJvd0Vs
ZW1lbnQmIFJlbmRlck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PE1hdGhNTFJvd0VsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCi1P
cHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFJvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAor
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiB7CiAgICAgYXV0byogYmFzZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAg
ICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0gICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlbGlu
ZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICByZXR1cm4gTGF5
b3V0VW5pdChzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5l
Q2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOwogfQogCiBzdGF0aWMgUmVu
ZGVyTWF0aE1MT3BlcmF0b3IqIHRvVmVydGljYWxTdHJldGNoeU9wZXJhdG9yKFJlbmRlckJveCog
Ym94KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
Um93LmgKaW5kZXggZTg3NThhZThlYmMxMGE1ZjFhYmQ4NDE5NjdmZDE1YzY4NWJkODkxOC4uMTY5
NTY0MjkwNTNlZDY0ZmM3Zjg3MDg5MDRjMDk4ZDI0ZDIzMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00Miw3ICs0Miw3
IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJp
ZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHN0cmV0Y2hWZXJ0aWNhbE9wZXJhdG9yc0FuZExheW91dENoaWxk
cmVuKCk7CiAgICAgdm9pZCBnZXRDb250ZW50Qm91bmRpbmdCb3goTGF5b3V0VW5pdCYgd2lkdGgs
IExheW91dFVuaXQmIGFzY2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCkgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRz
LmNwcAppbmRleCA1YzE1ZWI0NGE4YjlmODkxMGFlOGM5YmIwMjAxMTMzMWU3YzhjN2MzLi5kYzEx
YzNiYmM3YjljZmZiZTk0YjAyY2VlOTE4NjdiY2JiMGYwN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAg
LTQ2NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2so
Ym9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQo
KTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRC
b3goKTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Ci0g
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZv
ckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPExheW91dFVuaXQ+KCk7CisgICAgcmV0dXJuIExheW91dFVuaXQocm91bmRmKGFzY2Vu
dEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CmluZGV4IDgyZjI1NzBmZjhjOTdhNDc1N2FkZTExNGNhN2FkODNiNzkzYjQ2MGMuLjlkMjNhYmUz
OTQwZjUyZmY2ZWM2NGYzZGU3OGJmMWQzYjYzOTcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC01MCw3ICs1
MCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudCYg
ZWxlbWVudCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IGZpbmFsOwogICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJl
bmRlckJveCogYmFzZTsKICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNw
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3Bh
Y2UuY3BwCmluZGV4IDMxMzY5M2E0YWUwNTJmZGIyYjYxYWYwNmY4MmE1YzVkODE2YTkzZTMuLmY5
MjQ2NTcxMmRiNzhkZjY0NjEzMTI0MWJlNGMwMGNmZGY4ZDI2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04
NiwxMSArODYsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0K
IAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CiAgICAgZ2V0
U3BhY2VIZWlnaHRBbmREZXB0aChoZWlnaHQsIGRlcHRoKTsKLSAgICByZXR1cm4gT3B0aW9uYWw8
aW50PihoZWlnaHQpOworICAgIHJldHVybiBoZWlnaHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCBiMjU5
NzI2MTQ5MmM3MTRjZjNhMjBjZmRkM2I3YjcxNjk1OWIwMWI3Li43MjVkNGYyMGEzMjVhYmNhMWZk
Yzg0YzA3MzU1YjEzMmQ1NjU2YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5k
ZXJTdHlsZSYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjb21wdXRl
UHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkg
ZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFs
OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CiAKICAgICBMYXlvdXRVbml0IHNwYWNlV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNw
YWNlSGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MVG9rZW4uY3BwCmluZGV4IDdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2Zjc1Nzlh
MzM4MTYuLjViMDU1NmJjZGVhZWNiZjY3ZGFjZDBjNzk1NmQyNDRkZGJlNDA4Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4u
Y3BwCkBAIC01NTQsMTIgKzU1NCwxMiBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVG
cm9tRWxlbWVudCgpCiAgICAgc2V0TWF0aFZhcmlhbnRHbHlwaERpcnR5KCk7CiB9CiAKLU9wdGlv
bmFsPGludD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpIHsKICAgICAgICAgYXV0
byBtYXRoVmFyaWFudEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNo
YXJhY3RlcihtX21hdGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0aFZhcmlhbnRJc01p
cnJvcmVkKTsKICAgICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9udCkKLSAgICAgICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlh
bnRHbHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkp
KSk7CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0aWNfY2FzdDxpbnQ+KGxyb3Vu
ZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlw
aC5nbHlwaCkueSgpKSkpOwogICAgIH0KICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZp
cnN0TGluZUJhc2VsaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggYzI2ZjExYWY2MzliM2U5MmVjOTdlMDdj
NDBhZmQ0ZjU4MDM5ZWJlZC4uY2U1M2Q1NTQzMzg3YzI2N2RkMzZlODI1M2EwMGZmYTc4YWVhMmI1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZv
aWQgcGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50Jiwg
UGFpbnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlOwotICAgIE9w
dGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VM
b2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424658</attachid>
            <date>2021-03-30 10:41:12 -0700</date>
            <delta_ts>2021-03-31 00:30:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133932-20210330194110.patch</filename>
            <type>text/plain</type>
            <size>73840</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVkODU1N2ZkYjYwMjBh
ODBhZjczNTg2MzBjYWQzNDg4ZTUyOWNmZi4uMGE2ZTQ5MjFkZDhmZDYwNDRiY2RiM2U4MzNhZmNh
YjFiNjI1N2EzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMS0wMy0zMCAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFN1YnBpeGVsIGxheW91dDogU3dp
dGNoIGlubGluZXMnIGJhc2VsaW5lIHBvc2l0aW9uaW5nIGZyb20gaW50IHRvIExheW91dFVuaXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM5MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNo
YW5nZSBjb252ZXJ0cyB0aGUgaW50IHJldHVybnMgdHlwZSB0byBMYXlvdXRVbml0LgorICAgICAg
ICBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgaW1wbGljaXQgdG9JbnQoKSBjYWxscwor
ICAgICAgICBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgZXhwbGljaXQgdG9JbnQoKSBjYWxscy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojphc2NlbnRGb3JDaGlsZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnQ6OmJh
c2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2ht
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5s
aW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aW5saW5lQmxv
Y2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZWRCYXNlbGluZUZyb21C
b3JkZXJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5l
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZp
cnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxpbmUgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFz
ZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRz
OjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmly
c3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVC
YXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oOgorCiAyMDIxLTAzLTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFjY291bnQgZm9yICJjb3ZlciIgYW5kICJjb250YWluIiB3aGVuIGludGVy
cG9sYXRpbmcgYmFja2dyb3VuZC1zaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCmluZGV4IDE1NDAzYTg1ZWRlZmVlYTRhY2NiYjNj
NTM0ZDU1ZGIwMGVhOWYyOGMuLmE4MWU0ZmY2M2E2ZDkwNzQ5N2ZkY2QzMDNjMzkzNWUyZTcyNWIy
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGln
bm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGln
bm1lbnQuY3BwCkBAIC02NSwxNCArNjUsMTYgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGln
bm1lbnQ6OmxvZ2ljYWxBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5
b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRV
bml0IG1hcmdpbiA9IGlzRGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhp
cykgPyBtYXJnaW5VbmRlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3Zl
ckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxpbmUo
aXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBj
aGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoLTEpIDogLTEpOworICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGJhc2VsaW5lOworICAgIGlmIChpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNG
b3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSkKKyAgICAgICAgYmFzZWxpbmUgPSBjaGlsZC5m
aXJzdExpbmVCYXNlbGluZSgpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJveCdzIHVuZGVyIGVk
Z2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCi0gICAgaWYgKGJhc2VsaW5lID09IC0xKSB7CisgICAg
aWYgKCFiYXNlbGluZSkgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFzZWxpbmVBeGlzKGJh
c2VsaW5lQXhpcykpCiAgICAgICAgICAgICByZXR1cm4gaXNGbGlwcGVkV3JpdGluZ01vZGUobV9i
bG9ja0Zsb3cpID8gY2hpbGQuc2l6ZSgpLndpZHRoKCkudG9JbnQoKSArIG1hcmdpbiA6IG1hcmdp
bjsKICAgICAgICAgcmV0dXJuIGNoaWxkLnNpemUoKS5oZWlnaHQoKSArIG1hcmdpbjsKICAgICB9
Ci0gICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luOworICAgIHJldHVybiAqYmFzZWxpbmUgKyBt
YXJnaW47CiB9CiAKIExheW91dFVuaXQgR3JpZEJhc2VsaW5lQWxpZ25tZW50OjpkZXNjZW50Rm9y
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBhc2NlbnQsIEdyaWRBeGlz
IGJhc2VsaW5lQXhpcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAK
aW5kZXggMWE0NTc5YjI5MjQ0MGVkZDRmNmVkYzNkNjM2MDA0NzJhZGZkODE0Mi4uOTMyNDFlMTZk
Yzg3NWVlNDI0NTNmZWQ4MDEzMDQ4NTM2NDJlNGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBmbG9hdCBJbmxpbmVCb3g6OmxvZ2lj
YWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBJbmxpbmVCb3g6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKK0xheW91
dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJveE1vZGVsT2JqZWN0KCktPmJhc2VsaW5lUG9zaXRp
b24oYmFzZWxpbmVUeXBlLCBtX2JpdGZpZWxkcy5maXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkg
PyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCA4MTY3ZTRkZDRhYWZk
NDc0YWM5ZTJjZDdmMmFmZWZkOGExMTNkNjE2Li40ZTU4NTljYWE2YmFiNTlmYTcxYjIwNDY0Mjg2
YTA4NDE1ODY1NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC0yMDQs
NyArMjA0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBGbG9hdFJlY3QobV90b3BMZWZ0LngoKSwgbV90
b3BMZWZ0LnkoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSkgOiBGbG9hdFJlY3Qo
bV90b3BMZWZ0LnkoKSwgbV90b3BMZWZ0LngoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWln
aHQoKSk7IH0KICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRS
ZWN0KHRvcExlZnQoKSwgc2l6ZSgpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyNGRlNTE1MDM2NDAwMTgwNWNjYmMyZDBjZTc0OTI0
MzY4OWRhYzkyLi4yNmU2Yzg0MmE1MTdlZDQyMmM4MjQyMTdmODlhMjFkMmNmNzUwMGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExh
eW91dFJlY3QmIHJlY3QpCiAgICAgZ1RleHRCb3hlc1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJl
Y3QpOwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFw
YXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAppbmRleCAwZjcxN2JkNzZiMDEwOWQxZGNlNDMwYzgxNDE3MDIzOGJhYWI5MDA3
Li42NTRkODc3YWQ4ZjAzZTdjNWU1ZDg1ODc1YTIwYTMyOTRjMGFkNDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRC
b3gqIGZpcnN0LCBjb25zdCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5z
dGFydCgpIDwgc2Vjb25kLT5zdGFydCgpOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgp
IGNvbnN0IGZpbmFsOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gZW1waGFzaXNNYXJrRXhpc3RzQW5k
SXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGM5MmZlYTgzNmI3ZTdjODQ3ZTUyM2E0
YTU5MTJlYzk4NTM5OTVlNDQuLmY5NjViOTg5OWJlMmU4NWE3YzdlNDYyNmFhMGRhNDIxM2RjOWVj
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50OjppbnZhbGlkYXRlKCkKICAg
ICByZXBhaW50KCk7CiB9CiAKLWludCBSZW5kZXJBdHRhY2htZW50OjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUp
IGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckF0dGFjaG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKIHsKICAgICByZXR1cm4gdGhlbWUoKS5hdHRhY2htZW50QmFzZWxpbmUoKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKaW5kZXggZDMyOTIy
YTYwYjI1MTQ4ZjNlYTFmMmZjMzAxMWNmMzRmMGExYmYyMC4uNTBkZDkyNGIzZWFlNzEyZmJiMGRh
M2Y3YzFjMGIzMmVhMTY3YmI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGlu
ZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
TGF5b3V0VW5pdCBtX21pbmltdW1JbnRyaW5zaWNXaWR0aDsKICAgICBib29sIG1fc2hvdWxkRHJh
d0JvcmRlciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDgwMTQwODUyNThmYTdhMmM4NDAwMjY2YTQ3MmQzNjliMDU1ZDAxZDYuLmRmMDcwODk5
MWEzNDljOTIwZTU5ZmM0ZWY4MzJhNzdjMjIyZTdlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQ4MSw3ICsyNDgxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uLAogICAgIHJldHVybiBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogfQogCi1p
bnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3Np
dGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgcmVwbGFjZWQgZWxl
bWVudHMuIE90aGVyd2lzZSwganVzdCBwYXNzIG9mZiB0bwogICAgIC8vIHRoZSBiYXNlIGNsYXNz
LiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhlIHJvb3QgbGluZQpA
QCAtMjUxNiw3ICsyNTE2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAg
IHJldHVybiBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgT3B0aW9u
YWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxpbnQ+KCkg
OiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CisgICAgICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGJhc2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUoKSA/IE9wdGlvbmFsPExheW91dFVu
aXQ+KCkgOiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CiAgICAgICAgIAogICAgICAg
ICBpZiAoaXNEZXByZWNhdGVkRmxleGlibGVCb3goKSkgewogICAgICAgICAgICAgLy8gSGlzdG9y
aWNhbGx5LCB3ZSBkaWQgdGhpcyBjaGVjayBmb3IgYWxsIGJhc2VsaW5lcy4gQnV0IHdlIGNhbid0
CkBAIC0yNTI2LDcgKzI1MjYsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgogICAgICAgICAg
ICAgLy8gRm9yIHNpbXBsaWNpdHksIHdlIHVzZSB0aGlzIGZvciBhbGwgdXNlcyBvZiBkZXByZWNh
dGVkIGZsZXhib3guCiAgICAgICAgICAgICBMYXlvdXRVbml0IGJvdHRvbU9mQ29udGVudCA9IGRp
cmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsg
Y29udGVudEhlaWdodCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpICsgY29udGVu
dFdpZHRoKCk7CiAgICAgICAgICAgICBpZiAoYmFzZWxpbmVQb3MgJiYgYmFzZWxpbmVQb3MudmFs
dWUoKSA+IGJvdHRvbU9mQ29udGVudCkKLSAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9w
dGlvbmFsPGludD4oKTsKKyAgICAgICAgICAgICAgICBiYXNlbGluZVBvcyA9IE9wdGlvbmFsPExh
eW91dFVuaXQ+KCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGJhc2VsaW5lUG9zKQogICAgICAg
ICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdpblRvcCgpICsg
YmFzZWxpbmVQb3MudmFsdWUoKSA6IG1hcmdpblJpZ2h0KCkgKyBiYXNlbGluZVBvcy52YWx1ZSgp
OwpAQCAtMjUzNiw3ICsyNTM2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KIAogICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0
aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxl
LmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5
cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
IC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1cm4gTGF5b3V0VW5pdChmb250
TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGly
ZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRv
SW50KCk7CiB9CiAKIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1pbkxpbmVIZWlnaHRGb3JSZXBs
YWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91dFVuaXQgcmVwbGFjZWRIZWlnaHQp
IGNvbnN0CkBAIC0yNTUxLDQzICsyNTUxLDQzIEBAIExheW91dFVuaXQgUmVuZGVyQmxvY2s6Om1p
bkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUsIExheW91CiAg
ICAgcmV0dXJuIHN0ZDo6bWF4PExheW91dFVuaXQ+KHJlcGxhY2VkSGVpZ2h0LCBsaW5lSGVpZ2h0
KGlzRmlyc3RMaW5lLCBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykpOwogfQogCi1PcHRp
b25hbDxpbnQ+IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewog
ICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKLSAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+
KCk7CiAKICAgICBmb3IgKFJlbmRlckJveCogY3VyciA9IGZpcnN0Q2hpbGRCb3goKTsgY3Vycjsg
Y3VyciA9IGN1cnItPm5leHRTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKCFjdXJyLT5pc0Zs
b2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpIHsKLSAgICAgICAgICAgIGlmIChPcHRpb25h
bDxpbnQ+IHJlc3VsdCA9IGN1cnItPmZpcnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oY3Vyci0+bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVl
KCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgICAgICBp
ZiAoT3B0aW9uYWw8TGF5b3V0VW5pdD4gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChjdXJyLT5sb2dpY2FsVG9wKCkg
KyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4K
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0
dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxv
Y2s6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikg
Y29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlz
V3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9u
YWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAg
IGJvb2wgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byogYm94ID0g
bGFzdENoaWxkQm94KCk7IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewog
ICAgICAgICBpZiAoYm94LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7Ci0g
ICAgICAgIGlmIChPcHRpb25hbDxpbnQ+IHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGlu
ZShsaW5lRGlyZWN0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGJveC0+
bG9naWNhbFRvcCgpICsgcmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3Jk
aW5hdGUgc3BhY2UuCisgICAgICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiByZXN1bHQgPSBi
b3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbikpCisgICAgICAgICAgICByZXR1
cm4gTGF5b3V0VW5pdCgoYm94LT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSkudG9JbnQo
KSk7IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICB9CiAKICAgICBp
ZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFzTGluZUlmRW1wdHkoKSkgewogICAgICAgICBh
dXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKKyAgICAgICAgcmV0
dXJuIExheW91dFVuaXQoTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAg
ICAgKyAobGluZUhlaWdodCh0cnVlLCBsaW5lRGlyZWN0aW9uLCBQb3NpdGlvbk9mSW50ZXJpb3JM
aW5lQm94ZXMpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMgotICAgICAgICAgICAgKyAobGlu
ZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
IDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSk7CisgICAgICAgICAgICArIChsaW5l
RGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkg
OiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
PigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5kZXJCbG9ja0Zsb3dPclJlbmRlckJ1
dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaAppbmRleCBmOWIyZDk4ZGQ5YTllNTlkZTFjYWU5MzYyMTI3NmM2OGQ0MTMz
ZWQ3Li5lZmMwMTU0ZGI4Njg3OWRmMzM3MGFmOTczZjYyOWUwNGY4NWI2ODYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNjUsNyArNjUsNyBAQCBwcm90ZWN0ZWQ6
CiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3ZlcnJpZGRlbiBmb3Ig
aW5saW5lLWJsb2NrLgogICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBtaW5MaW5lSGVpZ2h0Rm9yUmVwbGFjZWRS
ZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0KSBjb25z
dDsKIApAQCAtMzUzLDggKzM1Myw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRy
aW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5p
dCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgCi0gICAgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIERlbGF5IHVwZGF0aW5nIHNjcm9sbGJh
cnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rp
b24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZAogICAgIC8vIHdoZW4gYSBm
bGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2NlbmRhbnRzLiBJZiBtdWx0aXBsZSBjYWxscyBh
cmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dFRyYW5zYWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggNGQ0
MjQzNDNhYTYzYmM0ZTU2ZDdlY2M5OTJlMGNhMTdkOGFiZmMwNC4uMGQxM2IxNWVjNzI4MDA1ZGUy
MDU4NTAwOGRiZTg0ZDY5MDUyYjNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxMDYsNyArMzEwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tG
bG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlvdXRVbml0IGxvZ2ljYWxUb3AsIExh
eW91dFVuCiAgICAgfQogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6Zmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2tGbG93
OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290
KCkgJiYgIWlzUnVieVJ1bigpICYmICFpc0dyaWRJdGVtKCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CkBAIC0zMTE5LDE2ICszMTE5LDE2IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxv
Y2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZP
Uk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAobW9kZXJuTGluZUxheW91dCgpKQotICAgICAgICBy
ZXR1cm4gZmxvb3JUb0ludChtb2Rlcm5MaW5lTGF5b3V0KCktPmZpcnN0TGluZUJhc2VsaW5lKCkp
OworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChmbG9vclRvSW50KG1vZGVybkxpbmVMYXlvdXQo
KS0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkpOwogI2VuZGlmCiAKICAgICBBU1NFUlQoZmlyc3RSb290
Qm94KCkpOwogICAgIGlmIChzdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkKLSAg
ICAgICAgcmV0dXJuIGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCkuZGVzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkp
OwotICAgIHJldHVybiBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5
bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkp
OworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgp
ICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmRlc2NlbnQoZmlyc3RSb290Qm94KCkt
PmJhc2VsaW5lVHlwZSgpKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoZmlyc3RSb290Qm94KCkt
PmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5hc2NlbnQoZmly
c3RSb290Qm94KCktPmJhc2VsaW5lVHlwZSgpKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
QmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJl
Y3Rpb24pIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsK
ICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBPcHRpb25hbDxpbnQ+IFJl
bmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5l
RGlyZWN0aQogICAgIGZsb2F0IGJveEhlaWdodCA9IGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRh
bExpbmUgPyBoZWlnaHQoKSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogd2lkdGgoKSArIG1fbWFy
Z2luQm94LmxlZnQoKTsKICAgICBmbG9hdCBsYXN0QmFzZWxpbmUgPSAwOwogICAgIGlmICghY2hp
bGRyZW5JbmxpbmUoKSkgewotICAgICAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxp
bmUgPSBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAg
ICAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJs
b2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pOwogICAgICAgICBpZiAoIWlu
bGluZUJsb2NrQmFzZWxpbmUpCiAgICAgICAgICAgICByZXR1cm4gaW5saW5lQmxvY2tCYXNlbGlu
ZTsKICAgICAgICAgbGFzdEJhc2VsaW5lID0gaW5saW5lQmxvY2tCYXNlbGluZS52YWx1ZSgpOwpA
QCAtMzE1Myw5ICszMTUzLDkgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGkKICAgICAgICAgICAg
IGlmICghaGFzTGluZUlmRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogICAgICAgICAgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBmaXJzdExpbmVTdHls
ZSgpLmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihmb250
TWV0cmljcy5hc2NlbnQoKQorICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQoTGF5b3V0VW5p
dChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1
ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRy
aWNzLmhlaWdodCgpKSAvIDIKLSAgICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgp
ICsgcGFkZGluZ1JpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09
IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdo
dCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChjb21wbGV4TGluZUxheW91dCgpKSB7CkBAIC0zMTczLDcgKzMxNzMsNyBAQCBPcHRpb25hbDxp
bnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSBsaW5lRGlyZWN0aQogICAgIC8vIEFjY29yZGluZyB0byB0aGUgQ1NTIHNwZWMgaHR0cDovL3d3
dy53My5vcmcvVFIvQ1NTMjEvdmlzdWRldC5odG1sLCB3ZSBzaG91bGRuJ3QgYmUgcGVyZm9ybWlu
ZyB0aGlzIG1pbiwgYnV0IHNob3VsZAogICAgIC8vIGluc3RlYWQgYmUgcmV0dXJuaW5nIGJveEhl
aWdodCBkaXJlY3RseS4gSG93ZXZlciwgd2UgZmVlbCB0aGF0IGEgbWluIGhlcmUgaXMgYmV0dGVy
IGJlaGF2aW9yIChhbmQgaXMgY29uc2lzdGVudAogICAgIC8vIGVub3VnaCB3aXRoIHRoZSBzcGVj
IHRvIG5vdCBjYXVzZSB0b25zIG9mIGJyZWFrYWdlcykuCi0gICAgcmV0dXJuIHN0eWxlKCkub3Zl
cmZsb3dZKCkgPT0gT3ZlcmZsb3c6OlZpc2libGUgPyBsYXN0QmFzZWxpbmUgOiBzdGQ6Om1pbihi
b3hIZWlnaHQsIGxhc3RCYXNlbGluZSk7CisgICAgcmV0dXJuIExheW91dFVuaXQoc3R5bGUoKS5v
dmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWlu
KGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpz
ZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0ZSBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCA1N2YyNjljOWIyODhjMDE1MjA0OTg1ZmRl
YjZmNWNhNzVjOWQzMTliLi5mNmE3NjQ5ZTkyNjJhODFkZGM0M2JjYjBmMGRlNDU5OGFlYjAwMTgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCkBAIC00NTAs
OCArNDUwLDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBjcmVhdGVGbG9hdGluZ09iamVjdHMo
KTsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1v
ZGUpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5l
QmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBi
b29sIGlzTXVsdGlDb2x1bW5CbG9ja0Zsb3coKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtdWx0
aUNvbHVtbkZsb3coKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCAzZjMyNDY2ZGFmYjVmOGU3MjFkNWNkMTI5NzAxZWMwMzQ3ZTVlMzY3Li5lMGY1NDdh
ZGYzY2FkOWQ3ZDEwODMzZTdlZTE0MmI3Nzc5NWNlNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtNDg2Niw3ICs0ODY2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJC
b3g6OmxpbmVIZWlnaHQoYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24KICAgICByZXR1cm4gMDsKIH0KIAotaW50IFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSAvKmxpbmVQb3NpdGlvbk1vZGUq
LykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSBiYXNlbGluZVR5cGUsIGJvb2wgLypmaXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAog
ewogICAgIGlmIChpc1JlcGxhY2VkKCkpIHsKICAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZFRv
SW50KGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1fbWFyZ2luQm94LnRvcCgpICsgaGVp
Z2h0KCkgKyBtX21hcmdpbkJveC5ib3R0b20oKSA6IG1fbWFyZ2luQm94LnJpZ2h0KCkgKyB3aWR0
aCgpICsgbV9tYXJnaW5Cb3gubGVmdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aAppbmRleCBjNWE4ZDhmYzk1N2RkZTM5MDYyYzAzZWExZmFmN2M2ZGNhY2NlNTEyLi4xZTUxMWM5
YzFkYzhiYmZjODJiNTQ5OGVjZjExYTJiNWIwMThjMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5oCkBAIC01NDEsOCArNTQxLDggQEAgb3ZlcnJpZGU7CiAgICAgCiAgICAgUmVu
ZGVyTGF5ZXIqIGVuY2xvc2luZ0Zsb2F0UGFpbnRpbmdMYXllcigpIGNvbnN0OwogICAgIAotICAg
IHZpcnR1YWwgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJu
IE9wdGlvbmFsPGludD4oKTsgfQotICAgIHZpcnR1YWwgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9j
a0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxpbnQ+
KCk7IH0gLy8gUmV0dXJucyBlbXB0eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNv
bXB1dGluZyB0aGUgYmFzZWxpbmUgb2YgYW4gaW5saW5lLWJsb2NrLgorICAgIHZpcnR1YWwgT3B0
aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBPcHRp
b25hbDxMYXlvdXRVbml0PigpOyB9CisgICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCB7IHJldHVybiBPcHRp
b25hbDxMYXlvdXRVbml0PigpOyB9IC8vIFJldHVybnMgZW1wdHkgaWYgd2Ugc2hvdWxkIHNraXAg
dGhpcyBib3ggd2hlbiBjb21wdXRpbmcgdGhlIGJhc2VsaW5lIG9mIGFuIGlubGluZS1ibG9jay4K
IAogICAgIGJvb2wgc2hyaW5rVG9Bdm9pZEZsb2F0cygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBhdm9pZHNGbG9hdHMoKSBjb25zdDsKQEAgLTU1NSw3ICs1NTUsNyBAQCBvdmVycmlkZTsKICAg
ICBib29sIGlzRmxleEl0ZW1JbmNsdWRpbmdEZXByZWNhdGVkKCkgY29uc3QgeyByZXR1cm4gIWlz
SW5saW5lKCkgJiYgIWlzRmxvYXRpbmdPck91dE9mRmxvd1Bvc2l0aW9uZWQoKSAmJiBwYXJlbnQo
KSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJveEluY2x1ZGluZ0RlcHJlY2F0ZWQoKTsgfQogICAg
IAogICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgTGF5b3V0VW5pdCBvZmZzZXRMZWZ0KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
TGF5b3V0VW5pdCBvZmZzZXRUb3AoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXggNThjNDg5YWU0ZWRiZGUw
MDYxYWRhZWFmNjljNzBmZjk3YTFmN2M1OC4uMDY1N2M2Y2E0MTQwOTgyY2Q0ZTlhZTVjNWQ4Yjcw
ODMwZjFmNWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKQEAgLTIxNiw3ICsyMTYsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVycmlk
ZGVuIGJ5IHN1YmNsYXNzZXMgdG8gZGV0ZXJtaW5lIGxpbmUgaGVpZ2h0IGFuZCBiYXNlbGluZSBw
b3NpdGlvbi4KICAgICB2aXJ0dWFsIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgbWFwQWJzb2x1dGVUb0xvY2FsUG9pbnQo
TWFwQ29vcmRpbmF0ZXNGbGFncywgVHJhbnNmb3JtU3RhdGUmKSBjb25zdCBvdmVycmlkZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmNwcAppbmRleCA3ZWQ4MTVjNzZh
NGUxMjk3YTZkMTg2YTMyMjJmMDc1MjZkNzQ0YjE2Li4yMTM2MTAwNzZhNTdiMTUwYWNjMjRjMTFh
ODkxNTU2YjZkMGM1MjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQnV0dG9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9u
LmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIHN0YXRpYyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZy
b21Db250ZW50Qm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uCiAgICAgcmV0
dXJuIGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5ib3JkZXJUb3AoKSArIGJveC5w
YWRkaW5nVG9wKCkgKyBib3guY29udGVudEhlaWdodCgpIDogYm94LmJvcmRlclJpZ2h0KCkgKyBi
b3gucGFkZGluZ1JpZ2h0KCkgKyBib3guY29udGVudFdpZHRoKCk7CiB9CiAKLWludCBSZW5kZXJC
dXR0b246OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckJ1dHRvbjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBXZSBj
YW5ub3QgcmVseSBvbiBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbigpIGJlY2F1
c2Ugb2YgZmxleGJveGVzIGhhdmUgc29tZSBzcGVjaWFsIGJlaGF2aW9yCiAgICAgLy8gcmVnYXJk
aW5nIGJhc2VsaW5lcyB0aGF0IHNob3VsZG4ndCBhcHBseSB0byBidXR0b25zLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5oCmluZGV4IGU5YzRjMGU5OTM5YWI4NDUxZjY1MGE5
OWZmYTY1NTEwY2VkNjk3NDIuLmE0OTM5YzRhMDA3NTAyYTU3ODk0OWZkYzVjYzY1NmNjNzk1ZDUz
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKQEAgLTYxLDcgKzYx
LDcgQEAgcHVibGljOgogICAgIFJlbmRlckJsb2NrKiBpbm5lclJlbmRlcmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbm5lci5nZXQoKTsgfQogICAgIHZvaWQgc2V0SW5uZXJSZW5kZXJlcihSZW5kZXJC
bG9jayYpOwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwg
TGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAppbmRleCAyY2M5
M2Q2YWQ5M2EwYWQ1MjJjOTA4NTE4ODczYjI5MTJkN2ZjMTIxLi4yZmJjYjYyMzJhMjdjODk1M2Uw
Mzk4NGVjYTBiNTE0OWFiODMzODMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE0NCwxMiArMTQ0LDEyIEBAIHZvaWQgUmVuZGVyRmxl
eGlibGVCb3g6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0CiAgICAgbWluTG9naWNhbFdpZHRoICs9IHNjcm9sbGJhcldpZHRoOwogfQogCi1z
dGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KGNvbnN0IFJlbmRlckJv
eCYgYm94LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pCitzdGF0aWMgTGF5b3V0VW5pdCBz
eW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQogewotICAgIHJldHVybiAoZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gYm94LnNpemUoKS5oZWlnaHQoKSA6IGJveC5zaXplKCkud2lkdGgoKSku
dG9JbnQoKTsKKyAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5z
aXplKCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgpLndpZHRoKCkpOwogfQogCi1pbnQgUmVuZGVyRmxl
eGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAg
IGF1dG8gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmICghYmFzZWxpbmUp
CkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBpbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaQogICAgIHJldHVy
biBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IG1hcmdp
blRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5k
ZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9mSW5GbG93Q2hpbGRyZW5PbkZp
cnN0TGluZSA8PSAwKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICBy
ZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICBSZW5kZXJCb3gqIGJhc2VsaW5lQ2hp
bGQgPSBudWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7CiAgICAgZm9yIChSZW5kZXJC
b3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNoaWxkOyBjaGlsZCA9IG1fb3Jk
ZXJJdGVyYXRvci5uZXh0KCkpIHsKQEAgLTE4MCwyNSArMTgwLDI1IEBAIE9wdGlvbmFsPGludD4g
UmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICB9CiAKICAg
ICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Cisg
ICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCiAgICAgaWYgKCFpc0NvbHVt
bkZsb3coKSAmJiAhbWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcygqYmFzZWxpbmVDaGlsZCkpCi0g
ICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGNyb3NzQXhpc0V4dGVudEZvckNoaWxkKCpiYXNl
bGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVy
biBMYXlvdXRVbml0KChjcm9zc0F4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBi
YXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpLnRvSW50KCkpOwogICAgIGlmIChpc0NvbHVtbkZs
b3coKSAmJiBtYWluQXhpc0lzQ2hpbGRJbmxpbmVBeGlzKCpiYXNlbGluZUNoaWxkKSkKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4obWFpbkF4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVD
aGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpOworICAgICAgICByZXR1cm4gTGF5
b3V0VW5pdCgobWFpbkF4aXNFeHRlbnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGlu
ZUNoaWxkLT5sb2dpY2FsVG9wKCkpLnRvSW50KCkpOwogCi0gICAgT3B0aW9uYWw8aW50PiBiYXNl
bGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gYmFzZWxpbmUgPSBiYXNlbGluZUNoaWxkLT5maXJzdExpbmVCYXNlbGluZSgp
OwogICAgIGlmICghYmFzZWxpbmUpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNz
IHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQm94QmFzZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBv
dXQgaWYgd2UncmUgYSB3cml0aW5nIG1vZGUgcm9vdC4KICAgICAgICAgLy8gVGhpcyB3b3VsZCBh
bHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBmbGV4Ym94IGlzIG9ydGhvZ29uYWwgdG8gaXRz
IGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uID0gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lOwotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJv
eCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3Ao
KSk7CisgICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqYmFz
ZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxp
bmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCgoYmFzZWxpbmUu
dmFsdWUoKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkudG9JbnQoKSk7CiB9CiAKLU9w
dGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJv
eDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggZTkzZWU3YmFmZmZlNjRmNmEwN2Y2YjAxYjgwNTNm
ZmQ0OTEwZGU3ZS4uMWMyNTE5MTZkNTMyYTFmMGQyZjNmNWE1ZTY5YjBiNzVlYTg4Njg2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKQEAgLTUyLDkg
KzUyLDkgQEAgcHVibGljOgogICAgIGJvb2wgY2FuRHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmlu
YWw7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5p
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBoaXRUZXN0Q2hpbGRyZW4oY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFk
anVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGU2MjZkOTliNDQ5MTUzOTNmNTYzNDk3NzAxOWRl
OTQyODA4YTRhNzkuLjg0N2NmOTg0NWMzYzBiYTViZjg1YmFmZjIzNmE2NTljNjNlOGZmZTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHAKQEAgLTEyMzMsNyArMTIzMyw3
IEBAIHZvaWQgUmVuZGVyR3JpZDo6dXBkYXRlQXV0b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRl
ZChSZW5kZXJCb3gmIGNoaWxkKQogfQogCiAvLyBGSVhNRTogVGhpcyBsb2dpYyBjb3VsZCBiZSBy
ZWZhY3RvcmVkIHNvbWVob3cgYW5kIGRlZmluZWQgaW4gUmVuZGVyQm94Lgotc3RhdGljIGludCBz
eW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGlu
ZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQorc3RhdGljIExheW91dFVuaXQgc3ludGhlc2l6ZWRC
YXNlbGluZUZyb21Cb3JkZXJCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25N
b2RlIGRpcmVjdGlvbikKIHsKICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGlu
ZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgpLndpZHRoKCkpLnRvSW50KCk7CiB9
CkBAIC0xMjUzLDcgKzEyNTMsNyBAQCBib29sIFJlbmRlckdyaWQ6OmlzQmFzZWxpbmVBbGlnbm1l
bnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLCBHcmlkQXhpcyBiYQogfQogCiAvLyBG
SVhNRTogVGhpcyBsb2dpYyBpcyBzaGFyZWQgYnkgUmVuZGVyRmxleGlibGVCb3gsIHNvIGl0IG1p
Z2h0IGJlIHJlZmFjdG9yZWQgc29tZWhvdy4KLWludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIG1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckdyaWQ6OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbW9kZSkgY29uc3QKIHsKICAgICBBU1NFUlRfVU5VU0VEKG1vZGUs
IG1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsKICAgICBhdXRvIGJhc2VsaW5lID0g
Zmlyc3RMaW5lQmFzZWxpbmUoKTsKQEAgLTEyNjMsNyArMTI2Myw3IEBAIGludCBSZW5kZXJHcmlk
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uCiAgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyAoZGlyZWN0aW9uID09IEhv
cml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpKS50b0ludCgpOwogfQog
Ci1PcHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
IHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygp
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMTI5NCwxMiArMTI5NCwxMiBAQCBP
cHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQmFz
ZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nCiAgICAgICAgIC8v
IG1vZGUgcm9vdC4gVGhpcyB3b3VsZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBncmlk
IGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlvbk1v
ZGUgZGlyZWN0aW9uID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5l
IDogVmVydGljYWxMaW5lOwotICAgICAgICByZXR1cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21C
b3JkZXJCb3goKmJhc2VsaW5lQ2hpbGQsIGRpcmVjdGlvbikgKyBsb2dpY2FsVG9wRm9yQ2hpbGQo
KmJhc2VsaW5lQ2hpbGQpLnRvSW50KCk7CisgICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGxvZ2ljYWxUb3BG
b3JDaGlsZCgqYmFzZWxpbmVDaGlsZCk7CiAgICAgfQogICAgIHJldHVybiBiYXNlbGluZS52YWx1
ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpLnRvSW50KCk7CiB9CiAKLU9wdGlvbmFs
PGludD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkg
Y29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxp
bmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2Vs
aW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3Jp
ZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaAppbmRleCBiYjg1YzY3
Yzg4MjQ1YzcxNTkzZTAwYjFmYmI2NDkxZDRkNjI4ZTBlLi4xZGJlOTFjNzhlNmY2ZjQwODRiMDZk
NDliNGUwMzJjODQxZTdkNGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgK
QEAgLTE2OSw5ICsxNjksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQXV0b01hcmdpbnNJ
bkNvbHVtbkF4aXNJZk5lZWRlZChSZW5kZXJCb3gmKTsKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJn
aW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVuZGVyQm94Jik7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3Np
dGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGlu
ZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwotICAgIE9w
dGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qg
ZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0
PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwog
ICAgIGJvb2wgaXNJbmxpbmVCYXNlbGluZUFsaWduZWRDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBj
b25zdDsKIAogICAgIExheW91dFVuaXQgY29sdW1uQXhpc0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hpbGQo
Y29uc3QgUmVuZGVyQm94JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCmluZGV4IDJhY2EwN2QyYTczYjRmOTE4MzlhNWE5ZDc1MGUxOTY2MGM2YjZjMGQu
LjNmODk2MzIzMzA4ZTk4NzI1MmUwNDlhMzY2Nzg3NjY0YWMwZDA5YTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0xMTYyLDExICsxMTYyLDExIEBAIExh
eW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSAvKmRpcmVjdGlvCiAgICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVp
Z2h0KCk7CiB9CiAKLWludCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVj
dGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5p
dCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwog
ICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7
Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWln
aHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3Mu
aGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1cm4gKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5
cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
IC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKTsKIH0KIAogTGF5b3V0U2l6ZSBS
ZW5kZXJJbmxpbmU6Om9mZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVy
Qm94KiBjaGlsZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApp
bmRleCAzYmM1MWEwZDQ2MmZmY2RlNGM0ZDdmNmUwNDdlNDg5Y2MwYzFlNDcwLi4yZDRlNzYyNGNh
ZWI4YmE1NDBiMWExMWNjMTY3N2EzOTE1ZDE1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlcklubGluZS5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
cnR5TGluZXNGcm9tQ2hhbmdlZENoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpIGZpbmFsIHsgbV9s
aW5lQm94ZXMuZGlydHlMaW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQogCiAg
ICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmlu
YWw7Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0
aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7CiAgICAgCiAg
ICAgdm9pZCB1cGRhdGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQ
b2ludCYpIGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuY3BwCmluZGV4IDNmOTZlYjYzMDc2YjA2NzEyMWY4NTFlM2NjZjc3ZDcwODY3NzU4NGMuLmU3
MjhkMTQ5ZjljNGFmNDY1ODQ2MDBkOGVmY2U4NzRmM2UyOTI0OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgTGF5
b3V0VW5pdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVE
aXJlY3Rpb25Nb2RlIC8qZGlyZWMKICAgICByZXR1cm4gbV9jYWNoZWRMaW5lSGVpZ2h0OwogfQog
Ci1pbnQgUmVuZGVyTGluZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExp
bmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVy
TGluZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1v
ZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKICAgICBj
b25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOwotICAg
IHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZp
cnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdo
dCgpKSAvIDI7CisgICAgcmV0dXJuIChmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSAr
IChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZv
bnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRvSW50KCk7CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggZTU5YmFmMjIxMjFi
MTYxZWNhYTY3NGE4NzUzNDI2MzU0ZjY4YzljZS4uZTc1M2U0NTUwMGUwZmM5ZDJjZWRjZmYxZGVk
OTY1ZWM2YjRlNTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25M
ZWFmKCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsK
LSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5
b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIExh
eW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIExheW91
dFVuaXQgbWFyZ2luQm90dG9tKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA2NGY4MTQ4ODlhNTQ3ZGZk
ZWJkMzZlZWYzYzg0M2ZlN2QzYWIzNTIuLjk1MGIxZDdlMzFkMmMwY2Q4NDc3ZGQxYWI2YTM4YzUw
ZjU3MmRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
QEAgLTI3Myw3ICsyNzMsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyBSZW5kZXJMaXN0Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdQogICAgIHJldHVybiBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGhlaWdodCwgbG9naWNhbFRvcCk7CiB9CiAK
LWludCBSZW5kZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGlu
ZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uLCBM
aW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyQm94Ojpi
YXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBs
aW5lUG9zaXRpb25Nb2RlKSAtIGJhc2VsaW5lQWRqdXN0bWVudDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGM2NzA0MmQxZGVhYjdlYWY5ZGIzMzhjZDIz
MzQ4ZDUwN2YyNDczMjUuLjIxYmJhYTI3ODA4NjA5ODFlMTgyYWYwZjk5MjZjNGYyMTdlMTM0MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtODcsNyArODcs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDE1ODEyMTFkYmI2YzcyZmQ4
YjFmYWIzNTkzMWQyYmEyMDk5MDZjMzguLjM3NDE3ZmRmNDdiOWRiNjNhMmY2YmUzY2U0YjQwMDRj
YmNiMjI2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAKQEAgLTE3OTEsNyArMTc5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6
bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0CiAgICAg
cmV0dXJuIFJlbmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBv
c2l0aW9uTW9kZSk7CiB9CiAKLWludCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0
aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgaWYg
KCFpc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5iYXNlbGluZVBvc2l0aW9u
KGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxp
bmVCb3hlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApp
bmRleCAwODQ0ZTk3NmRjZTBmZjQ5ODcyZGUwYzRlZThhMzczZjkzZDU3MWQ2Li45ODFlOTBlZTE0
MThiZDQ2YmVhMDNmM2IzNGI0MzJjY2ZiZjMwMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gY3JlYXRlSW5saW5lQm94KCkgb3ZlcnJp
ZGU7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBvdmVycmlkZTsKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0
aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNUZXh0KCkgY29uc3QgeyByZXR1cm4gIWlzSW1hZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBiZmNiOTkwZjk5M2NkNWNiMWJkZjljZWM1NmFm
NTVhMWVjYWMxZTZiLi5hNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2JjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI1LDEyICsx
MjUsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZsZXhib3ggZGVmaW5lcyBiYXNlbGluZXMgZGlm
ZmVyZW50bHkgdGhhbiByZWd1bGFyIGJsb2Nrcy4KICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHksIG1lbnVsaXN0cyBuZWVkIHRvIGRvIHRoZSByZWd1bGFyIGJsb2NrIGJlaGF2aW9y
LgotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBw
b3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5l
LCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxv
Y2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0
aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNl
bGluZShkaXJlY3Rpb24pOyB9CiAKICAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5z
aWduZWQgbGlzdEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29s
b3IpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmlu
ZGV4IDRkMjc4ZDE3MmZkM2UzNzhiNzA1MDRkMWE0YjQ5NGY5MzdkZjlmOWEuLjQ3MTY5ZWRmOThl
MTQyOGM0YTA3NzBmMmY0ZWZjMGI1OGQ4MTNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQmIFJl
bmRlclNsaWRlcjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLWludCBSZW5kZXJTbGlkZXI6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJT
bGlkZXI6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8s
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBQYXRjaCB0aGlzIGZ1bmN0aW9uIGZvciB3cml0aW5nLW1vZGUuCiAgICAgcmV0dXJuIGhl
aWdodCgpICsgbWFyZ2luVG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVy
LmgKaW5kZXggYTMzNzQ5NmQ3NWY1ZmEwNTg2MDI1NzIxOWZiN2JjMTRiNDZlNWRjYi4uM2JhMDUx
MDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0OTM3ZDMyYTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVy
IjsgfQogICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWlu
aW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCmluZGV4IGEyMTQ4YzIzZjUxNjIzM2M3NjQxYjMwMThmMzBkYmZmMDFhYzhlMjMuLjhmOGM1
ZTNlMGU2NjQyOTIwNWJjMDE1ZTVhYjg1NDc2ZmNlNDVlODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTQ3MSwzOSArMTQ3MSwzOSBAQCBSZW5kZXJCbG9j
ayogUmVuZGVyVGFibGU6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotaW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShm
aXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewogICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNl
bGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3Np
dGlvbk1vZGUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjppbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0CiB7CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFuIGlu
bGluZS1ibG9jaydzIGJhc2VsaW5lLgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAg
cmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
VGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJhc2Vs
aW5lIG9mIGEgJ3RhYmxlJyBpcyB0aGUgc2FtZSBhcyB0aGUgJ2lubGluZS10YWJsZScgYmFzZWxp
bmUgcGVyIENTUyAzIEZsZXhib3ggKENTUyAyLjEKICAgICAvLyBkb2Vzbid0IGRlZmluZSB0aGUg
YmFzZWxpbmUgb2YgYSAndGFibGUnIG9ubHkgYW4gJ2lubGluZS10YWJsZScpLgogICAgIC8vIFRo
aXMgaXMgYWxzbyBuZWVkZWQgdG8gcHJvcGVybHkgZGV0ZXJtaW5lIHRoZSBiYXNlbGluZSBvZiBh
IGNlbGwgaWYgaXQgaGFzIGEgdGFibGUgY2hpbGQuCiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJv
b3QoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAK
ICAgICBjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMt
PnRvcE5vbkVtcHR5U2VjdGlvbigpOwogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5
b3V0VW5pdD4oKTsKIAotICAgIGlmIChPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1w
dHlTZWN0aW9uLT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8
aW50Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkp
OworICAgIGlmIChPcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9IHRvcE5vbkVtcHR5U2Vj
dGlvbi0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91
dFVuaXQ+KHRvcE5vbkVtcHR5U2VjdGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxpbmUudmFsdWUo
KSk7CiAKICAgICAvLyBGSVhNRTogQSB0YWJsZSByb3cgYWx3YXlzIGhhcyBhIGJhc2VsaW5lIHBl
ciBDU1MgMi4xLiBXaWxsIHRoaXMgcmV0dXJuIHRoZSByaWdodCB2YWx1ZT8KLSAgICByZXR1cm4g
T3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogfQog
CiBMYXlvdXRSZWN0IFJlbmRlclRhYmxlOjpvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91dFBv
aW50JiBsb2NhdGlvbiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBPdmVybGF5
U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3ksIFBhaW50UGhhc2UgcGhhc2UpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCmluZGV4IDZmZTBjYWQyNTNkZTM0
ZjExODUxZmVlOGZlYTQ3M2ZkZDY1M2JhMjMuLjg4MWE2NzU0OTNkNDc0YzYwYWVmZTQ5MjkxZGJh
YzIzOGNlYmI2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oCkBAIC0y
OTIsOSArMjkyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2Fs
V2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVx
dWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5D
b250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFj
dGlvbikgb3ZlcnJpZGU7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBv
c2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5s
aW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5
b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVuZGVy
VGFibGVDb2wqIHNsb3dDb2xFbGVtZW50KHVuc2lnbmVkIGNvbCwgYm9vbCogc3RhcnRFZGdlLCBi
b29sKiBlbmRFZGdlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCAxZTE5YjNkYjM1MTFhMjlhZTZlY2Y2YzNlYjMzMzlj
NzczMDg1OWYxLi5kYmM4MTc5Y2E2OTA3N2NhOWM2NmUxZjMyYTA4Y2Q0NjYyZjFhOWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAt
ODY3LDIzICs4NjcsMjMgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlY2FsY091dGVyQm9y
ZGVyKCkKICAgICBtX291dGVyQm9yZGVyRW5kID0gY2FsY091dGVyQm9yZGVyRW5kKCk7CiB9CiAK
LU9wdGlvbmFsPGludD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoIW1fZ3JpZC5zaXplKCkpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pigp
OwogCi0gICAgaW50IGZpcnN0TGluZUJhc2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5lOworICAg
IExheW91dFVuaXQgZmlyc3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CiAgICAg
aWYgKGZpcnN0TGluZUJhc2VsaW5lKQotICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUg
KyByb3VuZFRvSW50KG1fcm93UG9zWzBdKTsKKyAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2Vs
aW5lICsgbV9yb3dQb3NbMF07CiAKLSAgICBPcHRpb25hbDxpbnQ+IHJlc3VsdDsKKyAgICBPcHRp
b25hbDxMYXlvdXRVbml0PiByZXN1bHQ7CiAgICAgY29uc3QgUm93JiBmaXJzdFJvdyA9IG1fZ3Jp
ZFswXS5yb3c7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaXJzdFJvdy5zaXplKCk7ICsr
aSkgewogICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjcyA9IGZpcnN0Um93LmF0KGkpOwogICAg
ICAgICBjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwgPSBjcy5wcmltYXJ5Q2VsbCgpOwogICAg
ICAgICAvLyBPbmx5IGNlbGxzIHdpdGggY29udGVudCBoYXZlIGEgYmFzZWxpbmUKICAgICAgICAg
aWYgKGNlbGwgJiYgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSkgewotICAgICAgICAgICAg
aW50IGNhbmRpZGF0ZSA9IHJvdW5kVG9JbnQoY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9y
ZGVyQW5kUGFkZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKSk7Cisg
ICAgICAgICAgICBMYXlvdXRVbml0IGNhbmRpZGF0ZSA9IGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNl
bGwtPmJvcmRlckFuZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0
KCk7CiAgICAgICAgICAgICByZXN1bHQgPSBzdGQ6Om1heChyZXN1bHQudmFsdWVPcihjYW5kaWRh
dGUpLCBjYW5kaWRhdGUpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IGUzZjk0NjdhYjEwNzBhMjFlM2MzNjNi
YWNkNzI3MDAzZDZlOWE2ZjcuLjNhNjMwNWJlYzc1Zjg5MDJlMDRjN2QzMDM1NzVlZDQ1OGNmZDZj
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgK
QEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgIFJlbmRlclRhYmxlUm93KiBmaXJzdFJvdygp
IGNvbnN0OwogICAgIFJlbmRlclRhYmxlUm93KiBsYXN0Um93KCkgY29uc3Q7CiAKLSAgICBPcHRp
b25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgYWRkQ2VsbChSZW5kZXJUYWJsZUNlbGwqLCBSZW5kZXJUYWJsZVJvdyogcm93KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaAppbmRleCA2OWIx
OTNiMWZmMjhiZjJkMGU1OGJlNmFlMzE1MmRhOGQ5MjI5YTkwLi42YTM3YjBiM2U3ZDY2MDJkNTdl
NjVmNjY2NWU3YzdhNTUzMGIyYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGV4dENvbnRyb2wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2wuaApAQCAtOTQsMTIgKzk0LDEyIEBAIHB1YmxpYzoKICAgICB7IH0KICAg
ICB2aXJ0dWFsIH5SZW5kZXJUZXh0Q29udHJvbElubmVyQ29udGFpbmVyKCkgPSBkZWZhdWx0Owog
Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBv
c2l0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBk
aXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgcG9zaXRpb24pIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmUs
IGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAgIE9wdGlvbmFsPGlu
dD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9j
azo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KKyAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rp
b24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKGRpcmVjdGlvbik7IH0KIAogcHJpdmF0ZToKICAgICBib29sIGlzRmxleGlibGVCb3hJbXBs
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKaW5kZXggMjgz
NWM3OTY0NmE2ZDU3Nzc3MmVjY2Q4ZDBhYjg0MmQ4Y2M5NWI1OS4uMjk4MzA3MDlkODA2MGM5YTMx
Y2VjYjc4YWE3MWIwNGY3OWQyMGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IExheW91dFVuaXQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmNvbXB1dGVDb250cm9sTG9n
aWNhbEhlaWdodChMYXlvdXRVbml0IGxpCiAgICAgcmV0dXJuIGxpbmVIZWlnaHQgKiB0ZXh0QXJl
YUVsZW1lbnQoKS5yb3dzKCkgKyBub25Db250ZW50SGVpZ2h0OwogfQogCi1pbnQgUmVuZGVyVGV4
dENvbnRyb2xNdWx0aUxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5l
VHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBv
c2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJUZXh0
Q29udHJvbE11bHRpTGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9z
aXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJlbmRlckJv
eDo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBs
aW5lUG9zaXRpb25Nb2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmgKaW5kZXggNzIxYWY5ZjZhMzNmYWY0Yjg5Yzc1
MWNiZTkyNDkzOGI0Y2QzYjA2OS4uNDQwOTRjZTAzMjAzMWZlYzg2OWUzMjNkMzI4MTA2MDY0NWJj
MWEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRD
b250cm9sTXVsdGlMaW5lLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBn
ZXRBdmVyYWdlQ2hhcldpZHRoKCkgb3ZlcnJpZGU7CiAgICAgTGF5b3V0VW5pdCBwcmVmZXJyZWRD
b250ZW50TG9naWNhbFdpZHRoKGZsb2F0IGNoYXJXaWR0aCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
TGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVp
Z2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIGlu
dCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUg
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBs
YXlvdXRFeGNsdWRlZENoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbikgb3ZlcnJpZGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDQ5MjU5
NWQzNDE4M2I5NDA3MmZiOTEwMDUzOTBhYmNkYjExMDdhY2MuLjY0OTExMzBjY2RjYjU2NmVlY2E2
ZmY4N2E5NThlZWJmMTk4MWQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5jcHAKQEAgLTEwMSw3ICsxMDEsNyBAQCBib29sIFJvb3RJbmxpbmVCb3g6OmlzSHlw
aGVuYXRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgUm9vdElubGluZUJv
eDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5
b3V0VW5pdCBSb290SW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZVR5cGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlbmRlcmVyKCkuYmFzZWxpbmVQb3NpdGlv
bihiYXNlbGluZVR5cGUsIGlzRmlyc3RMaW5lKCksIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRh
bExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAppbmRleCBlY2YyYTUwYmQ0Yjc4
NjIxNDhlY2ZkMzBlZDFmZjNkZGY1NTVkYWEyLi45Mjk0MDk2YzFkNTkwN2Y5ODBmMThhZGMwZDlh
ZjIxNmE2YTc5Yjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElu
bGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgK
QEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzSHlwaGVuYXRlZCgpIGNv
bnN0OwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSBiYXNlbGluZVR5cGUpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdo
dCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5jcHAKaW5kZXggNGJhZTRkMmIyODI4YjY0ZjQ2ZmE2ZTFhZGY5ODM4NmEzYzQ3
Y2U0Mi4uMDg0NTFmZmNkZWRlOGU4MGJlNjAyMmE1NmM3MDA1ZmJjMzA1MDYxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAKQEAgLTk1LDcgKzk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWlycm9y
SWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXQKICAgICByZXR1cm4g
aG9yaXpvbnRhbE9mZnNldDsKIH0KIAotaW50IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkg
Y29uc3QKK0xheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
IGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewog
ICAgIC8vIG1hdGhtbC5jc3Mgc2V0cyBtYXRoIHsgLXdlYmtpdC1saW5lLWJveC1jb250YWluOiBn
bHlwaHMgcmVwbGFjZWQ7IGxpbmUtaGVpZ2h0OiAwOyB9LCBzbyB3aGVuIGxpbmVQb3NpdGlvbk1v
ZGUgPT0gUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzIHdlIHdhbnQgdG8KICAgICAvLyByZXR1
cm4gMCBoZXJlIHRvIG1hdGNoIG91ciBsaW5lLWhlaWdodC4gVGhpcyBtYXR0ZXJzIHdoZW4gUm9v
dElubGluZUJveDo6YXNjZW50QW5kRGVzY2VudEZvckJveCBpcyBjYWxsZWQgb24gYSBSb290SW5s
aW5lQm94IGZvciBhbiBpbmxpbmUtYmxvY2suCkBAIC0xNzYsMTEgKzE3NiwxMSBAQCBMYXlvdXRV
bml0IHRvVXNlclVuaXRzKGNvbnN0IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgbGVuZ3RoLCBjb25z
dCBSZW5kZXJTdHlsZSYgcwogICAgIH0KIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxU
YWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVu
ZGVyTWF0aE1MVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAvLyBCeSBk
ZWZhdWx0IHRoZSB2ZXJ0aWNhbCBjZW50ZXIgb2YgPG10YWJsZT4gaXMgYWxpZ25lZCBvbiB0aGUg
bWF0aCBheGlzLgogICAgIC8vIFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gUmVuZGVyVGFibGU6OmZp
cnN0TGluZUJveEJhc2VsaW5lLCB3aGljaCByZXR1cm5zIHRoZSBiYXNlbGluZSBvZiB0aGUgZmly
c3Qgcm93IG9mIGEgPHRhYmxlPi4KLSAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihsb2dpY2FsSGVp
Z2h0KCkgLyAyICsgYXhpc0hlaWdodChzdHlsZSgpKSk7CisgICAgcmV0dXJuIExheW91dFVuaXQo
KGxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBheGlzSGVpZ2h0KHN0eWxlKCkpKS50b0ludCgpKTsKIH0K
IAogdm9pZCBSZW5kZXJNYXRoTUxCbG9jazo6bGF5b3V0SXRlbXMoYm9vbCByZWxheW91dENoaWxk
cmVuKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxCbG9jay5oCmluZGV4IDBmNmM3NjIyNzc4ODM3ZjI5MWNiZGQ0NzRmNWM4MmI4M2E3MzVjODUu
LjNhNjFmZmVmMTNhZjVhN2M5OWU2ZDQ1MDk5OGY2MWI1YjI2MTRhZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKQEAgLTU5
LDcgKzU5LDcgQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODYxNy4KICAgICB2aXJ0dWFsIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVt
YmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICBpbnQgYmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogI2lmIEVOQUJMRShERUJVR19N
QVRIX0xBWU9VVCkKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmKTsKQEAgLTgyLDcgKzgyLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIExh
eW91dFVuaXQgYXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoY2hpbGQubG9n
aWNhbEhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCku
dmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkudG9JbnQoKSk7CiAgICAgfQogCiAgICAgdm9p
ZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2lj
YWxIZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxUYWJsZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIlJlbmRlck1hdGhNTFRhYmxlIjsgfQotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgUmVmPE1hdGhNTFN0eWxlPiBtX21hdGhN
TFN0eWxlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggZWYzYjY0N2JmZjQ3MmI2NjJmNmRhZGZm
YjYzNDY2YWYzOTk2NDQ4Yy4uZmM1ZDIxNWNkODNkNTIxZTJlYWMwOWRmMjBlYzg2ZGM2YzgwMTQ2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTI3MiwxMCArMjcyLDEwIEBAIHZvaWQgUmVuZGVyTWF0
aE1MRnJhY3Rpb246OnBhaW50KFBhaW50SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0CiAgICAgaW5mby5jb250ZXh0KCkuZHJhd0xpbmUoYWRqdXN0ZWRQYWludE9mZnNl
dCwgcm91bmRlZEludFBvaW50KExheW91dFBvaW50KGFkanVzdGVkUGFpbnRPZmZzZXQueCgpICsg
bG9naWNhbFdpZHRoKCksIExheW91dFVuaXQoYWRqdXN0ZWRQYWludE9mZnNldC55KCkpKSkpOwog
fQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1ZhbGlkKCkpCi0gICAgICAgIHJl
dHVybiBPcHRpb25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihmcmFjdGlv
bkFzY2VudCgpKSkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChyb3VuZGYoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGZyYWN0aW9uQXNjZW50KCkpKSk7CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTEJs
b2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggMjBiNWI0Yzlh
ZWVmNWZkZGM2MjFmMzcyNWVhZTQ1NGMzNDZkMDU5MC4uMjdmMTRkNzVmMGUyODg4M2VjYTNmMDEy
MTk3ZjE3NmFmOWUxY2JlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaApAQCAtNTEsNyArNTEsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAg
IHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VM
b2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBwYWludChQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpIGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1bmVtYmVs
bGlzaGVkT3BlcmF0b3IoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAppbmRleCA3MGVk
OTc3YTYzODE5ZWFmZGZmNmUyMWQ4NjNjZTIzMTMxZTAzNDA3Li4yYzk3NGNjYjA3ZWI2YzgzNmJj
NTI3MWQ5YjU0NzYwNTQ1ZGMwZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApAQCAtMzAxLDEwICszMDEs
MTAgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6dmVydGljYWxTdHJldGNoZWRP
cGVyYXRvclNoaWZ0KCkgY29uc3QKICAgICByZXR1cm4gKG1fc3RyZXRjaERlcHRoQmVsb3dCYXNl
bGluZSAtIG1fc3RyZXRjaEhlaWdodEFib3ZlQmFzZWxpbmUgLSBtX21hdGhPcGVyYXRvci5kZXNj
ZW50KCkgKyBtX21hdGhPcGVyYXRvci5hc2NlbnQoKSkgLyAyOwogfQogCi1PcHRpb25hbDxpbnQ+
IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25h
bDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBj
b25zdAogewogICAgIGlmICh1c2VNYXRoT3BlcmF0b3IoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbWF0aE9wZXJhdG9yLmFz
Y2VudCgpIC0gdmVydGljYWxTdHJldGNoZWRPcGVyYXRvclNoaWZ0KCkpKSk7CisgICAgICAgIHJl
dHVybiBMYXlvdXRVbml0KHN0YXRpY19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0
PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlm
dCgpKSkpKTsKICAgICByZXR1cm4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5l
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MT3BlcmF0b3IuaAppbmRleCA5ZDMxMDk2ZjI0NzM4MDcyMDhiMTQwMmFmMzc5NGNi
OTc4ZTFhZmU4Li5mZTg5YWExYWYyNmEwN2MwMTYwM2ZlMTc5YzcyZTg5ZjY5NzI3ODY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5oCkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1JlbmRlck1h
dGhNTE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNJ
bnZpc2libGVPcGVyYXRvcigpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1i
ZWxsaXNoZWRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGNvbnN0X2Nhc3Q8UmVuZGVy
TWF0aE1MT3BlcmF0b3IqPih0aGlzKTsgfQogCiAgICAgTGF5b3V0VW5pdCB2ZXJ0aWNhbFN0cmV0
Y2hlZE9wZXJhdG9yU2hpZnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAppbmRleCBkMTNjOGI0YmE1ZDEx
MDU3NDkwMTQwMWE5OTkyZmFmN2EzMmNkY2M3Li43OTBhZjdhYTM2ZGVhNjIxNDhjYTM5ZTdlNTAz
ZTNjYTMyYmMyY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBSZW5k
ZXJNYXRoTUxQYWRkZWQ6OmxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
TWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRV
bml0PiBSZW5kZXJNYXRoTUxQYWRkZWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAg
ICAvLyBXZSB0cnkgYW5kIGNhbGN1bGF0ZSB0aGUgYmFzZWxpbmUgZnJvbSB0aGUgcG9zaXRpb24g
b2YgdGhlIGZpcnN0IGNoaWxkLgogICAgIExheW91dFVuaXQgYXNjZW50OwpAQCAtMTI0LDcgKzEy
NCw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CiAgICAgICAgIGFzY2VudCA9IGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNoaWxk
KSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSArIHZvZmZzZXQoKTsKICAgICBlbHNlCiAg
ICAgICAgIGFzY2VudCA9IG1wYWRkZWRIZWlnaHQoMCk7Ci0gICAgcmV0dXJuIE9wdGlvbmFsPGlu
dD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFzY2VudCkpKTsKKyAgICByZXR1cm4g
YXNjZW50OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxQYWRkZWQuaAppbmRleCAwZDdmMzEwYWJiNDVmM2EyMDhmMTYyNjExZDcy
ODhkOWNmYTFjYmM2Li45M2IzNjZlY2ZlNjJhZTcwZGU0NTJhYmFlMDVkNjM2NDU1ODJjMzA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBh
ZGRlZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
UGFkZGVkLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29tcHV0ZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIGZp
bmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsK
KyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFs
OwogCiAgICAgTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PE1hdGhNTFBhZGRlZEVsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOyB9
CiAgICAgTGF5b3V0VW5pdCB2b2Zmc2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKaW5kZXggOWIzZWIwODhmYWIz
NDM0MjIwYmEwZmJhNzlkMmQ4OGM5NTBjZTNhMS4uNTA3ZjY5OGViODk4MDVjYWUwMzYyZmQ2ZDY2
YjEwOTBmNjI4NTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MUm93LmNwcApAQCAtNTIsMTMgKzUyLDEzIEBAIE1hdGhNTFJvd0VsZW1l
bnQmIFJlbmRlck1hdGhNTFJvdzo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PE1hdGhNTFJvd0VsZW1lbnQmPihub2RlRm9yTm9uQW5vbnltb3VzKCkpOwogfQogCi1PcHRp
b25hbDxpbnQ+IFJlbmRlck1hdGhNTFJvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0
aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgYXV0byogYmFzZWxpbmVDaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsKICAgICBp
ZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAg
ICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0gICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNo
aWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICByZXR1cm4gTGF5b3V0
VW5pdChzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hp
bGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOwogfQogCiBzdGF0aWMgUmVuZGVy
TWF0aE1MT3BlcmF0b3IqIHRvVmVydGljYWxTdHJldGNoeU9wZXJhdG9yKFJlbmRlckJveCogYm94
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93
LmgKaW5kZXggZTg3NThhZThlYmMxMGE1ZjFhYmQ4NDE5NjdmZDE1YzY4NWJkODkxOC4uMTY5NTY0
MjkwNTNlZDY0ZmM3Zjg3MDg5MDRjMDk4ZDI0ZDIzMDQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7
Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIHN0cmV0Y2hWZXJ0aWNhbE9wZXJhdG9yc0FuZExheW91dENoaWxkcmVu
KCk7CiAgICAgdm9pZCBnZXRDb250ZW50Qm91bmRpbmdCb3goTGF5b3V0VW5pdCYgd2lkdGgsIExh
eW91dFVuaXQmIGFzY2VudCwgTGF5b3V0VW5pdCYgZGVzY2VudCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNw
cAppbmRleCA1YzE1ZWI0NGE4YjlmODkxMGFlOGM5YmIwMjAxMTMzMWU3YzhjN2MzLi5kYzExYzNi
YmM3YjljZmZiZTk0YjAyY2VlOTE4NjdiY2JiMGYwN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKQEAgLTQ2
NiwxMiArNDY2LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MU2NyaXB0czo6bGF5b3V0QmxvY2soYm9v
bCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsK
IH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxTY3JpcHRzOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgYXV0byogYmFzZSA9IGZpcnN0Q2hpbGRCb3go
KTsKICAgICBpZiAoIWJhc2UpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7Ci0gICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNo
aWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpKTsKKyAgICAgICAgcmV0dXJuIE9wdGlv
bmFsPExheW91dFVuaXQ+KCk7CisgICAgcmV0dXJuIExheW91dFVuaXQocm91bmRmKGFzY2VudEZv
ckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCmlu
ZGV4IDgyZjI1NzBmZjhjOTdhNDc1N2FkZTExNGNhN2FkODNiNzkzYjQ2MGMuLjlkMjNhYmUzOTQw
ZjUyZmY2ZWM2NGYzZGU3OGJmMWQzYjYzOTcyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC01MCw3ICs1MCw3
IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBNYXRoTUxTY3JpcHRzRWxlbWVudCYgZWxl
bWVudCgpIGNvbnN0OwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IGZpbmFsOwogICAgIHN0cnVjdCBSZWZlcmVuY2VDaGlsZHJlbiB7CiAgICAgICAgIFJlbmRl
ckJveCogYmFzZTsKICAgICAgICAgUmVuZGVyQm94KiBwcmVzY3JpcHREZWxpbWl0ZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
Y3BwCmluZGV4IDMxMzY5M2E0YWUwNTJmZGIyYjYxYWYwNmY4MmE1YzVkODE2YTkzZTMuLmY5MjQ2
NTcxMmRiNzhkZjY0NjEzMTI0MWJlNGMwMGNmZGY4ZDI2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuY3BwCkBAIC04Niwx
MSArODYsMTEgQEAgdm9pZCBSZW5kZXJNYXRoTUxTcGFjZTo6bGF5b3V0QmxvY2soYm9vbCByZWxh
eW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAot
T3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IGhlaWdodCwgZGVwdGg7CiAgICAgZ2V0U3Bh
Y2VIZWlnaHRBbmREZXB0aChoZWlnaHQsIGRlcHRoKTsKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50
PihoZWlnaHQpOworICAgIHJldHVybiBoZWlnaHQ7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAppbmRleCBiMjU5NzI2
MTQ5MmM3MTRjZjNhMjBjZmRkM2I3YjcxNjk1OWIwMWI3Li43MjVkNGYyMGEzMjVhYmNhMWZkYzg0
YzA3MzU1YjEzMmQ1NjU2YjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCkBAIC00NCw3ICs0NCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc0NoaWxkQWxsb3dlZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBSZW5kZXJT
dHlsZSYpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBjb21wdXRlUHJl
ZmVycmVkTG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCBy
ZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmlu
YWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwor
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7
CiAKICAgICBMYXlvdXRVbml0IHNwYWNlV2lkdGgoKSBjb25zdDsKICAgICB2b2lkIGdldFNwYWNl
SGVpZ2h0QW5kRGVwdGgoTGF5b3V0VW5pdCYgaGVpZ2h0LCBMYXlvdXRVbml0JiBkZXB0aCkgY29u
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFRva2VuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwCmluZGV4IDdlZmFlNGQwZmI5Yjc3NWU2OTc4ZjUwMjI4OTY2Zjc1NzlhMzM4
MTYuLjViMDU1NmJjZGVhZWNiZjY3ZGFjZDBjNzk1NmQyNDRkZGJlNDA4Y2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uY3Bw
CkBAIC01NTQsMTIgKzU1NCwxMiBAQCB2b2lkIFJlbmRlck1hdGhNTFRva2VuOjp1cGRhdGVGcm9t
RWxlbWVudCgpCiAgICAgc2V0TWF0aFZhcmlhbnRHbHlwaERpcnR5KCk7CiB9CiAKLU9wdGlvbmFs
PGludD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlv
bmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CiB7CiAgICAgaWYgKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQpIHsKICAgICAgICAgYXV0byBt
YXRoVmFyaWFudEdseXBoID0gc3R5bGUoKS5mb250Q2FzY2FkZSgpLmdseXBoRGF0YUZvckNoYXJh
Y3RlcihtX21hdGhWYXJpYW50Q29kZVBvaW50LnZhbHVlKCksIG1fbWF0aFZhcmlhbnRJc01pcnJv
cmVkKTsKICAgICAgICAgaWYgKG1hdGhWYXJpYW50R2x5cGguZm9udCkKLSAgICAgICAgICAgIHJl
dHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZigtbWF0aFZhcmlhbnRH
bHlwaC5mb250LT5ib3VuZHNGb3JHbHlwaChtYXRoVmFyaWFudEdseXBoLmdseXBoKS55KCkpKSk7
CisgICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdChzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYo
LW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5n
bHlwaCkueSgpKSkpOwogICAgIH0KICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZpcnN0
TGluZUJhc2VsaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFRva2VuLmgKaW5kZXggYzI2ZjExYWY2MzliM2U5MmVjOTdlMDdjNDBh
ZmQ0ZjU4MDM5ZWJlZC4uY2U1M2Q1NTQzMzg3YzI2N2RkMzZlODI1M2EwMGZmYTc4YWVhMmI1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
VG9rZW4uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIG92ZXJyaWRlOwogICAgIHZvaWQg
cGFpbnRDaGlsZHJlbihQYWludEluZm8mIGZvclNlbGYsIGNvbnN0IExheW91dFBvaW50JiwgUGFp
bnRJbmZvJiBmb3JDaGlsZCwgYm9vbCB1c2VQcmludFJlY3QpIG92ZXJyaWRlOwotICAgIE9wdGlv
bmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZv
aWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dp
Y2FsSGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9n
aWNhbFdpZHRocygpIG92ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424739</attachid>
            <date>2021-03-31 00:30:54 -0700</date>
            <delta_ts>2021-04-02 00:30:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133932-20210331093052.patch</filename>
            <type>text/plain</type>
            <size>73842</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1MjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVkODU1N2ZkYjYwMjBh
ODBhZjczNTg2MzBjYWQzNDg4ZTUyOWNmZi4uMGE2ZTQ5MjFkZDhmZDYwNDRiY2RiM2U4MzNhZmNh
YjFiNjI1N2EzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMS0wMy0zMCAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFN1YnBpeGVsIGxheW91dDogU3dp
dGNoIGlubGluZXMnIGJhc2VsaW5lIHBvc2l0aW9uaW5nIGZyb20gaW50IHRvIExheW91dFVuaXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM5MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNo
YW5nZSBjb252ZXJ0cyB0aGUgaW50IHJldHVybnMgdHlwZSB0byBMYXlvdXRVbml0LgorICAgICAg
ICBUbyBtYXRjaCB0aGUgb2xkIGJlaGF2aW9yLCB0aGUgaW1wbGljaXQgdG9JbnQoKSBjYWxscwor
ICAgICAgICBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgZXhwbGljaXQgdG9JbnQoKSBjYWxscy4KKwor
ICAgICAgICAqIHJlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6R3JpZEJhc2VsaW5lQWxpZ25tZW50Ojphc2NlbnRGb3JDaGlsZCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJBdHRhY2htZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnQ6OmJh
c2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBdHRhY2ht
ZW50Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5s
aW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmZpcnN0TGlu
ZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aW5saW5lQmxv
Y2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCdXR0b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxl
eGlibGVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZWRCYXNlbGluZUZyb21C
b3JkZXJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5l
UG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmZp
cnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxl
Qm94OjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyRmxleGlibGVCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxpbmUgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJHcmlkLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9z
aXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpbmVCcmVhazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclNsaWRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFz
ZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmg6CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Um9vdElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTWF0aE1MQmxvY2s6OmFzY2VudEZvckNoaWxkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmg6CisgICAgICAgICogcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxSb3c6OmZpcnN0TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTFJvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU2NyaXB0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRz
OjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxTY3JpcHRzLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTcGFjZTo6Zmly
c3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MU3BhY2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVC
YXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxU
b2tlbi5oOgorCiAyMDIxLTAzLTMwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIEFjY291bnQgZm9yICJjb3ZlciIgYW5kICJjb250YWluIiB3aGVuIGludGVy
cG9sYXRpbmcgYmFja2dyb3VuZC1zaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9HcmlkQmFzZWxpbmVBbGlnbm1lbnQuY3BwCmluZGV4IDE1NDAzYTg1ZWRlZmVlYTRhY2NiYjNj
NTM0ZDU1ZGIwMGVhOWYyOGMuLmE4MWU0ZmY2M2E2ZDkwNzQ5N2ZkY2QzMDNjMzkzNWUyZTcyNWIy
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGln
bm1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9HcmlkQmFzZWxpbmVBbGln
bm1lbnQuY3BwCkBAIC02NSwxNCArNjUsMTYgQEAgTGF5b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGln
bm1lbnQ6OmxvZ2ljYWxBc2NlbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkLAogTGF5
b3V0VW5pdCBHcmlkQmFzZWxpbmVBbGlnbm1lbnQ6OmFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRl
ckJveCYgY2hpbGQsIEdyaWRBeGlzIGJhc2VsaW5lQXhpcykgY29uc3QKIHsKICAgICBMYXlvdXRV
bml0IG1hcmdpbiA9IGlzRGVzY2VudEJhc2VsaW5lRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhp
cykgPyBtYXJnaW5VbmRlckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpIDogbWFyZ2luT3Zl
ckZvckNoaWxkKGNoaWxkLCBiYXNlbGluZUF4aXMpOwotICAgIExheW91dFVuaXQgYmFzZWxpbmUo
aXNQYXJhbGxlbFRvQmFzZWxpbmVBeGlzRm9yQ2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgPyBj
aGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZhbHVlT3IoLTEpIDogLTEpOworICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGJhc2VsaW5lOworICAgIGlmIChpc1BhcmFsbGVsVG9CYXNlbGluZUF4aXNG
b3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSkKKyAgICAgICAgYmFzZWxpbmUgPSBjaGlsZC5m
aXJzdExpbmVCYXNlbGluZSgpOwogICAgIC8vIFdlIHRha2UgYm9yZGVyLWJveCdzIHVuZGVyIGVk
Z2UgaWYgbm8gdmFsaWQgYmFzZWxpbmUuCi0gICAgaWYgKGJhc2VsaW5lID09IC0xKSB7CisgICAg
aWYgKCFiYXNlbGluZSkgewogICAgICAgICBpZiAoaXNIb3Jpem9udGFsQmFzZWxpbmVBeGlzKGJh
c2VsaW5lQXhpcykpCiAgICAgICAgICAgICByZXR1cm4gaXNGbGlwcGVkV3JpdGluZ01vZGUobV9i
bG9ja0Zsb3cpID8gY2hpbGQuc2l6ZSgpLndpZHRoKCkudG9JbnQoKSArIG1hcmdpbiA6IG1hcmdp
bjsKICAgICAgICAgcmV0dXJuIGNoaWxkLnNpemUoKS5oZWlnaHQoKSArIG1hcmdpbjsKICAgICB9
Ci0gICAgcmV0dXJuIGJhc2VsaW5lICsgbWFyZ2luOworICAgIHJldHVybiAqYmFzZWxpbmUgKyBt
YXJnaW47CiB9CiAKIExheW91dFVuaXQgR3JpZEJhc2VsaW5lQWxpZ25tZW50OjpkZXNjZW50Rm9y
Q2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgTGF5b3V0VW5pdCBhc2NlbnQsIEdyaWRBeGlz
IGJhc2VsaW5lQXhpcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAK
aW5kZXggMWE0NTc5YjI5MjQ0MGVkZDRmNmVkYzNkNjM2MDA0NzJhZGZkODE0Mi4uOTMyNDFlMTZk
Yzg3NWVlNDI0NTNmZWQ4MDEzMDQ4NTM2NDJlNGU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUJveC5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBmbG9hdCBJbmxpbmVCb3g6OmxvZ2lj
YWxIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWludCBJbmxpbmVCb3g6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKK0xheW91
dFVuaXQgSW5saW5lQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5
cGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJveE1vZGVsT2JqZWN0KCktPmJhc2VsaW5lUG9zaXRp
b24oYmFzZWxpbmVUeXBlLCBtX2JpdGZpZWxkcy5maXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkg
PyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5l
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAppbmRleCA4MTY3ZTRkZDRhYWZk
NDc0YWM5ZTJjZDdmMmFmZWZkOGExMTNkNjE2Li40ZTU4NTljYWE2YmFiNTlmYTcxYjIwNDY0Mjg2
YTA4NDE1ODY1NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCkBAIC0yMDQs
NyArMjA0LDcgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBsb2dpY2FsRnJhbWVSZWN0KCkgY29u
c3QgeyByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBGbG9hdFJlY3QobV90b3BMZWZ0LngoKSwgbV90
b3BMZWZ0LnkoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWlnaHQoKSkgOiBGbG9hdFJlY3Qo
bV90b3BMZWZ0LnkoKSwgbV90b3BMZWZ0LngoKSwgbV9sb2dpY2FsV2lkdGgsIGxvZ2ljYWxIZWln
aHQoKSk7IH0KICAgICBGbG9hdFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gRmxvYXRS
ZWN0KHRvcExlZnQoKSwgc2l6ZSgpKTsgfQogCi0gICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCBp
bnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IExheW91dFVuaXQgbGluZUhlaWdodCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCAyNGRlNTE1MDM2NDAwMTgwNWNjYmMyZDBjZTc0OTI0
MzY4OWRhYzkyLi4yNmU2Yzg0MmE1MTdlZDQyMmM4MjQyMTdmODlhMjFkMmNmNzUwMGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBAIC0xMTksNyArMTE5
LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpzZXRMb2dpY2FsT3ZlcmZsb3dSZWN0KGNvbnN0IExh
eW91dFJlY3QmIHJlY3QpCiAgICAgZ1RleHRCb3hlc1dpdGhPdmVyZmxvdy0+YWRkKHRoaXMsIHJl
Y3QpOwogfQogCi1pbnQgSW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlKSBjb25zdAorTGF5b3V0VW5pdCBJbmxpbmVUZXh0Qm94OjpiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFw
YXJlbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZVRleHRCb3guaAppbmRleCAwZjcxN2JkNzZiMDEwOWQxZGNlNDMwYzgxNDE3MDIzOGJhYWI5MDA3
Li42NTRkODc3YWQ4ZjAzZTdjNWU1ZDg1ODc1YTIwYTMyOTRjMGFkNDY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVCeVN0YXJ0KGNvbnN0IElubGluZVRleHRC
b3gqIGZpcnN0LCBjb25zdCBJbmxpbmVUZXh0Qm94KiBzZWNvbmQpIHsgcmV0dXJuIGZpcnN0LT5z
dGFydCgpIDwgc2Vjb25kLT5zdGFydCgpOyB9CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUpIGNvbnN0IGZpbmFsOwogICAgIExheW91dFVuaXQgbGluZUhlaWdodCgp
IGNvbnN0IGZpbmFsOwogCiAgICAgT3B0aW9uYWw8Ym9vbD4gZW1waGFzaXNNYXJrRXhpc3RzQW5k
SXNBYm92ZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuY3BwCmluZGV4IGM5MmZlYTgzNmI3ZTdjODQ3ZTUyM2E0
YTU5MTJlYzk4NTM5OTVlNDQuLmY5NjViOTg5OWJlMmU4NWE3YzdlNDYyNmFhMGRhNDIxM2RjOWVj
ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50OjppbnZhbGlkYXRlKCkKICAg
ICByZXBhaW50KCk7CiB9CiAKLWludCBSZW5kZXJBdHRhY2htZW50OjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUp
IGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckF0dGFjaG1lbnQ6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKIHsKICAgICByZXR1cm4gdGhlbWUoKS5hdHRhY2htZW50QmFzZWxpbmUoKnRoaXMpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRhY2htZW50LmgKaW5kZXggZDMyOTIy
YTYwYjI1MTQ4ZjNlYTFmMmZjMzAxMWNmMzRmMGExYmYyMC4uNTBkZDkyNGIzZWFlNzEyZmJiMGRh
M2Y3YzFjMGIzMmVhMTY3YmI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckF0dGFjaG1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5oCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91
dCgpIG92ZXJyaWRlOwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGlu
ZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
TGF5b3V0VW5pdCBtX21pbmltdW1JbnRyaW5zaWNXaWR0aDsKICAgICBib29sIG1fc2hvdWxkRHJh
d0JvcmRlciB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3Bw
CmluZGV4IDgwMTQwODUyNThmYTdhMmM4NDAwMjY2YTQ3MmQzNjliMDU1ZDAxZDYuLmRlMmVkNDUx
MzAyNjdjZDE5NDkxMWNiZTM2MGMwZjM5OGU5ZGJjM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQ4MSw3ICsyNDgxLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJCbG9jazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGly
ZWN0aW9uLAogICAgIHJldHVybiBzdHlsZSgpLmNvbXB1dGVkTGluZUhlaWdodCgpOwogfQogCi1p
bnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3Np
dGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gSW5saW5lIGJsb2NrcyBhcmUgcmVwbGFjZWQgZWxl
bWVudHMuIE90aGVyd2lzZSwganVzdCBwYXNzIG9mZiB0bwogICAgIC8vIHRoZSBiYXNlIGNsYXNz
LiAgSWYgd2UncmUgYmVpbmcgcXVlcmllZCBhcyB0aG91Z2ggd2UncmUgdGhlIHJvb3QgbGluZQpA
QCAtMjUxNiw3ICsyNTE2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAg
IHJldHVybiBzY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpIHx8IHNjcm9sbGFi
bGVBcmVhLT5zY3JvbGxPZmZzZXQoKS54KCk7CiAgICAgICAgIH07CiAKLSAgICAgICAgT3B0aW9u
YWw8aW50PiBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxpbnQ+KCkg
OiBpbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7CisgICAgICAgIGF1dG8gYmFzZWxpbmVQ
b3MgPSBpZ25vcmVCYXNlbGluZSgpID8gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKSA6IGlubGluZUJs
b2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKICAgICAgICAgCiAgICAgICAgIGlmIChpc0RlcHJlY2F0
ZWRGbGV4aWJsZUJveCgpKSB7CiAgICAgICAgICAgICAvLyBIaXN0b3JpY2FsbHksIHdlIGRpZCB0
aGlzIGNoZWNrIGZvciBhbGwgYmFzZWxpbmVzLiBCdXQgd2UgY2FuJ3QKQEAgLTI1MjYsNyArMjUy
Niw3IEBAIGludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFz
ZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluCiAgICAgICAgICAgICAvLyBGb3Igc2ltcGxp
Y2l0eSwgd2UgdXNlIHRoaXMgZm9yIGFsbCB1c2VzIG9mIGRlcHJlY2F0ZWQgZmxleGJveC4KICAg
ICAgICAgICAgIExheW91dFVuaXQgYm90dG9tT2ZDb250ZW50ID0gZGlyZWN0aW9uID09IEhvcml6
b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBjb250ZW50SGVpZ2h0KCkg
OiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBjb250ZW50V2lkdGgoKTsKICAgICAg
ICAgICAgIGlmIChiYXNlbGluZVBvcyAmJiBiYXNlbGluZVBvcy52YWx1ZSgpID4gYm90dG9tT2ZD
b250ZW50KQotICAgICAgICAgICAgICAgIGJhc2VsaW5lUG9zID0gT3B0aW9uYWw8aW50PigpOwor
ICAgICAgICAgICAgICAgIGJhc2VsaW5lUG9zID0gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAg
ICAgICAgfQogICAgICAgICBpZiAoYmFzZWxpbmVQb3MpCiAgICAgICAgICAgICByZXR1cm4gZGly
ZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgKyBiYXNlbGluZVBvcy52YWx1
ZSgpIDogbWFyZ2luUmlnaHQoKSArIGJhc2VsaW5lUG9zLnZhbHVlKCk7CkBAIC0yNTM2LDcgKzI1
MzYsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJh
c2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlID0gZmlyc3RMaW5lID8gZmlyc3RMaW5lU3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7CiAg
ICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRNZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3MoKTsK
LSAgICByZXR1cm4gZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdo
dChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5o
ZWlnaHQoKSkgLyAyOworICAgIHJldHVybiBMYXlvdXRVbml0IHsgZm9udE1ldHJpY3MuYXNjZW50
KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBv
c2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyIH0udG9JbnQoKTsKIH0KIAog
TGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bWluTGluZUhlaWdodEZvclJlcGxhY2VkUmVuZGVyZXIo
Ym9vbCBpc0ZpcnN0TGluZSwgTGF5b3V0VW5pdCByZXBsYWNlZEhlaWdodCkgY29uc3QKQEAgLTI1
NTEsNDMgKzI1NTEsNDMgQEAgTGF5b3V0VW5pdCBSZW5kZXJCbG9jazo6bWluTGluZUhlaWdodEZv
clJlcGxhY2VkUmVuZGVyZXIoYm9vbCBpc0ZpcnN0TGluZSwgTGF5b3UKICAgICByZXR1cm4gc3Rk
OjptYXg8TGF5b3V0VW5pdD4ocmVwbGFjZWRIZWlnaHQsIGxpbmVIZWlnaHQoaXNGaXJzdExpbmUs
IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGlu
ZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+
IFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzV3Jp
dGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8
aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIGZv
ciAoUmVuZGVyQm94KiBjdXJyID0gZmlyc3RDaGlsZEJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+
bmV4dFNpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoIWN1cnItPmlzRmxvYXRpbmdPck91dE9m
Rmxvd1Bvc2l0aW9uZWQoKSkgewotICAgICAgICAgICAgaWYgKE9wdGlvbmFsPGludD4gcmVzdWx0
ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50PihjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSk7IC8vIFRyYW5z
bGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KKyAgICAgICAgICAgIGlmIChhdXRvIHJlc3Vs
dCA9IGN1cnItPmZpcnN0TGluZUJhc2VsaW5lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIExh
eW91dFVuaXQgeyBjdXJyLT5sb2dpY2FsVG9wKCkgKyByZXN1bHQudmFsdWUoKSB9OyAvLyBUcmFu
c2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pigp
OwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExp
bmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0
PiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5l
RGlyZWN0aW9uKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc1J1
YnlSdW4oKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICBib29sIGhhdmVOb3JtYWxGbG93Q2hpbGQg
PSBmYWxzZTsKICAgICBmb3IgKGF1dG8qIGJveCA9IGxhc3RDaGlsZEJveCgpOyBib3g7IGJveCA9
IGJveC0+cHJldmlvdXNTaWJsaW5nQm94KCkpIHsKICAgICAgICAgaWYgKGJveC0+aXNGbG9hdGlu
Z09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGhhdmVOb3JtYWxGbG93Q2hpbGQgPSB0cnVlOwotICAgICAgICBpZiAoT3B0aW9uYWw8aW50PiBy
ZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbikpCi0gICAgICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihib3gtPmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52YWx1
ZSgpKTsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29yZGluYXRlIHNwYWNlLgorICAgICAgICBpZiAo
YXV0byByZXN1bHQgPSBib3gtPmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbikpCisg
ICAgICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChib3gtPmxvZ2ljYWxUb3AoKSArIHJlc3Vs
dC52YWx1ZSgpKS50b0ludCgpIH07IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFj
ZS4KICAgICB9CiAKICAgICBpZiAoIWhhdmVOb3JtYWxGbG93Q2hpbGQgJiYgaGFzTGluZUlmRW1w
dHkoKSkgewogICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IGZpcnN0TGluZVN0eWxlKCkuZm9u
dE1ldHJpY3MoKTsKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNj
ZW50KCkKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBMYXlvdXRVbml0KGZvbnRNZXRyaWNz
LmFzY2VudCgpCiAgICAgICAgICAgICArIChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24s
IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcykgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAy
Ci0gICAgICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVy
VG9wKCkgKyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKTsK
KyAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJU
b3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSkpLnRv
SW50KCkgfTsKICAgICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgIHJldHVy
biBPcHRpb25hbDxMYXlvdXRVbml0PigpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNSZW5k
ZXJCbG9ja0Zsb3dPclJlbmRlckJ1dHRvbihSZW5kZXJFbGVtZW50JiByZW5kZXJFbGVtZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBmOWIyZDk4ZGQ5YTllNTlk
ZTFjYWU5MzYyMTI3NmM2OGQ0MTMzZWQ3Li5lZmMwMTU0ZGI4Njg3OWRmMzM3MGFmOTczZjYyOWUw
NGY4NWI2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNjUs
NyArNjUsNyBAQCBwcm90ZWN0ZWQ6CiBwdWJsaWM6CiAgICAgLy8gVGhlc2UgdHdvIGZ1bmN0aW9u
cyBhcmUgb3ZlcnJpZGRlbiBmb3IgaW5saW5lLWJsb2NrLgogICAgIExheW91dFVuaXQgbGluZUhl
aWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUg
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIGludCBiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0VW5pdCBtaW5M
aW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlvdXRVbml0
IHJlcGxhY2VkSGVpZ2h0KSBjb25zdDsKIApAQCAtMzUzLDggKzM1Myw4IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsK
ICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAg
Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwot
ICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9j
a0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIC8vIERl
bGF5IHVwZGF0aW5nIHNjcm9sbGJhcnMgdW50aWwgZW5kQW5kQ29tbWl0VXBkYXRlU2Nyb2xsSW5m
b0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKSBpcyBjYWxsZWQuIFRoZXNlIGZ1bmN0aW9ucyBhcmUg
dXNlZAogICAgIC8vIHdoZW4gYSBmbGV4Ym94IGlzIGxheWluZyBvdXQgaXRzIGRlc2NlbmRhbnRz
LiBJZiBtdWx0aXBsZSBjYWxscyBhcmUgbWFkZSB0byBiZWdpblVwZGF0ZVNjcm9sbEluZm9BZnRl
ckxheW91dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKaW5kZXggNGQ0MjQzNDNhYTYzYmM0ZTU2ZDdlY2M5OTJlMGNhMTdkOGFiZmMw
NC4uYTQ0YWEyZjI3MTQwNjRhYjc5Yzc1NGQzMTQwOGE0YzkxODkzZjU2YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKQEAgLTMxMDYsNyArMzEwNiw3
IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjptYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5nZShMYXlv
dXRVbml0IGxvZ2ljYWxUb3AsIExheW91dFVuCiAgICAgfQogfQogCi1PcHRpb25hbDxpbnQ+IFJl
bmRlckJsb2NrRmxvdzo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAg
aWYgKGlzV3JpdGluZ01vZGVSb290KCkgJiYgIWlzUnVieVJ1bigpICYmICFpc0dyaWRJdGVtKCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMTE5LDE2ICszMTE5LDE2IEBAIE9w
dGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiAK
ICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKICAgICBpZiAobW9kZXJuTGlu
ZUxheW91dCgpKQotICAgICAgICByZXR1cm4gZmxvb3JUb0ludChtb2Rlcm5MaW5lTGF5b3V0KCkt
PmZpcnN0TGluZUJhc2VsaW5lKCkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZsb29y
VG9JbnQobW9kZXJuTGluZUxheW91dCgpLT5maXJzdExpbmVCYXNlbGluZSgpKSB9OwogI2VuZGlm
CiAKICAgICBBU1NFUlQoZmlyc3RSb290Qm94KCkpOwogICAgIGlmIChzdHlsZSgpLmlzRmxpcHBl
ZExpbmVzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgcmV0dXJuIGZpcnN0Um9vdEJveCgpLT5sb2dp
Y2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuZGVzY2VudChmaXJzdFJv
b3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpOwotICAgIHJldHVybiBmaXJzdFJvb3RCb3goKS0+bG9n
aWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJv
b3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpOworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZp
cnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNz
KCkuZGVzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkpIH07CisgICAgcmV0dXJu
IExheW91dFVuaXQgeyBmaXJzdFJvb3RCb3goKS0+bG9naWNhbFRvcCgpICsgZmlyc3RMaW5lU3R5
bGUoKS5mb250TWV0cmljcygpLmFzY2VudChmaXJzdFJvb3RCb3goKS0+YmFzZWxpbmVUeXBlKCkp
IH07CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CitPcHRpb25hbDxMYXlv
dXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3Qo
KSAmJiAhaXNSdWJ5UnVuKCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zMTQ0
LDcgKzMxNDQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aQogICAgIGZsb2F0IGJveEhlaWdo
dCA9IGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBoZWlnaHQoKSArIG1fbWFyZ2lu
Qm94LmJvdHRvbSgpIDogd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKTsKICAgICBmbG9hdCBs
YXN0QmFzZWxpbmUgPSAwOwogICAgIGlmICghY2hpbGRyZW5JbmxpbmUoKSkgewotICAgICAgICBP
cHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUgPSBSZW5kZXJCbG9jazo6aW5saW5lQmxv
Y2tCYXNlbGluZShsaW5lRGlyZWN0aW9uKTsKKyAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2Vs
aW5lID0gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUobGluZURpcmVjdGlvbik7CiAg
ICAgICAgIGlmICghaW5saW5lQmxvY2tCYXNlbGluZSkKICAgICAgICAgICAgIHJldHVybiBpbmxp
bmVCbG9ja0Jhc2VsaW5lOwogICAgICAgICBsYXN0QmFzZWxpbmUgPSBpbmxpbmVCbG9ja0Jhc2Vs
aW5lLnZhbHVlKCk7CkBAIC0zMTUzLDkgKzMxNTMsOSBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckJs
b2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0
aQogICAgICAgICAgICAgaWYgKCFoYXNMaW5lSWZFbXB0eSgpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9
IGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KGZvbnRNZXRyaWNzLmFzY2VudCgpCisgICAgICAgICAgICByZXR1cm4gTGF5b3V0
VW5pdCB7IExheW91dFVuaXQoZm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICAgICAr
IChsaW5lSGVpZ2h0KHRydWUsIGxpbmVEaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVC
b3hlcykgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyCi0gICAgICAgICAgICAgICAgKyAobGlu
ZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgp
IDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSk7CisgICAgICAgICAgICAgICAgKyAo
bGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1Rv
cCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpKSkudG9JbnQoKSB9OwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKGNvbXBsZXhMaW5lTGF5b3V0KCkpIHsKQEAgLTMxNzMsNyArMzE3
Myw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5l
KExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3RpCiAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBD
U1Mgc3BlYyBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS92aXN1ZGV0Lmh0bWwsIHdlIHNob3Vs
ZG4ndCBiZSBwZXJmb3JtaW5nIHRoaXMgbWluLCBidXQgc2hvdWxkCiAgICAgLy8gaW5zdGVhZCBi
ZSByZXR1cm5pbmcgYm94SGVpZ2h0IGRpcmVjdGx5LiBIb3dldmVyLCB3ZSBmZWVsIHRoYXQgYSBt
aW4gaGVyZSBpcyBiZXR0ZXIgYmVoYXZpb3IgKGFuZCBpcyBjb25zaXN0ZW50CiAgICAgLy8gZW5v
dWdoIHdpdGggdGhlIHNwZWMgdG8gbm90IGNhdXNlIHRvbnMgb2YgYnJlYWthZ2VzKS4KLSAgICBy
ZXR1cm4gc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6VmlzaWJsZSA/IGxhc3RCYXNl
bGluZSA6IHN0ZDo6bWluKGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKTsKKyAgICByZXR1cm4gTGF5
b3V0VW5pdCB7IHN0eWxlKCkub3ZlcmZsb3dZKCkgPT0gT3ZlcmZsb3c6OlZpc2libGUgPyBsYXN0
QmFzZWxpbmUgOiBzdGQ6Om1pbihib3hIZWlnaHQsIGxhc3RCYXNlbGluZSkgfTsKIH0KIAogdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OnNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlIHN0YXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCmluZGV4IDU3ZjI2
OWM5YjI4OGMwMTUyMDQ5ODVmZGViNmY1Y2E3NWM5ZDMxOWIuLmY2YTc2NDllOTI2MmE4MWRkYzQz
YmNiMGYwZGU0NTk4YWViMDAxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmgKQEAgLTQ1MCw4ICs0NTAsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGNy
ZWF0ZUZsb2F0aW5nT2JqZWN0cygpOwogCi0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0aW9uYWw8TGF5
b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25h
bDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNNdWx0aUNvbHVtbkJsb2NrRmxvdygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG11bHRpQ29sdW1uRmxvdygpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDNmMzI0NjZkYWZiNWY4ZTcyMWQ1Y2QxMjk3MDFl
YzAzNDdlNWUzNjcuLmUwZjU0N2FkZjNjYWQ5ZDdkMTA4MzNlN2VlMTQyYjc3Nzk1Y2U1YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00ODY2LDcgKzQ4NjYsNyBA
QCBMYXlvdXRVbml0IFJlbmRlckJveDo6bGluZUhlaWdodChib29sIC8qZmlyc3RMaW5lKi8sIExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbgogICAgIHJldHVybiAwOwogfQogCi1pbnQgUmVuZGVy
Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgLypm
aXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2Rl
IC8qbGluZVBvc2l0aW9uTW9kZSovKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3g6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCAvKmZpcnN0TGluZSov
LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgLypsaW5lUG9z
aXRpb25Nb2RlKi8pIGNvbnN0CiB7CiAgICAgaWYgKGlzUmVwbGFjZWQoKSkgewogICAgICAgICBh
dXRvIHJlc3VsdCA9IHJvdW5kVG9JbnQoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbV9t
YXJnaW5Cb3gudG9wKCkgKyBoZWlnaHQoKSArIG1fbWFyZ2luQm94LmJvdHRvbSgpIDogbV9tYXJn
aW5Cb3gucmlnaHQoKSArIHdpZHRoKCkgKyBtX21hcmdpbkJveC5sZWZ0KCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGM1YThkOGZjOTU3ZGRlMzkwNjJjMDNlYTFmYWY3
YzZkY2FjY2U1MTIuLjFlNTExYzljMWRjOGJiZmM4MmI1NDk4ZWNmMTFhMmI1YjAxOGMyN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTU0MSw4ICs1NDEsOCBAQCBvdmVy
cmlkZTsKICAgICAKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nRmxvYXRQYWludGluZ0xheWVy
KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWw8aW50PigpOyB9Ci0gICAgdmlydHVhbCBPcHRp
b25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IHsg
cmV0dXJuIE9wdGlvbmFsPGludD4oKTsgfSAvLyBSZXR1cm5zIGVtcHR5IGlmIHdlIHNob3VsZCBz
a2lwIHRoaXMgYm94IHdoZW4gY29tcHV0aW5nIHRoZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUtYmxv
Y2suCisgICAgdmlydHVhbCBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgp
IGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0KKyAgICB2aXJ0dWFsIE9w
dGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0IHsgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7IH0gLy8gUmV0dXJucyBlbXB0
eSBpZiB3ZSBzaG91bGQgc2tpcCB0aGlzIGJveCB3aGVuIGNvbXB1dGluZyB0aGUgYmFzZWxpbmUg
b2YgYW4gaW5saW5lLWJsb2NrLgogCiAgICAgYm9vbCBzaHJpbmtUb0F2b2lkRmxvYXRzKCkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGF2b2lkc0Zsb2F0cygpIGNvbnN0OwpAQCAtNTU1LDcgKzU1
NSw3IEBAIG92ZXJyaWRlOwogICAgIGJvb2wgaXNGbGV4SXRlbUluY2x1ZGluZ0RlcHJlY2F0ZWQo
KSBjb25zdCB7IHJldHVybiAhaXNJbmxpbmUoKSAmJiAhaXNGbG9hdGluZ09yT3V0T2ZGbG93UG9z
aXRpb25lZCgpICYmIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZsZXhpYmxlQm94SW5jbHVkaW5n
RGVwcmVjYXRlZCgpOyB9CiAgICAgCiAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmly
c3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25D
b250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAg
IExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWlu
aW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRVbml0IG9mZnNldExlZnQoKSBj
b25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IG9mZnNldFRvcCgpIGNvbnN0IG92ZXJyaWRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApp
bmRleCA1OGM0ODlhZTRlZGJkZTAwNjFhZGFlYWY2OWM3MGZmOTdhMWY3YzU4Li4wNjU3YzZjYTQx
NDA5ODJjZDRlOWFlNWM1ZDhiNzA4MzBmMWY1YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtMjE2LDcgKzIxNiw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyB0byBkZXRlcm1pbmUgbGluZSBo
ZWlnaHQgYW5kIGJhc2VsaW5lIHBvc2l0aW9uLgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5l
SGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9k
ZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgaW50
IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9k
ZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgPSAwOwogCiAgICAgdm9pZCBtYXBB
YnNvbHV0ZVRvTG9jYWxQb2ludChNYXBDb29yZGluYXRlc0ZsYWdzLCBUcmFuc2Zvcm1TdGF0ZSYp
IGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQnV0dG9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24u
Y3BwCmluZGV4IDdlZDgxNWM3NmE0ZTEyOTdhNmQxODZhMzIyMmYwNzUyNmQ3NDRiMTYuLjIxMzYx
MDA3NmE1N2IxNTBhY2MyNGMxMWE4OTE1NTZiNmQwYzUyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCdXR0b24uY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIGludCBz
eW50aGVzaXplZEJhc2VsaW5lRnJvbUNvbnRlbnRCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExp
bmVEaXJlY3Rpb24KICAgICByZXR1cm4gZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm94
LmJvcmRlclRvcCgpICsgYm94LnBhZGRpbmdUb3AoKSArIGJveC5jb250ZW50SGVpZ2h0KCkgOiBi
b3guYm9yZGVyUmlnaHQoKSArIGJveC5wYWRkaW5nUmlnaHQoKSArIGJveC5jb250ZW50V2lkdGgo
KTsKIH0KIAotaW50IFJlbmRlckJ1dHRvbjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUs
IGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSkgY29u
c3QKK0xheW91dFVuaXQgUmVuZGVyQnV0dG9uOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlKSBj
b25zdAogewogICAgIC8vIFdlIGNhbm5vdCByZWx5IG9uIFJlbmRlckZsZXhpYmxlQm94OjpiYXNl
bGluZVBvc2l0aW9uKCkgYmVjYXVzZSBvZiBmbGV4Ym94ZXMgaGF2ZSBzb21lIHNwZWNpYWwgYmVo
YXZpb3IKICAgICAvLyByZWdhcmRpbmcgYmFzZWxpbmVzIHRoYXQgc2hvdWxkbid0IGFwcGx5IHRv
IGJ1dHRvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0
dG9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKaW5kZXggZTlj
NGMwZTk5MzlhYjg0NTFmNjUwYTk5ZmZhNjU1MTBjZWQ2OTc0Mi4uYTQ5MzljNGEwMDc1MDJhNTc4
OTQ5ZmRjNWNjNjU2Y2M3OTVkNTM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
dXR0b24uaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQmxvY2sqIGlubmVy
UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX2lubmVyLmdldCgpOyB9CiAgICAgdm9pZCBzZXRJ
bm5lclJlbmRlcmVyKFJlbmRlckJsb2NrJik7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0
aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
TGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGli
bGVCb3guY3BwCmluZGV4IDJjYzkzZDZhZDkzYTBhZDUyMmM5MDg1MTg4NzNiMjkxMmQ3ZmMxMjEu
Ljk2MWI1NGZiOWU1NjNjZTA4ZjE2OGJlNjNiOTU1ZjdmYzc3Zjc3MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcApAQCAtMTQ0LDEyICsxNDQs
MTIgQEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHQKICAgICBtaW5Mb2dpY2FsV2lkdGggKz0gc2Ny
b2xsYmFyV2lkdGg7CiB9CiAKLXN0YXRpYyBpbnQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3Jk
ZXJCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikK
K3N0YXRpYyBMYXlvdXRVbml0IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KGNvbnN0
IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pCiB7Ci0gICAgcmV0
dXJuIChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3guc2l6ZSgpLmhlaWdodCgpIDog
Ym94LnNpemUoKS53aWR0aCgpKS50b0ludCgpOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9y
aXpvbnRhbExpbmUgPyBib3guc2l6ZSgpLmhlaWdodCgpIDogYm94LnNpemUoKS53aWR0aCgpOwog
fQogCi1pbnQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
LCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUpIGNv
bnN0CitMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25N
b2RlKSBjb25zdAogewogICAgIGF1dG8gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgpOwog
ICAgIGlmICghYmFzZWxpbmUpCkBAIC0xNTgsMTAgKzE1OCwxMCBAQCBpbnQgUmVuZGVyRmxleGli
bGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaQogICAgIHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgKGRpcmVjdGlvbiA9PSBIb3Jp
em9udGFsTGluZSA/IG1hcmdpblRvcCgpIDogbWFyZ2luUmlnaHQoKSkudG9JbnQoKTsKIH0KIAot
T3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSB8fCBtX251bWJlck9m
SW5GbG93Q2hpbGRyZW5PbkZpcnN0TGluZSA8PSAwKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8
aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKICAgICBSZW5k
ZXJCb3gqIGJhc2VsaW5lQ2hpbGQgPSBudWxscHRyOwogICAgIGludCBjaGlsZE51bWJlciA9IDA7
CiAgICAgZm9yIChSZW5kZXJCb3gqIGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLmZpcnN0KCk7IGNo
aWxkOyBjaGlsZCA9IG1fb3JkZXJJdGVyYXRvci5uZXh0KCkpIHsKQEAgLTE4MCwyNSArMTgwLDI1
IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKICAgICB9CiAKICAgICBpZiAoIWJhc2VsaW5lQ2hpbGQpCi0gICAgICAgIHJldHVybiBP
cHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0PigpOwog
CiAgICAgaWYgKCFpc0NvbHVtbkZsb3coKSAmJiAhbWFpbkF4aXNJc0NoaWxkSW5saW5lQXhpcygq
YmFzZWxpbmVDaGlsZCkpCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGNyb3NzQXhpc0V4
dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3Ao
KSk7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGNyb3NzQXhpc0V4dGVudEZvckNoaWxk
KCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkudG9JbnQoKSB9
OwogICAgIGlmIChpc0NvbHVtbkZsb3coKSAmJiBtYWluQXhpc0lzQ2hpbGRJbmxpbmVBeGlzKCpi
YXNlbGluZUNoaWxkKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4obWFpbkF4aXNFeHRl
bnRGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkp
OworICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChtYWluQXhpc0V4dGVudEZvckNoaWxkKCpi
YXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkudG9JbnQoKSB9Owog
Ci0gICAgT3B0aW9uYWw8aW50PiBiYXNlbGluZSA9IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJh
c2VsaW5lKCk7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gYmFzZWxpbmUgPSBiYXNlbGluZUNo
aWxkLT5maXJzdExpbmVCYXNlbGluZSgpOwogICAgIGlmICghYmFzZWxpbmUpIHsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHxkaXJlY3Rpb258IGludG8gZmlyc3RMaW5lQm94QmFz
ZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQgaWYgd2UncmUgYSB3cml0aW5nIG1vZGUgcm9vdC4K
ICAgICAgICAgLy8gVGhpcyB3b3VsZCBhbHNvIGZpeCBzb21lIGNhc2VzIHdoZXJlIHRoZSBmbGV4
Ym94IGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRhaW5lci4KICAgICAgICAgTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uID0gaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxM
aW5lIDogVmVydGljYWxMaW5lOwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzeW50aGVz
aXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJh
c2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBzeW50aGVzaXplZEJh
c2VsaW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVDaGlsZCwgZGlyZWN0aW9uKSArIGJhc2VsaW5l
Q2hpbGQtPmxvZ2ljYWxUb3AoKTsKICAgICB9CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihi
YXNlbGluZS52YWx1ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICByZXR1
cm4gTGF5b3V0VW5pdCB7IChiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNh
bFRvcCgpKS50b0ludCgpIH07CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyRmxleGlibGVCb3g6
OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CitPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggZTkz
ZWU3YmFmZmZlNjRmNmEwN2Y2YjAxYjgwNTNmZmQ0OTEwZGU3ZS4uMWMyNTE5MTZkNTMyYTFmMGQy
ZjNmNWE1ZTY5YjBiNzVlYTg4Njg2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94LmgKQEAgLTUyLDkgKzUyLDkgQEAgcHVibGljOgogICAgIGJvb2wgY2Fu
RHJvcEFub255bW91c0Jsb2NrQ2hpbGQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBh
Z2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwotICAg
IE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29u
c3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxM
YXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNv
bnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2Us
IGNvbnN0IFJlbmRlclN0eWxlKikgb3ZlcnJpZGU7CiAgICAgYm9vbCBoaXRUZXN0Q2hpbGRyZW4o
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0
aW9uJiwgY29uc3QgTGF5b3V0UG9pbnQmIGFkanVzdGVkTG9jYXRpb24sIEhpdFRlc3RBY3Rpb24p
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdy
aWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCmluZGV4IGU2
MjZkOTliNDQ5MTUzOTNmNTYzNDk3NzAxOWRlOTQyODA4YTRhNzkuLjg0N2NmOTg0NWMzYzBiYTVi
Zjg1YmFmZjIzNmE2NTljNjNlOGZmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
R3JpZC5jcHAKQEAgLTEyMzMsNyArMTIzMyw3IEBAIHZvaWQgUmVuZGVyR3JpZDo6dXBkYXRlQXV0
b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRlZChSZW5kZXJCb3gmIGNoaWxkKQogfQogCiAvLyBG
SVhNRTogVGhpcyBsb2dpYyBjb3VsZCBiZSByZWZhY3RvcmVkIHNvbWVob3cgYW5kIGRlZmluZWQg
aW4gUmVuZGVyQm94Lgotc3RhdGljIGludCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJv
eChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQorc3Rh
dGljIExheW91dFVuaXQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goY29uc3QgUmVu
ZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikKIHsKICAgICByZXR1cm4g
KGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkgOiBib3gu
c2l6ZSgpLndpZHRoKCkpLnRvSW50KCk7CiB9CkBAIC0xMjUzLDcgKzEyNTMsNyBAQCBib29sIFJl
bmRlckdyaWQ6OmlzQmFzZWxpbmVBbGlnbm1lbnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNo
aWxkLCBHcmlkQXhpcyBiYQogfQogCiAvLyBGSVhNRTogVGhpcyBsb2dpYyBpcyBzaGFyZWQgYnkg
UmVuZGVyRmxleGlibGVCb3gsIHNvIGl0IG1pZ2h0IGJlIHJlZmFjdG9yZWQgc29tZWhvdy4KLWlu
dCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCwgTGluZURp
cmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIG1vZGUpIGNvbnN0CitMYXlv
dXRVbml0IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbW9kZSkgY29uc3QK
IHsKICAgICBBU1NFUlRfVU5VU0VEKG1vZGUsIG1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdM
aW5lKTsKICAgICBhdXRvIGJhc2VsaW5lID0gZmlyc3RMaW5lQmFzZWxpbmUoKTsKQEAgLTEyNjMs
NyArMTI2Myw3IEBAIGludCBSZW5kZXJHcmlkOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGlu
ZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uCiAgICAgcmV0dXJuIGJhc2VsaW5l
LnZhbHVlKCkgKyAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBt
YXJnaW5SaWdodCgpKS50b0ludCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckdyaWQ6
OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3Qo
KSB8fCAhbV9ncmlkLmhhc0dyaWRJdGVtcygpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpAQCAtMTI5NCwxMiArMTI5NCwxMiBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlckdyaWQ6OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHxk
aXJlY3Rpb258IGludG8gZmlyc3RMaW5lQmFzZWxpbmUgYW5kIHN0b3AgYmFpbGluZyBvdXQgaWYg
d2UncmUgYSB3cml0aW5nCiAgICAgICAgIC8vIG1vZGUgcm9vdC4gVGhpcyB3b3VsZCBhbHNvIGZp
eCBzb21lIGNhc2VzIHdoZXJlIHRoZSBncmlkIGlzIG9ydGhvZ29uYWwgdG8gaXRzIGNvbnRhaW5l
ci4KICAgICAgICAgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uID0gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lOwotICAgICAgICByZXR1
cm4gc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3goKmJhc2VsaW5lQ2hpbGQsIGRpcmVj
dGlvbikgKyBsb2dpY2FsVG9wRm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpLnRvSW50KCk7CisgICAg
ICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVDaGls
ZCwgZGlyZWN0aW9uKSArIGxvZ2ljYWxUb3BGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCk7CiAgICAg
fQogICAgIHJldHVybiBiYXNlbGluZS52YWx1ZSgpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRv
cCgpLnRvSW50KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tC
YXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlckdyaWQ6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckdyaWQuaAppbmRleCBiYjg1YzY3Yzg4MjQ1YzcxNTkzZTAwYjFmYmI2NDkxZDRkNjI4
ZTBlLi4xZGJlOTFjNzhlNmY2ZjQwODRiMDZkNDliNGUwMzJjODQxZTdkNGNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKQEAgLTE2OSw5ICsxNjksOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlQXV0b01hcmdpbnNJbkNvbHVtbkF4aXNJZk5lZWRlZChSZW5kZXJCb3gm
KTsKICAgICB2b2lkIHVwZGF0ZUF1dG9NYXJnaW5zSW5Sb3dBeGlzSWZOZWVkZWQoUmVuZGVyQm94
Jik7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGlu
ZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5h
bDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZp
bmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURp
cmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNJbmxpbmVCYXNlbGluZUFsaWdu
ZWRDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBjb25zdDsKIAogICAgIExheW91dFVuaXQgY29sdW1u
QXhpc0Jhc2VsaW5lT2Zmc2V0Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IDJhY2EwN2QyYTczYjRm
OTE4MzlhNWE5ZDc1MGUxOTY2MGM2YjZjMGQuLjJlMTVlNTVkZTNmZjhhNGIxZTE4ZjFhMDVlYTEw
OWY4MTY2MjU5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
CkBAIC0xMTYyLDExICsxMTYyLDExIEBAIExheW91dFVuaXQgUmVuZGVySW5saW5lOjpsaW5lSGVp
Z2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSAvKmRpcmVjdGlvCiAgICAgcmV0
dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0KCk7CiB9CiAKLWludCBSZW5kZXJJbmxpbmU6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9z
aXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJJbmxpbmU6OmJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rp
b25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25z
dAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IGZpcnN0TGluZSA/IGZpcnN0TGlu
ZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2Vu
dChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQ
b3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkpIC8gMjsKKyAgICByZXR1cm4gTGF5
b3V0VW5pdCB7IChmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0
KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDIpLnRvSW50KCkgfTsKIH0KIAogTGF5b3V0U2l6ZSBSZW5kZXJJbmxpbmU6Om9m
ZnNldEZvckluRmxvd1Bvc2l0aW9uZWRJbmxpbmUoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCAzYmM1MWEwZDQ2
MmZmY2RlNGM0ZDdmNmUwNDdlNDg5Y2MwYzFlNDcwLi4yZDRlNzYyNGNhZWI4YmE1NDBiMWExMWNj
MTY3N2EzOTE1ZDE1YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5o
CkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpcnR5TGluZXNGcm9tQ2hh
bmdlZENoaWxkKFJlbmRlck9iamVjdCYgY2hpbGQpIGZpbmFsIHsgbV9saW5lQm94ZXMuZGlydHlM
aW5lc0Zyb21DaGFuZ2VkQ2hpbGQoKnRoaXMsIGNoaWxkKTsgfQogCiAgICAgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9u
TW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAgaW50IGJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0
IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0
aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7CiAgICAgCiAgICAgdm9pZCB1cGRhdGVI
aXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRQb2ludCYpIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IDNm
OTZlYjYzMDc2YjA2NzEyMWY4NTFlM2NjZjc3ZDcwODY3NzU4NGMuLjNiMjMwZjFiYmY3MTAxZTFh
MDRmMjI2NjQxOWIzZTIyNjJiZDY4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC03NiwxMSArNzYsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJM
aW5lQnJlYWs6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8q
ZGlyZWMKICAgICByZXR1cm4gbV9jYWNoZWRMaW5lSGVpZ2h0OwogfQogCi1pbnQgUmVuZGVyTGlu
ZUJyZWFrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUg
bGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTGluZUJyZWFrOjpiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9u
TW9kZSkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUg
PyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+c3R5bGUoKTsKICAgICBjb25zdCBGb250TWV0cmlj
cyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOwotICAgIHJldHVybiBmb250TWV0
cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0
aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDI7CisgICAg
cmV0dXJuIExheW91dFVuaXQgeyAoZm9udE1ldHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAo
bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250
TWV0cmljcy5oZWlnaHQoKSkgLyAyKS50b0ludCgpIH07CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxJ
bmxpbmVFbGVtZW50Qm94PiBSZW5kZXJMaW5lQnJlYWs6OmNyZWF0ZUlubGluZUJveCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXggZTU5YmFmMjIxMjFi
MTYxZWNhYTY3NGE4NzUzNDI2MzU0ZjY4YzljZS4uZTc1M2U0NTUwMGUwZmM5ZDJjZWRjZmYxZGVk
OTY1ZWM2YjRlNTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25M
ZWFmKCkgY29uc3QgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJz
dExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsK
LSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CisgICAgTGF5
b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIExh
eW91dFVuaXQgbWFyZ2luVG9wKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIExheW91
dFVuaXQgbWFyZ2luQm90dG9tKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDA2NGY4MTQ4ODlhNTQ3ZGZk
ZWJkMzZlZWYzYzg0M2ZlN2QzYWIzNTIuLjk1MGIxZDdlMzFkMmMwY2Q4NDc3ZGQxYWI2YTM4YzUw
ZjU3MmRmOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAK
QEAgLTI3Myw3ICsyNzMsNyBAQCBSZW5kZXJCb3g6OkxvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVl
cyBSZW5kZXJMaXN0Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodChMYXlvdQogICAgIHJldHVybiBS
ZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KGhlaWdodCwgbG9naWNhbFRvcCk7CiB9CiAK
LWludCBSZW5kZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGlu
ZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uLCBM
aW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyQm94Ojpi
YXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBsaW5lRGlyZWN0aW9uLCBs
aW5lUG9zaXRpb25Nb2RlKSAtIGJhc2VsaW5lQWRqdXN0bWVudDsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCmluZGV4IGM2NzA0MmQxZGVhYjdlYWY5ZGIzMzhjZDIz
MzQ4ZDUwN2YyNDczMjUuLjIxYmJhYTI3ODA4NjA5ODFlMTgyYWYwZjk5MjZjNGYyMTdlMTM0MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaApAQCAtODcsNyArODcs
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhM
YXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heExvZ2ljYWxXaWR0aCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygp
IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25P
bkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlOwogICAgIExvZ2ljYWxFeHRlbnRDb21wdXRlZFZhbHVlcyBjb21wdXRlTG9naWNhbEhlaWdo
dChMYXlvdXRVbml0IGxvZ2ljYWxIZWlnaHQsIExheW91dFVuaXQgbG9naWNhbFRvcCkgY29uc3Qg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCmluZGV4IDE1ODEyMTFkYmI2YzcyZmQ4
YjFmYWIzNTkzMWQyYmEyMDk5MDZjMzguLjM3NDE3ZmRmNDdiOWRiNjNhMmY2YmUzY2U0YjQwMDRj
YmNiMjI2ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAKQEAgLTE3OTEsNyArMTc5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6
bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0CiAgICAg
cmV0dXJuIFJlbmRlckJveDo6bGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBv
c2l0aW9uTW9kZSk7CiB9CiAKLWludCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVyTGlzdE1hcmtlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0
aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgaWYg
KCFpc0ltYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2xpc3RJdGVtLT5iYXNlbGluZVBvc2l0aW9u
KGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIFBvc2l0aW9uT2ZJbnRlcmlvckxp
bmVCb3hlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApp
bmRleCAwODQ0ZTk3NmRjZTBmZjQ5ODcyZGUwYzRlZThhMzczZjkzZDU3MWQ2Li45ODFlOTBlZTE0
MThiZDQ2YmVhMDNmM2IzNGI0MzJjY2ZiZjMwMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lRWxlbWVudEJveD4gY3JlYXRlSW5saW5lQm94KCkgb3ZlcnJp
ZGU7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJl
Y3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBj
b25zdCBvdmVycmlkZTsKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0
aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBv
dmVycmlkZTsKIAogICAgIGJvb2wgaXNJbWFnZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIGJvb2wg
aXNUZXh0KCkgY29uc3QgeyByZXR1cm4gIWlzSW1hZ2UoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuaAppbmRleCBiZmNiOTkwZjk5M2NkNWNiMWJkZjljZWM1NmFm
NTVhMWVjYWMxZTZiLi5hNzE5ZjAzZjdmMTUxOTYzOWNmMzYyZDUwYzg3OTFhMWRlMWIyM2JjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaApAQCAtMTI1LDEyICsx
MjUsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIEZsZXhib3ggZGVmaW5lcyBiYXNlbGluZXMgZGlm
ZmVyZW50bHkgdGhhbiByZWd1bGFyIGJsb2Nrcy4KICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBh
dGliaWxpdHksIG1lbnVsaXN0cyBuZWVkIHRvIGRvIHRoZSByZWd1bGFyIGJsb2NrIGJlaGF2aW9y
LgotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBw
b3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5l
LCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25hbDxp
bnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxv
Y2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlvbmFs
PExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0
aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNl
bGluZShkaXJlY3Rpb24pOyB9CiAKICAgICB2b2lkIGdldEl0ZW1CYWNrZ3JvdW5kQ29sb3IodW5z
aWduZWQgbGlzdEluZGV4LCBDb2xvciYsIGJvb2wmIGl0ZW1IYXNDdXN0b21CYWNrZ3JvdW5kQ29s
b3IpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U2xpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCmlu
ZGV4IDRkMjc4ZDE3MmZkM2UzNzhiNzA1MDRkMWE0YjQ5NGY5MzdkZjlmOWEuLjQ3MTY5ZWRmOThl
MTQyOGM0YTA3NzBmMmY0ZWZjMGI1OGQ4MTNjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuY3BwCkBAIC02MSw3ICs2MSw3IEBAIEhUTUxJbnB1dEVsZW1lbnQmIFJl
bmRlclNsaWRlcjo6ZWxlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLWludCBSZW5kZXJTbGlkZXI6
OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8sIExpbmVE
aXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJT
bGlkZXI6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIC8qZmlyc3RMaW5lKi8s
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBQYXRjaCB0aGlzIGZ1bmN0aW9uIGZvciB3cml0aW5nLW1vZGUuCiAgICAgcmV0dXJuIGhl
aWdodCgpICsgbWFyZ2luVG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2xpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVy
LmgKaW5kZXggYTMzNzQ5NmQ3NWY1ZmEwNTg2MDI1NzIxOWZiN2JjMTRiNDZlNWRjYi4uM2JhMDUx
MDU3ODhmMWZjNzkwYjZjNDEzZTUyNzM0OTM3ZDMyYTY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0
IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAiUmVuZGVyU2xpZGVy
IjsgfQogICAgIGJvb2wgaXNTbGlkZXIoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWlu
aW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9z
aXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2lj
YWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBsYXlvdXQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwCmluZGV4IGEyMTQ4YzIzZjUxNjIzM2M3NjQxYjMwMThmMzBkYmZmMDFhYzhlMjMuLjMwMGZk
MmM3OWM1M2JlMWJlNjlkYjM2ZmNkOTQxOGEyMWRmZGFjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMTQ3MSwzOSArMTQ3MSwzOSBAQCBSZW5kZXJCbG9j
ayogUmVuZGVyVGFibGU6OmZpcnN0TGluZUJsb2NrKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotaW50IFJlbmRlclRhYmxlOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBi
YXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24s
IExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB2YWx1ZU9yQ29tcHV0ZShm
aXJzdExpbmVCYXNlbGluZSgpLCBbJl0gewogICAgICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNl
bGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3Np
dGlvbk1vZGUpOwogICAgIH0pOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlclRhYmxlOjppbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0
VW5pdD4gUmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUp
IGNvbnN0CiB7CiAgICAgLy8gVGFibGVzIGFyZSBza2lwcGVkIHdoZW4gY29tcHV0aW5nIGFuIGlu
bGluZS1ibG9jaydzIGJhc2VsaW5lLgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAg
cmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
VGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlclRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gVGhlIGJhc2Vs
aW5lIG9mIGEgJ3RhYmxlJyBpcyB0aGUgc2FtZSBhcyB0aGUgJ2lubGluZS10YWJsZScgYmFzZWxp
bmUgcGVyIENTUyAzIEZsZXhib3ggKENTUyAyLjEKICAgICAvLyBkb2Vzbid0IGRlZmluZSB0aGUg
YmFzZWxpbmUgb2YgYSAndGFibGUnIG9ubHkgYW4gJ2lubGluZS10YWJsZScpLgogICAgIC8vIFRo
aXMgaXMgYWxzbyBuZWVkZWQgdG8gcHJvcGVybHkgZGV0ZXJtaW5lIHRoZSBiYXNlbGluZSBvZiBh
IGNlbGwgaWYgaXQgaGFzIGEgdGFibGUgY2hpbGQuCiAKICAgICBpZiAoaXNXcml0aW5nTW9kZVJv
b3QoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPExheW91dFVuaXQ+KCk7CiAKICAgICByZWNhbGNTZWN0aW9uc0lmTmVlZGVkKCk7CiAK
ICAgICBjb25zdCBSZW5kZXJUYWJsZVNlY3Rpb24qIHRvcE5vbkVtcHR5U2VjdGlvbiA9IHRoaXMt
PnRvcE5vbkVtcHR5U2VjdGlvbigpOwogICAgIGlmICghdG9wTm9uRW1wdHlTZWN0aW9uKQotICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5
b3V0VW5pdD4oKTsKIAotICAgIGlmIChPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gdG9wTm9uRW1w
dHlTZWN0aW9uLT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8
aW50Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkp
OworICAgIGlmIChhdXRvIGJhc2VsaW5lID0gdG9wTm9uRW1wdHlTZWN0aW9uLT5maXJzdExpbmVC
YXNlbGluZSgpKQorICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4odG9wTm9uRW1w
dHlTZWN0aW9uLT5sb2dpY2FsVG9wKCkgKyBiYXNlbGluZS52YWx1ZSgpKTsKIAogICAgIC8vIEZJ
WE1FOiBBIHRhYmxlIHJvdyBhbHdheXMgaGFzIGEgYmFzZWxpbmUgcGVyIENTUyAyLjEuIFdpbGwg
dGhpcyByZXR1cm4gdGhlIHJpZ2h0IHZhbHVlPwotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7
CisgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKIExheW91dFJlY3QgUmVu
ZGVyVGFibGU6Om92ZXJmbG93Q2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBS
ZW5kZXJGcmFnbWVudENvbnRhaW5lciogZnJhZ21lbnQsIE92ZXJsYXlTY3JvbGxiYXJTaXplUmVs
ZXZhbmN5IHJlbGV2YW5jeSwgUGFpbnRQaGFzZSBwaGFzZSkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmgKaW5kZXggNmZlMGNhZDI1M2RlMzRmMTE4NTFmZWU4ZmVhNDcz
ZmRkNjUzYmEyMy4uODgxYTY3NTQ5M2Q0NzRjNjBhZWZlNDkyOTFkYmFjMjM4Y2ViYjY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgKQEAgLTI5Miw5ICsyOTIsOSBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZTsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29uc3Qg
TGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlkZTsK
IAotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUs
IExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5p
bmdMaW5lKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5l
KExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFs
OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5l
RGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAKICAgICBSZW5kZXJUYWJsZUNvbCogc2xvd0Nv
bEVsZW1lbnQodW5zaWduZWQgY29sLCBib29sKiBzdGFydEVkZ2UsIGJvb2wqIGVuZEVkZ2UpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
Y3BwCmluZGV4IDFlMTliM2RiMzUxMWEyOWFlNmVjZjZjM2ViMzMzOWM3NzMwODU5ZjEuLmRiYzgx
NzljYTY5MDc3Y2E5YzY2ZTFmMzJhMDhjZDQ2NjJmMWE5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC04NjcsMjMgKzg2NywyMyBA
QCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cmVjYWxjT3V0ZXJCb3JkZXIoKQogICAgIG1fb3V0
ZXJCb3JkZXJFbmQgPSBjYWxjT3V0ZXJCb3JkZXJFbmQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBS
ZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAog
ewogICAgIGlmICghbV9ncmlkLnNpemUoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4o
KTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKLSAgICBpbnQgZmly
c3RMaW5lQmFzZWxpbmUgPSBtX2dyaWRbMF0uYmFzZWxpbmU7CisgICAgTGF5b3V0VW5pdCBmaXJz
dExpbmVCYXNlbGluZSA9IG1fZ3JpZFswXS5iYXNlbGluZTsKICAgICBpZiAoZmlyc3RMaW5lQmFz
ZWxpbmUpCi0gICAgICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSArIHJvdW5kVG9JbnQobV9y
b3dQb3NbMF0pOworICAgICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUgKyBtX3Jvd1Bvc1sw
XTsKIAotICAgIE9wdGlvbmFsPGludD4gcmVzdWx0OworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IHJlc3VsdDsKICAgICBjb25zdCBSb3cmIGZpcnN0Um93ID0gbV9ncmlkWzBdLnJvdzsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpcnN0Um93LnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNv
bnN0IENlbGxTdHJ1Y3QmIGNzID0gZmlyc3RSb3cuYXQoaSk7CiAgICAgICAgIGNvbnN0IFJlbmRl
clRhYmxlQ2VsbCogY2VsbCA9IGNzLnByaW1hcnlDZWxsKCk7CiAgICAgICAgIC8vIE9ubHkgY2Vs
bHMgd2l0aCBjb250ZW50IGhhdmUgYSBiYXNlbGluZQogICAgICAgICBpZiAoY2VsbCAmJiBjZWxs
LT5jb250ZW50TG9naWNhbEhlaWdodCgpKSB7Ci0gICAgICAgICAgICBpbnQgY2FuZGlkYXRlID0g
cm91bmRUb0ludChjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5ib3JkZXJBbmRQYWRkaW5nQmVm
b3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgIExheW91
dFVuaXQgY2FuZGlkYXRlID0gY2VsbC0+bG9naWNhbFRvcCgpICsgY2VsbC0+Ym9yZGVyQW5kUGFk
ZGluZ0JlZm9yZSgpICsgY2VsbC0+Y29udGVudExvZ2ljYWxIZWlnaHQoKTsKICAgICAgICAgICAg
IHJlc3VsdCA9IHN0ZDo6bWF4KHJlc3VsdC52YWx1ZU9yKGNhbmRpZGF0ZSksIGNhbmRpZGF0ZSk7
CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmgKaW5kZXggZTNmOTQ2N2FiMTA3MGEyMWUzYzM2M2JhY2Q3MjcwMDNkNmU5YTZm
Ny4uM2E2MzA1YmVjNzVmODkwMmUwNGM3ZDMwMzU3NWVkNDU4Y2ZkNmNlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApAQCAtNjIsNyArNjIsNyBA
QCBwdWJsaWM6CiAgICAgUmVuZGVyVGFibGVSb3cqIGZpcnN0Um93KCkgY29uc3Q7CiAgICAgUmVu
ZGVyVGFibGVSb3cqIGxhc3RSb3coKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBm
aXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdm9pZCBhZGRDZWxsKFJl
bmRlclRhYmxlQ2VsbCosIFJlbmRlclRhYmxlUm93KiByb3cpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oCmluZGV4IDY5YjE5M2IxZmYyOGJmMmQwZTU4
YmU2YWUzMTUyZGE4ZDkyMjlhOTAuLjZhMzdiMGIzZTdkNjYwMmQ1N2U2NWY2NjY1ZTdjN2E1NTMw
YjJhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29u
dHJvbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5o
CkBAIC05NCwxMiArOTQsMTIgQEAgcHVibGljOgogICAgIHsgfQogICAgIHZpcnR1YWwgflJlbmRl
clRleHRDb250cm9sSW5uZXJDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICBpbnQgYmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgcG9zaXRpb24pIGNvbnN0IG92
ZXJyaWRlCisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNl
bGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBv
c2l0aW9uTW9kZSBwb3NpdGlvbikgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVy
biBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihiYXNlbGluZSwgZmlyc3RMaW5lLCBkaXJl
Y3Rpb24sIHBvc2l0aW9uKTsKICAgICB9Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNl
bGluZSgpOyB9Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6
OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsgfQorICAgIE9wdGlvbmFsPExheW91dFVu
aXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxv
Y2s6OmZpcnN0TGluZUJhc2VsaW5lKCk7IH0KKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsg
fQogCiBwcml2YXRlOgogICAgIGJvb2wgaXNGbGV4aWJsZUJveEltcGwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcAppbmRleCAyODM1Yzc5NjQ2YTZkNTc3Nzcy
ZWNjZDhkMGFiODQyZDhjYzk1YjU5Li4yOTgzMDcwOWQ4MDYwYzlhMzFjZWNiNzhhYTcxYjA0Zjc5
ZDIwYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2xNdWx0aUxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbE11bHRpTGluZS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91
dFVuaXQgbGkKICAgICByZXR1cm4gbGluZUhlaWdodCAqIHRleHRBcmVhRWxlbWVudCgpLnJvd3Mo
KSArIG5vbkNvbnRlbnRIZWlnaHQ7CiB9CiAKLWludCBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGlu
ZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0
TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQ
b3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5l
OjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBv
c2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICByZXR1cm4gUmVuZGVyQm94OjpiYXNlbGluZVBvc2l0
aW9uKGJhc2VsaW5lVHlwZSwgZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaAppbmRleCA3MjFhZjlmNmEzM2ZhZjRiODljNzUxY2JlOTI0OTM4YjRjZDNi
MDY5Li40NDA5NGNlMDMyMDMxZmVjODY5ZTMyM2QzMjgxMDYwNjQ1YmMxYTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
aApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IGdldEF2ZXJhZ2VDaGFyV2lk
dGgoKSBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IHByZWZlcnJlZENvbnRlbnRMb2dpY2FsV2lk
dGgoZmxvYXQgY2hhcldpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRVbml0IGNvbXB1
dGVDb250cm9sTG9naWNhbEhlaWdodChMYXlvdXRVbml0IGxpbmVIZWlnaHQsIExheW91dFVuaXQg
bm9uQ29udGVudEhlaWdodCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRp
b24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQ
b3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RM
aW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250
YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxheW91dEV4Y2x1ZGVkQ2hp
bGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuKSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKaW5kZXggNDkyNTk1ZDM0MTgzYjk0MDcyZmI5
MTAwNTM5MGFiY2RiMTEwN2FjYy4uNjQ5MTEzMGNjZGNiNTY2ZWVjYTZmZjg3YTk1OGVlYmYxOTgx
ZDUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAt
MTAxLDcgKzEwMSw3IEBAIGJvb2wgUm9vdElubGluZUJveDo6aXNIeXBoZW5hdGVkKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWludCBSb290SW5saW5lQm94OjpiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CitMYXlvdXRVbml0IFJvb3RJbmxp
bmVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QK
IHsKICAgICByZXR1cm4gcmVuZGVyZXIoKS5iYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lVHlwZSwg
aXNGaXJzdExpbmUoKSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2Fs
TGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUm9vdElubGluZUJveC5oCmluZGV4IGVjZjJhNTBiZDRiNzg2MjE0OGVjZmQzMGVkMWZm
M2RkZjU1NWRhYTIuLjkyOTQwOTZjMWQ1OTA3Zjk4MGYxOGFkYzBkOWFmMjE2YTZhNzliNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaApAQCAtMTE3LDcgKzExNyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNIeXBoZW5hdGVkKCkgY29uc3Q7CiAKLSAgICBpbnQg
YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBjb25zdCBmaW5hbDsK
KyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KCkgY29uc3QgZmluYWw7
CiAKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50JiwgTGF5b3V0
VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20pIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApp
bmRleCA0YmFlNGQyYjI4MjhiNjRmNDZmYTZlMWFkZjk4Mzg2YTNjNDdjZTQyLi4xOGU4NGJiNDVj
YmMxMWM1MGE5YTIwZThiMWYyMmI5NzIwZjFkNGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmNwcApAQCAtOTUsNyArOTUs
NyBAQCBMYXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjptaXJyb3JJZk5lZWRlZChMYXlvdXRV
bml0IGhvcml6b250YWxPZmZzZXQsIExheW91dAogICAgIHJldHVybiBob3Jpem9udGFsT2Zmc2V0
OwogfQogCi1pbnQgUmVuZGVyTWF0aE1MQmxvY2s6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVj
dGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5p
dCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxp
bmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gbWF0aG1sLmNz
cyBzZXRzIG1hdGggeyAtd2Via2l0LWxpbmUtYm94LWNvbnRhaW46IGdseXBocyByZXBsYWNlZDsg
bGluZS1oZWlnaHQ6IDA7IH0sIHNvIHdoZW4gbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9m
SW50ZXJpb3JMaW5lQm94ZXMgd2Ugd2FudCB0bwogICAgIC8vIHJldHVybiAwIGhlcmUgdG8gbWF0
Y2ggb3VyIGxpbmUtaGVpZ2h0LiBUaGlzIG1hdHRlcnMgd2hlbiBSb290SW5saW5lQm94Ojphc2Nl
bnRBbmREZXNjZW50Rm9yQm94IGlzIGNhbGxlZCBvbiBhIFJvb3RJbmxpbmVCb3ggZm9yIGFuIGlu
bGluZS1ibG9jay4KQEAgLTE3NiwxMSArMTc2LDExIEBAIExheW91dFVuaXQgdG9Vc2VyVW5pdHMo
Y29uc3QgTWF0aE1MRWxlbWVudDo6TGVuZ3RoJiBsZW5ndGgsIGNvbnN0IFJlbmRlclN0eWxlJiBz
CiAgICAgfQogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRhYmxlOjpmaXJzdExpbmVC
YXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxUYWJsZTo6
Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIC8vIEJ5IGRlZmF1bHQgdGhlIHZlcnRp
Y2FsIGNlbnRlciBvZiA8bXRhYmxlPiBpcyBhbGlnbmVkIG9uIHRoZSBtYXRoIGF4aXMuCiAgICAg
Ly8gVGhpcyBpcyBkaWZmZXJlbnQgdGhhbiBSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQm94QmFzZWxp
bmUsIHdoaWNoIHJldHVybnMgdGhlIGJhc2VsaW5lIG9mIHRoZSBmaXJzdCByb3cgb2YgYSA8dGFi
bGU+LgotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBheGlz
SGVpZ2h0KHN0eWxlKCkpKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChsb2dpY2FsSGVpZ2h0
KCkgLyAyICsgYXhpc0hlaWdodChzdHlsZSgpKSkudG9JbnQoKSB9OwogfQogCiB2b2lkIFJlbmRl
ck1hdGhNTEJsb2NrOjpsYXlvdXRJdGVtcyhib29sIHJlbGF5b3V0Q2hpbGRyZW4pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKaW5k
ZXggMGY2Yzc2MjI3Nzg4MzdmMjkxY2JkZDQ3NGY1YzgyYjgzYTczNWM4NS4uM2E2MWZmZWYxM2Fm
NWE3Yzk5ZTZkNDUwOTk4ZjYxYjViMjYxNGFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4
NjE3LgogICAgIHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
YXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmlu
Z0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwpA
QCAtODIsNyArODIsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBzdGF0aWMgTGF5b3V0VW5pdCBhc2Nl
bnRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmIGNoaWxkKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGNoaWxkLmZpcnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihjaGlsZC5sb2dpY2FsSGVpZ2h0KCkp
OworICAgICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxk
LmxvZ2ljYWxIZWlnaHQoKS50b0ludCgpKTsKICAgICB9CiAKICAgICB2b2lkIGxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBf
bHUpIG92ZXJyaWRlOwpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1JlbmRlck1hdGhNTFRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiUmVuZGVy
TWF0aE1MVGFibGUiOyB9Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QgZmluYWw7CiAKICAgICBSZWY8TWF0aE1MU3R5bGU+IG1fbWF0aE1MU3R5bGU7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEZyYWN0aW9uLmNwcAppbmRleCBlZjNiNjQ3YmZmNDcyYjY2MmY2ZGFkZmZiNjM0NjZhZjM5OTY0
NDhjLi5hZjM3NDk0NjFlZTI0NjU0NDE4MzUxZDcyMzljMDgzZTZmNTI4YzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0
aW9uLmNwcApAQCAtMjcyLDEwICsyNzIsMTAgQEAgdm9pZCBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6
cGFpbnQoUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQKICAg
ICBpbmZvLmNvbnRleHQoKS5kcmF3TGluZShhZGp1c3RlZFBhaW50T2Zmc2V0LCByb3VuZGVkSW50
UG9pbnQoTGF5b3V0UG9pbnQoYWRqdXN0ZWRQYWludE9mZnNldC54KCkgKyBsb2dpY2FsV2lkdGgo
KSwgTGF5b3V0VW5pdChhZGp1c3RlZFBhaW50T2Zmc2V0LnkoKSkpKSk7CiB9CiAKLU9wdGlvbmFs
PGludD4gUmVuZGVyTWF0aE1MRnJhY3Rpb246OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTEZyYWN0aW9uOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PGludD4oc3RkOjpscm91bmQoc3RhdGljX2Nhc3Q8ZmxvYXQ+KGZyYWN0aW9uQXNjZW50KCkpKSk7
CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgcm91bmRmKHN0YXRpY19jYXN0PGZsb2F0Pihm
cmFjdGlvbkFzY2VudCgpKSkgfTsKICAgICByZXR1cm4gUmVuZGVyTWF0aE1MQmxvY2s6OmZpcnN0
TGluZUJhc2VsaW5lKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAppbmRleCAyMGI1YjRjOWFlZWY1ZmRkYzYy
MWYzNzI1ZWFlNDU0YzM0NmQwNTkwLi4yN2YxNGQ3NWYwZTI4ODgzZWNhM2YwMTIxOTdmMTc2YWY5
ZTFjYmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEZyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9S
ZW5kZXJNYXRoTUxGcmFjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlv
dXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWln
aHQgPSAwX2x1KSBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBv
aW50JikgZmluYWw7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVy
YXRvcigpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCmluZGV4IDcwZWQ5NzdhNjM4MTll
YWZkZmY2ZTIxZDg2M2NlMjMxMzFlMDM0MDcuLmE0MTlhOWQyZmI3NDE4MDE2Yzg1NmViMjRlMDdm
Y2QyM2VkNjg1NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCkBAIC0zMDEsMTAgKzMwMSwxMCBAQCBMYXlv
dXRVbml0IFJlbmRlck1hdGhNTE9wZXJhdG9yOjp2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hp
ZnQoKSBjb25zdAogICAgIHJldHVybiAobV9zdHJldGNoRGVwdGhCZWxvd0Jhc2VsaW5lIC0gbV9z
dHJldGNoSGVpZ2h0QWJvdmVCYXNlbGluZSAtIG1fbWF0aE9wZXJhdG9yLmRlc2NlbnQoKSArIG1f
bWF0aE9wZXJhdG9yLmFzY2VudCgpKSAvIDI7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0
aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVu
aXQ+IFJlbmRlck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKHVzZU1hdGhPcGVyYXRvcigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihz
dGQ6Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRoT3BlcmF0b3IuYXNjZW50KCkgLSB2
ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSkpKTsKKyAgICAgICAgcmV0dXJuIExheW91
dFVuaXQgeyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4obV9tYXRo
T3BlcmF0b3IuYXNjZW50KCkgLSB2ZXJ0aWNhbFN0cmV0Y2hlZE9wZXJhdG9yU2hpZnQoKSkpKSB9
OwogICAgIHJldHVybiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxPcGVyYXRvci5oCmluZGV4IDlkMzEwOTZmMjQ3MzgwNzIwOGIxNDAyYWYzNzk0Y2I5NzhlMWFm
ZTguLmZlODlhYTFhZjI2YTA3YzAxNjAzZmUxNzljNzJlODlmNjk3Mjc4NjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9y
LmgKQEAgLTc5LDcgKzc5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MT3Bl
cmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0ludmlzaWJs
ZU9wZXJhdG9yKCkgY29uc3Q7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdCBmaW5hbDsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJlbGxpc2hl
ZE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gY29uc3RfY2FzdDxSZW5kZXJNYXRoTUxP
cGVyYXRvcio+KHRoaXMpOyB9CiAKICAgICBMYXlvdXRVbml0IHZlcnRpY2FsU3RyZXRjaGVkT3Bl
cmF0b3JTaGlmdCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCmluZGV4IGQxM2M4YjRiYTVkMTEwNTc0OTAx
NDAxYTk5OTJmYWY3YTMyY2RjYzcuLjc5MGFmN2FhMzZkZWE2MjE0OGNhMzllN2U1MDNlM2NhMzJi
YzJjYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MUGFkZGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFBhZGRlZC5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFJlbmRlck1hdGhN
TFBhZGRlZDo6bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0KQog
ICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxQ
YWRkZWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJl
bmRlck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIC8vIFdl
IHRyeSBhbmQgY2FsY3VsYXRlIHRoZSBiYXNlbGluZSBmcm9tIHRoZSBwb3NpdGlvbiBvZiB0aGUg
Zmlyc3QgY2hpbGQuCiAgICAgTGF5b3V0VW5pdCBhc2NlbnQ7CkBAIC0xMjQsNyArMTI0LDcgQEAg
T3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxQYWRkZWQ6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKICAgICAgICAgYXNjZW50ID0gYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFz
ZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpICsgdm9mZnNldCgpOwogICAgIGVsc2UKICAgICAgICAg
YXNjZW50ID0gbXBhZGRlZEhlaWdodCgwKTsKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzdGQ6
Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4oYXNjZW50KSkpOworICAgIHJldHVybiBhc2NlbnQ7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUGFkZGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFBhZGRlZC5oCmluZGV4IDBkN2YzMTBhYmI0NWYzYTIwOGYxNjI2MTFkNzI4OGQ5Y2Zh
MWNiYzYuLjkzYjM2NmVjZmU2MmFlNzBkZTQ1MmFiYWUwNWQ2MzY0NTU4MmMzMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQu
aApAQCAtNDMsNyArNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVk
TG9naWNhbFdpZHRocygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91
dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMF9sdSkgZmluYWw7Ci0g
ICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOworICAgIE9w
dGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAKICAg
ICBNYXRoTUxQYWRkZWRFbGVtZW50JiBlbGVtZW50KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8TWF0aE1MUGFkZGVkRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KICAgICBM
YXlvdXRVbml0IHZvZmZzZXQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAppbmRleCA5YjNlYjA4OGZhYjM0MzQyMjBi
YTBmYmE3OWQyZDg4Yzk1MGNlM2ExLi43NjQxMzBhMjA4ZDI2ZTNhYWY3ODc2MmU5NmMwMWMyMDdi
NTg4MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTFJvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxSb3cuY3BwCkBAIC01MiwxMyArNTIsMTMgQEAgTWF0aE1MUm93RWxlbWVudCYgUmVu
ZGVyTWF0aE1MUm93OjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWF0
aE1MUm93RWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7CiB9CiAKLU9wdGlvbmFsPGlu
dD4gUmVuZGVyTWF0aE1MUm93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRpb25hbDxM
YXlvdXRVbml0PiBSZW5kZXJNYXRoTUxSb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsK
ICAgICBhdXRvKiBiYXNlbGluZUNoaWxkID0gZmlyc3RDaGlsZEJveCgpOwogICAgIGlmICghYmFz
ZWxpbmVDaGlsZCkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiAKLSAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihz
dGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsg
YmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkpOworICAgIHJldHVybiBMYXlvdXRVbml0IHsg
c3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKGFzY2VudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSAr
IGJhc2VsaW5lQ2hpbGQtPmxvZ2ljYWxUb3AoKSkpIH07CiB9CiAKIHN0YXRpYyBSZW5kZXJNYXRo
TUxPcGVyYXRvciogdG9WZXJ0aWNhbFN0cmV0Y2h5T3BlcmF0b3IoUmVuZGVyQm94KiBib3gpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJv
dy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaApp
bmRleCBlODc1OGFlOGViYzEwYTVmMWFiZDg0MTk2N2ZkMTVjNjg1YmQ4OTE4Li4xNjk1NjQyOTA1
M2VkNjRmYzdmODcwODkwNGMwOThkMjRkMjMwNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVi
bGljOgogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKLSAg
ICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
T3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZvaWQgc3RyZXRjaFZlcnRpY2FsT3BlcmF0b3JzQW5kTGF5b3V0Q2hpbGRyZW4oKTsK
ICAgICB2b2lkIGdldENvbnRlbnRCb3VuZGluZ0JveChMYXlvdXRVbml0JiB3aWR0aCwgTGF5b3V0
VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50KSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCmlu
ZGV4IDVjMTVlYjQ0YThiOWY4OTEwYWU4YzliYjAyMDExMzMxZTdjOGM3YzMuLjA4MTRlNTIzMWEy
MzBjNGM3NmJkOGNjYjJiMzgzMTg3YmQ3Yjk3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtNDY2LDEy
ICs0NjYsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpsYXlvdXRCbG9jayhib29sIHJl
bGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogfQog
Ci1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFNjcmlwdHM6OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNjcmlwdHM6OmZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBhdXRvKiBiYXNlID0gZmlyc3RDaGlsZEJveCgpOwog
ICAgIGlmICghYmFzZSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKLSAgICByZXR1
cm4gT3B0aW9uYWw8aW50PihzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQo
KmJhc2UpICsgYmFzZS0+bG9naWNhbFRvcCgpKSkpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8
TGF5b3V0VW5pdD4oKTsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IHJvdW5kZihhc2NlbnRGb3JD
aGlsZCgqYmFzZSkgKyBiYXNlLT5sb2dpY2FsVG9wKCkpIH07CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKaW5k
ZXggODJmMjU3MGZmOGM5N2E0NzU3YWRlMTE0Y2E3YWQ4M2I3OTNiNDYwYy4uOWQyM2FiZTM5NDBm
NTJmZjZlYzY0ZjNkZTc4YmYxZDNiNjM5NzJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmgKQEAgLTUwLDcgKzUwLDcg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIE1hdGhNTFNjcmlwdHNFbGVtZW50JiBlbGVt
ZW50KCkgY29uc3Q7Ci0gICAgT3B0aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QgZmluYWw7CiAgICAgc3RydWN0IFJlZmVyZW5jZUNoaWxkcmVuIHsKICAgICAgICAgUmVuZGVy
Qm94KiBiYXNlOwogICAgICAgICBSZW5kZXJCb3gqIHByZXNjcmlwdERlbGltaXRlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5j
cHAKaW5kZXggMzEzNjkzYTRhZTA1MmZkYjJiNjFhZjA2ZjgyYTVjNWQ4MTZhOTNlMy4uZjkyNDY1
NzEyZGI3OGRmNjQ2MTMxMjQxYmU0YzAwY2ZkZjhkMjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTg2LDEx
ICs4NiwxMSBAQCB2b2lkIFJlbmRlck1hdGhNTFNwYWNlOjpsYXlvdXRCbG9jayhib29sIHJlbGF5
b3V0Q2hpbGRyZW4sIExheW91dFVuaXQpCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogfQogCi1P
cHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxTcGFjZTo6Zmlyc3RMaW5lQmFzZWxp
bmUoKSBjb25zdAogewogICAgIExheW91dFVuaXQgaGVpZ2h0LCBkZXB0aDsKICAgICBnZXRTcGFj
ZUhlaWdodEFuZERlcHRoKGhlaWdodCwgZGVwdGgpOwotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+
KGhlaWdodCk7CisgICAgcmV0dXJuIGhlaWdodDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCmluZGV4IGIyNTk3MjYx
NDkyYzcxNGNmM2EyMGNmZGQzYjdiNzE2OTU5YjAxYjcuLjcyNWQ0ZjIwYTMyNWFiY2ExZmRjODRj
MDczNTViMTMyZDU2NTZiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzQ2hpbGRBbGxvd2VkKGNvbnN0IFJlbmRlck9iamVjdCYsIGNvbnN0IFJlbmRlclN0
eWxlJikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2b2lkIGNvbXB1dGVQcmVm
ZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJl
bGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5h
bDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7Cisg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsK
IAogICAgIExheW91dFVuaXQgc3BhY2VXaWR0aCgpIGNvbnN0OwogICAgIHZvaWQgZ2V0U3BhY2VI
ZWlnaHRBbmREZXB0aChMYXlvdXRVbml0JiBoZWlnaHQsIExheW91dFVuaXQmIGRlcHRoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MVG9rZW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5jcHAKaW5kZXggN2VmYWU0ZDBmYjliNzc1ZTY5NzhmNTAyMjg5NjZmNzU3OWEzMzgx
Ni4uZDk5ZjUzZTZkYzA0MmM1YTFlM2E1ZTRkODU2MmUwMWI2MTFkZmVkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAK
QEAgLTU1NCwxMiArNTU0LDEyIEBAIHZvaWQgUmVuZGVyTWF0aE1MVG9rZW46OnVwZGF0ZUZyb21F
bGVtZW50KCkKICAgICBzZXRNYXRoVmFyaWFudEdseXBoRGlydHkoKTsKIH0KIAotT3B0aW9uYWw8
aW50PiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MVG9rZW46OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKIHsKICAgICBpZiAobV9tYXRoVmFyaWFudENvZGVQb2ludCkgewogICAgICAgICBhdXRvIG1h
dGhWYXJpYW50R2x5cGggPSBzdHlsZSgpLmZvbnRDYXNjYWRlKCkuZ2x5cGhEYXRhRm9yQ2hhcmFj
dGVyKG1fbWF0aFZhcmlhbnRDb2RlUG9pbnQudmFsdWUoKSwgbV9tYXRoVmFyaWFudElzTWlycm9y
ZWQpOwogICAgICAgICBpZiAobWF0aFZhcmlhbnRHbHlwaC5mb250KQotICAgICAgICAgICAgcmV0
dXJuIE9wdGlvbmFsPGludD4oc3RhdGljX2Nhc3Q8aW50Pihscm91bmRmKC1tYXRoVmFyaWFudEds
eXBoLmZvbnQtPmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5cGguZ2x5cGgpLnkoKSkpKTsK
KyAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgc3RhdGljX2Nhc3Q8aW50Pihscm91bmRm
KC1tYXRoVmFyaWFudEdseXBoLmZvbnQtPmJvdW5kc0ZvckdseXBoKG1hdGhWYXJpYW50R2x5cGgu
Z2x5cGgpLnkoKSkpIH07CiAgICAgfQogICAgIHJldHVybiBSZW5kZXJNYXRoTUxCbG9jazo6Zmly
c3RMaW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVG9rZW4uaAppbmRleCBjMjZmMTFhZjYzOWIzZTkyZWM5N2UwN2M0
MGFmZDRmNTgwMzllYmVkLi5jZTUzZDU1NDMzODdjMjY3ZGQzNmU4MjUzYTAwZmZhNzhhZWEyYjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxUb2tlbi5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lk
IHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBwYWludENoaWxkcmVuKFBhaW50SW5mbyYgZm9yU2VsZiwgY29uc3QgTGF5b3V0UG9pbnQmLCBQ
YWludEluZm8mIGZvckNoaWxkLCBib29sIHVzZVByaW50UmVjdCkgb3ZlcnJpZGU7Ci0gICAgT3B0
aW9uYWw8aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlv
bmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
dm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxv
Z2ljYWxIZWlnaHQgPSAwX2x1KSBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRM
b2dpY2FsV2lkdGhzKCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>424993</attachid>
            <date>2021-04-02 00:30:27 -0700</date>
            <delta_ts>2021-04-02 02:07:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133932-20210402093026.patch</filename>
            <type>text/plain</type>
            <size>73454</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAxODI0MWYzOTNjYjIx
NDdhNmVhZDZiZTEyMGFhM2UwOGU0N2ZjNy4uNGIyOGQ1OWE1NDk3NDQwZDRhZWM2MjhkMjk5ODJi
M2IyOTc1YTY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMyBAQAorMjAyMS0wNC0wMiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIFN1YnBpeGVsIGxheW91dDogU3dp
dGNoIGlubGluZXMnIGJhc2VsaW5lIHBvc2l0aW9uaW5nIGZyb20gaW50IHRvIExheW91dFVuaXQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM5MzIK
KworICAgICAgICBSZXZpZXdlZCBieSBaYWxhbiBCdWp0YXMuCisKKyAgICAgICAgVGhpcyBjaGFu
Z2UgY29udmVydHMgdGhlIGludCByZXR1cm5zIHR5cGUgdG8gTGF5b3V0VW5pdC4KKyAgICAgICAg
VG8gbWF0Y2ggdGhlIG9sZCBiZWhhdmlvciwgdGhlIGltcGxpY2l0IHRvSW50KCkgY2FsbHMKKyAg
ICAgICAgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IGV4cGxpY2l0IHRvSW50KCkgY2FsbHMuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyaWRCYXNlbGluZUFsaWdubWVudDo6YXNjZW50Rm9yQ2hpbGQgY29uc3QpOgorICAg
ICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5l
Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5l
Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lVGV4dEJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QXR0YWNobWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJBdHRhY2htZW50OjpiYXNl
bGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVu
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmlubGluZUJsb2NrQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
a0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVC
YXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpmaXJzdExpbmVC
YXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmlubGluZUJsb2Nr
QmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQnV0dG9uOjpiYXNlbGluZVBvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9y
ZGVyQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpiYXNlbGluZVBv
c2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpmaXJz
dExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbGV4aWJsZUJv
eDo6aW5saW5lQmxvY2tCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckZsZXhpYmxlQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6c3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3JkZXJCb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyR3JpZDo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJHcmlkOjppbmxpbmVCbG9ja0Jhc2VsaW5lIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyR3JpZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJ
bmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpiYXNlbGluZVBvc2l0
aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0Qm94OjpiYXNlbGluZVBvc2l0aW9uIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
c3RNYXJrZXI6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMaXN0TWFya2VyLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0Lmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXI6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJTbGlkZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lIGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6OmJhc2Vs
aW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OmJhc2VsaW5lUG9zaXRpb24gY29uc3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck1hdGhNTEJsb2NrOjphc2NlbnRGb3JDaGlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJN
YXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTE9wZXJhdG9yOjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmg6CisgICAgICAgICogcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
Um93OjpmaXJzdExpbmVCYXNlbGluZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6
Zmlyc3RMaW5lQmFzZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MU2NyaXB0cy5oOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MU3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0
TGluZUJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNwYWNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tl
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFz
ZWxpbmUgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVG9r
ZW4uaDoKKwogMjAyMS0wNC0wMSAgQ2FtZXJvbiBNY0Nvcm1hY2sgIDxoZXljYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgI2lmIGluIFJ1bnRpbWVBcHBsaWNhdGlvbkNo
ZWNrcy5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0dyaWRCYXNlbGlu
ZUFsaWdubWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxp
Z25tZW50LmNwcAppbmRleCAxNTQwM2E4NWVkZWZlZWE0YWNjYmIzYzUzNGQ1NWRiMDBlYTlmMjhj
Li5hYjJjMDYzODVmYTM1NDkzYmUwYjA4MDA1YTQ2MmQ0M2RmMjA4OGEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvR3JpZEJhc2VsaW5lQWxpZ25tZW50LmNwcApAQCAtNjUs
NyArNjUsNyBAQCBMYXlvdXRVbml0IEdyaWRCYXNlbGluZUFsaWdubWVudDo6bG9naWNhbEFzY2Vu
dEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQsCiBMYXlvdXRVbml0IEdyaWRCYXNlbGlu
ZUFsaWdubWVudDo6YXNjZW50Rm9yQ2hpbGQoY29uc3QgUmVuZGVyQm94JiBjaGlsZCwgR3JpZEF4
aXMgYmFzZWxpbmVBeGlzKSBjb25zdAogewogICAgIExheW91dFVuaXQgbWFyZ2luID0gaXNEZXNj
ZW50QmFzZWxpbmVGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IG1hcmdpblVuZGVyRm9y
Q2hpbGQoY2hpbGQsIGJhc2VsaW5lQXhpcykgOiBtYXJnaW5PdmVyRm9yQ2hpbGQoY2hpbGQsIGJh
c2VsaW5lQXhpcyk7Ci0gICAgTGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFsbGVsVG9CYXNlbGlu
ZUF4aXNGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZpcnN0TGluZUJhc2Vs
aW5lKCkudmFsdWVPcigtMSkgOiAtMSk7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZShpc1BhcmFs
bGVsVG9CYXNlbGluZUF4aXNGb3JDaGlsZChjaGlsZCwgYmFzZWxpbmVBeGlzKSA/IGNoaWxkLmZp
cnN0TGluZUJhc2VsaW5lKCkudmFsdWVPcihMYXlvdXRVbml0KC0xKSkgOiBMYXlvdXRVbml0KC0x
KSk7CiAgICAgLy8gV2UgdGFrZSBib3JkZXItYm94J3MgdW5kZXIgZWRnZSBpZiBubyB2YWxpZCBi
YXNlbGluZS4KICAgICBpZiAoYmFzZWxpbmUgPT0gLTEpIHsKICAgICAgICAgaWYgKGlzSG9yaXpv
bnRhbEJhc2VsaW5lQXhpcyhiYXNlbGluZUF4aXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lQm94LmNwcAppbmRleCAxYTQ1NzliMjkyNDQwZWRkNGY2ZWRjM2Q2MzYwMDQ3MmFkZmQ4MTQy
Li45MzI0MWUxNmRjODc1ZWU0MjQ1M2ZlZDgwMTMwNDg1MzY0MmU0ZTQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIGZsb2F0IElubGlu
ZUJveDo6bG9naWNhbEhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW50
IElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlKSBj
b25zdAorTGF5b3V0VW5pdCBJbmxpbmVCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
IGJhc2VsaW5lVHlwZSkgY29uc3QKIHsKICAgICByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+YmFz
ZWxpbmVQb3NpdGlvbihiYXNlbGluZVR5cGUsIG1fYml0ZmllbGRzLmZpcnN0TGluZSgpLCBpc0hv
cml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9uQ29u
dGFpbmluZ0xpbmUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCmluZGV4IDgx
NjdlNGRkNGFhZmQ0NzRhYzllMmNkN2YyYWZlZmQ4YTExM2Q2MTYuLjRlNTg1OWNhYTZiYWI1OWZh
NzFiMjA0NjQyODZhMDg0MTU4NjU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94
LmgKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGxvZ2ljYWxGcmFt
ZVJlY3QoKSBjb25zdCB7IHJldHVybiBpc0hvcml6b250YWwoKSA/IEZsb2F0UmVjdChtX3RvcExl
ZnQueCgpLCBtX3RvcExlZnQueSgpLCBtX2xvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCgpKSA6
IEZsb2F0UmVjdChtX3RvcExlZnQueSgpLCBtX3RvcExlZnQueCgpLCBtX2xvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCgpKTsgfQogICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBGbG9hdFJlY3QodG9wTGVmdCgpLCBzaXplKCkpOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUp
IGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBv
c2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KCkgY29uc3Q7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2aXJ0dWFsIGludCBjYXJldE1pbk9mZnNldCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDI0ZGU1MTUwMzY0MDAxODA1Y2Ni
YzJkMGNlNzQ5MjQzNjg5ZGFjOTIuLjI2ZTZjODQyYTUxN2VkNDIyYzgyNDIxN2Y4OWEyMWQyY2Y3
NTAwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnNldExvZ2ljYWxPdmVyZmxvd1Jl
Y3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKICAgICBnVGV4dEJveGVzV2l0aE92ZXJmbG93LT5h
ZGQodGhpcywgcmVjdCk7CiB9CiAKLWludCBJbmxpbmVUZXh0Qm94OjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNvbnN0CitMYXlvdXRVbml0IElubGluZVRleHRC
b3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKIHsK
ICAgICBpZiAoIXBhcmVudCgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5oCmluZGV4IDBmNzE3YmQ3NmIwMTA5ZDFkY2U0MzBjODE0MTcw
MjM4YmFhYjkwMDcuLjY1NGQ4NzdhZDhmMDNlN2M1ZTVkODU4NzVhMjBhMzI5NGMwYWQ0NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaApAQCAtOTIsNyArOTIsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZUJ5U3RhcnQoY29uc3Qg
SW5saW5lVGV4dEJveCogZmlyc3QsIGNvbnN0IElubGluZVRleHRCb3gqIHNlY29uZCkgeyByZXR1
cm4gZmlyc3QtPnN0YXJ0KCkgPCBzZWNvbmQtPnN0YXJ0KCk7IH0KIAotICAgIGludCBiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSkgY29uc3QgZmluYWw7CiAgICAgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KCkgY29uc3QgZmluYWw7CiAKICAgICBPcHRpb25hbDxib29sPiBlbXBoYXNpc01h
cmtFeGlzdHNBbmRJc0Fib3ZlKGNvbnN0IFJlbmRlclN0eWxlJikgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5jcHAKaW5kZXggYzkyZmVhODM2Yjdl
N2M4NDdlNTIzYTRhNTkxMmVjOTg1Mzk5NWU0NC4uZjk2NWI5ODk5YmUyZTg1YTdjN2U0NjI2YWEw
ZGE0MjEzZGM5ZWNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBdHRh
Y2htZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnQ6OmludmFs
aWRhdGUoKQogICAgIHJlcGFpbnQoKTsKIH0KIAotaW50IFJlbmRlckF0dGFjaG1lbnQ6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQXR0YWNobWVudDo6YmFzZWxpbmVQ
b3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRp
b25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiB0aGVtZSgpLmF0dGFjaG1lbnRCYXNlbGluZSgq
dGhpcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXR0
YWNobWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckF0dGFjaG1lbnQuaApp
bmRleCBkMzI5MjJhNjBiMjUxNDhmM2VhMWYyZmMzMDExY2YzNGYwYTFiZjIwLi41MGRkOTI0YjNl
YWU3MTJmYmIwZGEzZjdjMWMwYjMyZWExNjdiYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQXR0YWNobWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJBdHRhY2htZW50LmgKQEAgLTU0LDcgKzU0LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CiAKLSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25z
dCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5l
LCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBMYXlvdXRVbml0IG1fbWluaW11bUludHJpbnNpY1dpZHRoOwogICAgIGJvb2wg
bV9zaG91bGREcmF3Qm9yZGVyIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5jcHAKaW5kZXggODAxNDA4NTI1OGZhN2EyYzg0MDAyNjZhNDcyZDM2OWIwNTVkMDFk
Ni4uZGUyZWQ0NTEzMDI2N2NkMTk0OTExY2JlMzYwYzBmMzk4ZTlkYmMzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNDgxLDcgKzI0ODEsNyBAQCBMYXlv
dXRVbml0IFJlbmRlckJsb2NrOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0
aW9uTW9kZSBkaXJlY3Rpb24sCiAgICAgcmV0dXJuIHN0eWxlKCkuY29tcHV0ZWRMaW5lSGVpZ2h0
KCk7CiB9CiAKLWludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9u
LCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJl
bmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJv
b2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1v
ZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBJbmxpbmUgYmxvY2tzIGFyZSBy
ZXBsYWNlZCBlbGVtZW50cy4gT3RoZXJ3aXNlLCBqdXN0IHBhc3Mgb2ZmIHRvCiAgICAgLy8gdGhl
IGJhc2UgY2xhc3MuICBJZiB3ZSdyZSBiZWluZyBxdWVyaWVkIGFzIHRob3VnaCB3ZSdyZSB0aGUg
cm9vdCBsaW5lCkBAIC0yNTE2LDcgKzI1MTYsNyBAQCBpbnQgUmVuZGVyQmxvY2s6OmJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbgog
ICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCkg
fHwgc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbE9mZnNldCgpLngoKTsKICAgICAgICAgfTsKIAotICAg
ICAgICBPcHRpb25hbDxpbnQ+IGJhc2VsaW5lUG9zID0gaWdub3JlQmFzZWxpbmUoKSA/IE9wdGlv
bmFsPGludD4oKSA6IGlubGluZUJsb2NrQmFzZWxpbmUoZGlyZWN0aW9uKTsKKyAgICAgICAgYXV0
byBiYXNlbGluZVBvcyA9IGlnbm9yZUJhc2VsaW5lKCkgPyBPcHRpb25hbDxMYXlvdXRVbml0Pigp
IDogaW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOwogICAgICAgICAKICAgICAgICAgaWYg
KGlzRGVwcmVjYXRlZEZsZXhpYmxlQm94KCkpIHsKICAgICAgICAgICAgIC8vIEhpc3RvcmljYWxs
eSwgd2UgZGlkIHRoaXMgY2hlY2sgZm9yIGFsbCBiYXNlbGluZXMuIEJ1dCB3ZSBjYW4ndApAQCAt
MjUyNiw3ICsyNTI2LDcgQEAgaW50IFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW4KICAgICAgICAgICAgIC8v
IEZvciBzaW1wbGljaXR5LCB3ZSB1c2UgdGhpcyBmb3IgYWxsIHVzZXMgb2YgZGVwcmVjYXRlZCBm
bGV4Ym94LgogICAgICAgICAgICAgTGF5b3V0VW5pdCBib3R0b21PZkNvbnRlbnQgPSBkaXJlY3Rp
b24gPT0gSG9yaXpvbnRhbExpbmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSArIGNvbnRl
bnRIZWlnaHQoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nUmlnaHQoKSArIGNvbnRlbnRXaWR0
aCgpOwogICAgICAgICAgICAgaWYgKGJhc2VsaW5lUG9zICYmIGJhc2VsaW5lUG9zLnZhbHVlKCkg
PiBib3R0b21PZkNvbnRlbnQpCi0gICAgICAgICAgICAgICAgYmFzZWxpbmVQb3MgPSBPcHRpb25h
bDxpbnQ+KCk7CisgICAgICAgICAgICAgICAgYmFzZWxpbmVQb3MgPSBPcHRpb25hbDxMYXlvdXRV
bml0PigpOwogICAgICAgICB9CiAgICAgICAgIGlmIChiYXNlbGluZVBvcykKICAgICAgICAgICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJnaW5Ub3AoKSArIGJhc2Vs
aW5lUG9zLnZhbHVlKCkgOiBtYXJnaW5SaWdodCgpICsgYmFzZWxpbmVQb3MudmFsdWUoKTsKQEAg
LTI1MzYsNyArMjUzNiw3IEBAIGludCBSZW5kZXJCbG9jazo6YmFzZWxpbmVQb3NpdGlvbihGb250
QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluCiAKICAgICBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUgPSBmaXJzdExpbmUgPyBmaXJzdExpbmVTdHlsZSgpIDogdGhpcy0+
c3R5bGUoKTsKICAgICBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250
TWV0cmljcygpOwotICAgIHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSAr
IChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZv
bnRNZXRyaWNzLmhlaWdodCgpKSAvIDI7CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBmb250TWV0
cmljcy5hc2NlbnQoYmFzZWxpbmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0
aW9uLCBsaW5lUG9zaXRpb25Nb2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIgfS50b0lu
dCgpOwogfQogCiBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjptaW5MaW5lSGVpZ2h0Rm9yUmVwbGFj
ZWRSZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlvdXRVbml0IHJlcGxhY2VkSGVpZ2h0KSBj
b25zdApAQCAtMjU1MSw0MyArMjU1MSw0MyBAQCBMYXlvdXRVbml0IFJlbmRlckJsb2NrOjptaW5M
aW5lSGVpZ2h0Rm9yUmVwbGFjZWRSZW5kZXJlcihib29sIGlzRmlyc3RMaW5lLCBMYXlvdQogICAg
IHJldHVybiBzdGQ6Om1heDxMYXlvdXRVbml0PihyZXBsYWNlZEhlaWdodCwgbGluZUhlaWdodChp
c0ZpcnN0TGluZSwgaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDog
VmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpKTsKIH0KIAotT3B0aW9u
YWw8aW50PiBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8
TGF5b3V0VW5pdD4gUmVuZGVyQmxvY2s6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pigp
OwogCiAgICAgZm9yIChSZW5kZXJCb3gqIGN1cnIgPSBmaXJzdENoaWxkQm94KCk7IGN1cnI7IGN1
cnIgPSBjdXJyLT5uZXh0U2libGluZ0JveCgpKSB7CiAgICAgICAgIGlmICghY3Vyci0+aXNGbG9h
dGluZ09yT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uYWw8
aW50PiByZXN1bHQgPSBjdXJyLT5maXJzdExpbmVCYXNlbGluZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBPcHRpb25hbDxpbnQ+KGN1cnItPmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52YWx1ZSgp
KTsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29yZGluYXRlIHNwYWNlLgorICAgICAgICAgICAgaWYg
KGF1dG8gcmVzdWx0ID0gY3Vyci0+Zmlyc3RMaW5lQmFzZWxpbmUoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTGF5b3V0VW5pdCB7IGN1cnItPmxvZ2ljYWxUb3AoKSArIHJlc3VsdC52YWx1ZSgp
IH07IC8vIFRyYW5zbGF0ZSB0byBvdXIgY29vcmRpbmF0ZSBzcGFjZS4KICAgICAgICAgfQogICAg
IH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgcmV0dXJuIE9wdGlvbmFsPExh
eW91dFVuaXQ+KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2s6OmlubGluZUJsb2Nr
QmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK09wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlIGxpbmVEaXJlY3Rpb24pIGNvbnN0CiB7CiAgICAgaWYgKGlzV3JpdGluZ01vZGVSb290
KCkgJiYgIWlzUnVieVJ1bigpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIGJvb2wgaGF2ZU5vcm1h
bEZsb3dDaGlsZCA9IGZhbHNlOwogICAgIGZvciAoYXV0byogYm94ID0gbGFzdENoaWxkQm94KCk7
IGJveDsgYm94ID0gYm94LT5wcmV2aW91c1NpYmxpbmdCb3goKSkgewogICAgICAgICBpZiAoYm94
LT5pc0Zsb2F0aW5nT3JPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgaGF2ZU5vcm1hbEZsb3dDaGlsZCA9IHRydWU7Ci0gICAgICAgIGlmIChPcHRp
b25hbDxpbnQ+IHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGlyZWN0aW9u
KSkKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KGJveC0+bG9naWNhbFRvcCgpICsg
cmVzdWx0LnZhbHVlKCkpOyAvLyBUcmFuc2xhdGUgdG8gb3VyIGNvb3JkaW5hdGUgc3BhY2UuCisg
ICAgICAgIGlmIChhdXRvIHJlc3VsdCA9IGJveC0+aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGly
ZWN0aW9uKSkKKyAgICAgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGJveC0+bG9naWNhbFRv
cCgpICsgcmVzdWx0LnZhbHVlKCkpLnRvSW50KCkgfTsgLy8gVHJhbnNsYXRlIHRvIG91ciBjb29y
ZGluYXRlIHNwYWNlLgogICAgIH0KIAogICAgIGlmICghaGF2ZU5vcm1hbEZsb3dDaGlsZCAmJiBo
YXNMaW5lSWZFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gZmlyc3RMaW5l
U3R5bGUoKS5mb250TWV0cmljcygpOwotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pihmb250
TWV0cmljcy5hc2NlbnQoKQorICAgICAgICByZXR1cm4gTGF5b3V0VW5pdCB7IExheW91dFVuaXQo
Zm9udE1ldHJpY3MuYXNjZW50KCkKICAgICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGlu
ZURpcmVjdGlvbiwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhl
aWdodCgpKSAvIDIKLSAgICAgICAgICAgICsgKGxpbmVEaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExp
bmUgPyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSA6IGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5n
UmlnaHQoKSkpOworICAgICAgICAgICAgKyAobGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGlu
ZSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdS
aWdodCgpKSkudG9JbnQoKSB9OwogICAgIH0KIAotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7
CisgICAgcmV0dXJuIE9wdGlvbmFsPExheW91dFVuaXQ+KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBpc1JlbmRlckJsb2NrRmxvd09yUmVuZGVyQnV0dG9uKFJlbmRlckVsZW1lbnQmIHJlbmRl
ckVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IGY5YjJk
OThkZDlhOWU1OWRlMWNhZTkzNjIxMjc2YzY4ZDQxMzNlZDcuLmVmYzAxNTRkYjg2ODc5ZGYzMzcw
YWY5NzNmNjI5ZTA0Zjg1YjY4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCkBAIC02NSw3ICs2NSw3IEBAIHByb3RlY3RlZDoKIHB1YmxpYzoKICAgICAvLyBUaGVzZSB0
d28gZnVuY3Rpb25zIGFyZSBvdmVycmlkZGVuIGZvciBpbmxpbmUtYmxvY2suCiAgICAgTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBv
c2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3QgZmluYWw7Ci0gICAg
aW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFz
ZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9k
ZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlv
dXRVbml0IG1pbkxpbmVIZWlnaHRGb3JSZXBsYWNlZFJlbmRlcmVyKGJvb2wgaXNGaXJzdExpbmUs
IExheW91dFVuaXQgcmVwbGFjZWRIZWlnaHQpIGNvbnN0OwogCkBAIC0zNTMsOCArMzUzLDggQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0
VW5pdCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVy
cmlkZTsKICAgICAKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qg
b3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJl
Y3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+
IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgLy8gRGVsYXkgdXBkYXRpbmcgc2Nyb2xsYmFycyB1bnRpbCBlbmRBbmRDb21taXRVcGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXRUcmFuc2FjdGlvbigpIGlzIGNhbGxlZC4gVGhlc2UgZnVu
Y3Rpb25zIGFyZSB1c2VkCiAgICAgLy8gd2hlbiBhIGZsZXhib3ggaXMgbGF5aW5nIG91dCBpdHMg
ZGVzY2VuZGFudHMuIElmIG11bHRpcGxlIGNhbGxzIGFyZSBtYWRlIHRvIGJlZ2luVXBkYXRlU2Ny
b2xsSW5mb0FmdGVyTGF5b3V0VHJhbnNhY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0ZDQyNDM0M2FhNjNiYzRlNTZkN2VjYzk5MmUw
Y2ExN2Q4YWJmYzA0Li5hNDRhYTJmMjcxNDA2NGFiNzljNzU0ZDMxNDA4YTRjOTE4OTNmNTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApAQCAtMzEw
Niw3ICszMTA2LDcgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6Om1hcmtMaW5lc0RpcnR5SW5CbG9j
a1JhbmdlKExheW91dFVuaXQgbG9naWNhbFRvcCwgTGF5b3V0VW4KICAgICB9CiB9CiAKLU9wdGlv
bmFsPGludD4gUmVuZGVyQmxvY2tGbG93OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CitPcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29u
c3QKIHsKICAgICBpZiAoaXNXcml0aW5nTW9kZVJvb3QoKSAmJiAhaXNSdWJ5UnVuKCkgJiYgIWlz
R3JpZEl0ZW0oKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTMxMTksMTYgKzMx
MTksMTYgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogICAgIGlm
IChtb2Rlcm5MaW5lTGF5b3V0KCkpCi0gICAgICAgIHJldHVybiBmbG9vclRvSW50KG1vZGVybkxp
bmVMYXlvdXQoKS0+Zmlyc3RMaW5lQmFzZWxpbmUoKSk7CisgICAgICAgIHJldHVybiBMYXlvdXRV
bml0IHsgZmxvb3JUb0ludChtb2Rlcm5MaW5lTGF5b3V0KCktPmZpcnN0TGluZUJhc2VsaW5lKCkp
IH07CiAjZW5kaWYKIAogICAgIEFTU0VSVChmaXJzdFJvb3RCb3goKSk7CiAgICAgaWYgKHN0eWxl
KCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4gZmlyc3RSb290
Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCkuZm9udE1ldHJpY3MoKS5kZXNj
ZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSk7Ci0gICAgcmV0dXJuIGZpcnN0Um9v
dEJveCgpLT5sb2dpY2FsVG9wKCkgKyBmaXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNj
ZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSk7CisgICAgICAgIHJldHVybiBMYXlv
dXRVbml0IHsgZmlyc3RSb290Qm94KCktPmxvZ2ljYWxUb3AoKSArIGZpcnN0TGluZVN0eWxlKCku
Zm9udE1ldHJpY3MoKS5kZXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNlbGluZVR5cGUoKSkgfTsK
KyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IGZpcnN0Um9vdEJveCgpLT5sb2dpY2FsVG9wKCkgKyBm
aXJzdExpbmVTdHlsZSgpLmZvbnRNZXRyaWNzKCkuYXNjZW50KGZpcnN0Um9vdEJveCgpLT5iYXNl
bGluZVR5cGUoKSkgfTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGlu
ZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbikgY29uc3QKK09w
dGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckJsb2NrRmxvdzo6aW5saW5lQmxvY2tCYXNlbGluZShM
aW5lRGlyZWN0aW9uTW9kZSBsaW5lRGlyZWN0aW9uKSBjb25zdAogewogICAgIGlmIChpc1dyaXRp
bmdNb2RlUm9vdCgpICYmICFpc1J1YnlSdW4oKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKQEAgLTMxNDQsNyArMzE0NCw3IEBAIE9wdGlvbmFsPGludD4gUmVuZGVyQmxvY2tGbG93Ojpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVEaXJlY3RpCiAgICAgZmxv
YXQgYm94SGVpZ2h0ID0gbGluZURpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGhlaWdodCgp
ICsgbV9tYXJnaW5Cb3guYm90dG9tKCkgOiB3aWR0aCgpICsgbV9tYXJnaW5Cb3gubGVmdCgpOwog
ICAgIGZsb2F0IGxhc3RCYXNlbGluZSA9IDA7CiAgICAgaWYgKCFjaGlsZHJlbklubGluZSgpKSB7
Ci0gICAgICAgIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZSA9IFJlbmRlckJsb2Nr
OjppbmxpbmVCbG9ja0Jhc2VsaW5lKGxpbmVEaXJlY3Rpb24pOworICAgICAgICBhdXRvIGlubGlu
ZUJsb2NrQmFzZWxpbmUgPSBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShsaW5lRGly
ZWN0aW9uKTsKICAgICAgICAgaWYgKCFpbmxpbmVCbG9ja0Jhc2VsaW5lKQogICAgICAgICAgICAg
cmV0dXJuIGlubGluZUJsb2NrQmFzZWxpbmU7CiAgICAgICAgIGxhc3RCYXNlbGluZSA9IGlubGlu
ZUJsb2NrQmFzZWxpbmUudmFsdWUoKTsKQEAgLTMxNTMsOSArMzE1Myw5IEBAIE9wdGlvbmFsPGlu
dD4gUmVuZGVyQmxvY2tGbG93OjppbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2Rl
IGxpbmVEaXJlY3RpCiAgICAgICAgICAgICBpZiAoIWhhc0xpbmVJZkVtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIGZv
bnRNZXRyaWNzID0gZmlyc3RMaW5lU3R5bGUoKS5mb250TWV0cmljcygpOwotICAgICAgICAgICAg
cmV0dXJuIE9wdGlvbmFsPGludD4oZm9udE1ldHJpY3MuYXNjZW50KCkKKyAgICAgICAgICAgIHJl
dHVybiBMYXlvdXRVbml0IHsgTGF5b3V0VW5pdChmb250TWV0cmljcy5hc2NlbnQoKQogICAgICAg
ICAgICAgICAgICsgKGxpbmVIZWlnaHQodHJ1ZSwgbGluZURpcmVjdGlvbiwgUG9zaXRpb25PZklu
dGVyaW9yTGluZUJveGVzKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIKLSAgICAgICAgICAg
ICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKTsKKyAgICAgICAg
ICAgICAgICArIChsaW5lRGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm9yZGVyVG9wKCkg
KyBwYWRkaW5nVG9wKCkgOiBib3JkZXJSaWdodCgpICsgcGFkZGluZ1JpZ2h0KCkpKS50b0ludCgp
IH07CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY29tcGxleExpbmVMYXlvdXQoKSkgewpAQCAt
MzE3Myw3ICszMTczLDcgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJCbG9ja0Zsb3c6OmlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGkKICAgICAvLyBBY2NvcmRp
bmcgdG8gdGhlIENTUyBzcGVjIGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3Zpc3VkZXQuaHRt
bCwgd2Ugc2hvdWxkbid0IGJlIHBlcmZvcm1pbmcgdGhpcyBtaW4sIGJ1dCBzaG91bGQKICAgICAv
LyBpbnN0ZWFkIGJlIHJldHVybmluZyBib3hIZWlnaHQgZGlyZWN0bHkuIEhvd2V2ZXIsIHdlIGZl
ZWwgdGhhdCBhIG1pbiBoZXJlIGlzIGJldHRlciBiZWhhdmlvciAoYW5kIGlzIGNvbnNpc3RlbnQK
ICAgICAvLyBlbm91Z2ggd2l0aCB0aGUgc3BlYyB0byBub3QgY2F1c2UgdG9ucyBvZiBicmVha2Fn
ZXMpLgotICAgIHJldHVybiBzdHlsZSgpLm92ZXJmbG93WSgpID09IE92ZXJmbG93OjpWaXNpYmxl
ID8gbGFzdEJhc2VsaW5lIDogc3RkOjptaW4oYm94SGVpZ2h0LCBsYXN0QmFzZWxpbmUpOworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgc3R5bGUoKS5vdmVyZmxvd1koKSA9PSBPdmVyZmxvdzo6Vmlz
aWJsZSA/IGxhc3RCYXNlbGluZSA6IHN0ZDo6bWluKGJveEhlaWdodCwgbGFzdEJhc2VsaW5lKSB9
OwogfQogCiB2b2lkIFJlbmRlckJsb2NrRmxvdzo6c2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0
U3RhdGUgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgK
aW5kZXggNTdmMjY5YzliMjg4YzAxNTIwNDk4NWZkZWI2ZjVjYTc1YzlkMzE5Yi4uZjZhNzY0OWU5
MjYyYTgxZGRjNDNiY2IwZjBkZTQ1OThhZWIwMDE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuaApAQCAtNDUwLDggKzQ1MCw4IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZvaWQgY3JlYXRlRmxvYXRpbmdPYmplY3RzKCk7CiAKLSAgICBPcHRpb25hbDxpbnQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxp
bmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAgICBP
cHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlv
bk1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc011bHRpQ29sdW1uQmxvY2tGbG93
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbXVsdGlDb2x1bW5GbG93KCk7IH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZjNiNmMxOTI1OWE0MDI4Nzcx
MmMwMjk5ZWExNGEzMGM3NDYyMTk2MS4uOGQ3YmYzZmNmN2RlNDM4ZmRmMTY4NDU5YjczNzNkMGRl
NGViMzkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ4NjYs
NyArNDg2Niw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGJvb2wgLypmaXJz
dExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uCiAgICAgcmV0dXJuIDA7CiB9CiAK
LWludCBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlw
ZSwgYm9vbCAvKmZpcnN0TGluZSovLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQ
b3NpdGlvbk1vZGUgLypsaW5lUG9zaXRpb25Nb2RlKi8pIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ckJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIC8q
Zmlyc3RMaW5lKi8sIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9k
ZSAvKmxpbmVQb3NpdGlvbk1vZGUqLykgY29uc3QKIHsKICAgICBpZiAoaXNSZXBsYWNlZCgpKSB7
CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmRUb0ludChkaXJlY3Rpb24gPT0gSG9yaXpvbnRh
bExpbmUgPyBtX21hcmdpbkJveC50b3AoKSArIGhlaWdodCgpICsgbV9tYXJnaW5Cb3guYm90dG9t
KCkgOiBtX21hcmdpbkJveC5yaWdodCgpICsgd2lkdGgoKSArIG1fbWFyZ2luQm94LmxlZnQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggY2EzZTZhYmY5NTg2NTgyODdk
YzJkNmFiZTM5NDI5ZTdlZWU1Yjg5NS4uMjY0OGNkOThmOGZmODUxNGE5ODJmNmI1NzkzYzA3MDNm
YmRhN2FiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTQxLDggKzU0
MSw4IEBAIG92ZXJyaWRlOwogICAgIAogICAgIFJlbmRlckxheWVyKiBlbmNsb3NpbmdGbG9hdFBh
aW50aW5nTGF5ZXIoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIE9wdGlvbmFsPGludD4gZmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBPcHRpb25hbDxpbnQ+KCk7IH0KLSAgICB2
aXJ0dWFsIE9wdGlvbmFsPGludD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWw8aW50PigpOyB9IC8vIFJldHVybnMgZW1wdHkgaWYg
d2Ugc2hvdWxkIHNraXAgdGhpcyBib3ggd2hlbiBjb21wdXRpbmcgdGhlIGJhc2VsaW5lIG9mIGFu
IGlubGluZS1ibG9jay4KKyAgICB2aXJ0dWFsIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsgfQorICAg
IHZpcnR1YWwgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QgeyByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsgfSAvLyBS
ZXR1cm5zIGVtcHR5IGlmIHdlIHNob3VsZCBza2lwIHRoaXMgYm94IHdoZW4gY29tcHV0aW5nIHRo
ZSBiYXNlbGluZSBvZiBhbiBpbmxpbmUtYmxvY2suCiAKICAgICBib29sIHNocmlua1RvQXZvaWRG
bG9hdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgYXZvaWRzRmxvYXRzKCkgY29uc3Q7CkBA
IC01NTUsNyArNTU1LDcgQEAgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0ZsZXhJdGVtSW5jbHVkaW5n
RGVwcmVjYXRlZCgpIGNvbnN0IHsgcmV0dXJuICFpc0lubGluZSgpICYmICFpc0Zsb2F0aW5nT3JP
dXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCktPmlzRmxleGlibGVC
b3hJbmNsdWRpbmdEZXByZWNhdGVkKCk7IH0KICAgICAKICAgICBMYXlvdXRVbml0IGxpbmVIZWln
aHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0g
UG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgYmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9k
ZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgb2Zm
c2V0TGVmdCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgb2Zmc2V0VG9wKCkgY29u
c3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCmluZGV4IDU4YzQ4OWFlNGVkYmRlMDA2MWFkYWVhZjY5YzcwZmY5N2ExZjdjNTgu
LjA2NTdjNmNhNDE0MDk4MmNkNGU5YWU1YzVkOGI3MDgzMGYxZjVjMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yMTYsNyArMjE2
LDcgQEAgcHVibGljOgogCiAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIHRvIGRldGVy
bWluZSBsaW5lIGhlaWdodCBhbmQgYmFzZWxpbmUgcG9zaXRpb24uCiAgICAgdmlydHVhbCBMYXlv
dXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7Ci0gICAg
dmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5l
LCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWlu
aW5nTGluZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0
aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5l
UG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCA9IDA7CiAKICAg
ICB2b2lkIG1hcEFic29sdXRlVG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MsIFRyYW5z
Zm9ybVN0YXRlJikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCdXR0b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJ1dHRvbi5jcHAKaW5kZXggN2VkODE1Yzc2YTRlMTI5N2E2ZDE4NmEzMjIyZjA3NTI2ZDc0
NGIxNi4uMjEzNjEwMDc2YTU3YjE1MGFjYzI0YzExYTg5MTU1NmI2ZDBjNTI0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJ1dHRvbi5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBz
dGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQ29udGVudEJveChjb25zdCBSZW5kZXJC
b3gmIGJveCwgTGluZURpcmVjdGlvbgogICAgIHJldHVybiBkaXJlY3Rpb24gPT0gSG9yaXpvbnRh
bExpbmUgPyBib3guYm9yZGVyVG9wKCkgKyBib3gucGFkZGluZ1RvcCgpICsgYm94LmNvbnRlbnRI
ZWlnaHQoKSA6IGJveC5ib3JkZXJSaWdodCgpICsgYm94LnBhZGRpbmdSaWdodCgpICsgYm94LmNv
bnRlbnRXaWR0aCgpOwogfQogCi1pbnQgUmVuZGVyQnV0dG9uOjpiYXNlbGluZVBvc2l0aW9uKEZv
bnRCYXNlbGluZSwgYm9vbCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRp
b25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCdXR0b246OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3Np
dGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgLy8gV2UgY2Fubm90IHJlbHkgb24gUmVuZGVyRmxleGli
bGVCb3g6OmJhc2VsaW5lUG9zaXRpb24oKSBiZWNhdXNlIG9mIGZsZXhib3hlcyBoYXZlIHNvbWUg
c3BlY2lhbCBiZWhhdmlvcgogICAgIC8vIHJlZ2FyZGluZyBiYXNlbGluZXMgdGhhdCBzaG91bGRu
J3QgYXBwbHkgdG8gYnV0dG9ucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCdXR0b24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCdXR0b24u
aAppbmRleCBlOWM0YzBlOTkzOWFiODQ1MWY2NTBhOTlmZmE2NTUxMGNlZDY5NzQyLi5hNDkzOWM0
YTAwNzUwMmE1Nzg5NDlmZGM1Y2M2NTZjYzc5NWQ1Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQnV0dG9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJ1dHRvbi5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJC
bG9jayogaW5uZXJSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5uZXIuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldElubmVyUmVuZGVyZXIoUmVuZGVyQmxvY2smKTsKIAotICAgIGludCBiYXNlbGlu
ZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
LCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIHZvaWQg
ZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbGV4aWJsZUJveC5jcHAKaW5kZXggMmNjOTNkNmFkOTNhMGFkNTIyYzkwODUxODg3M2Iy
OTEyZDdmYzEyMS4uOTYxYjU0ZmI5ZTU2M2NlMDhmMTY4YmU2M2I5NTVmN2ZjNzdmNzcxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCkBAIC0x
NDQsMTIgKzE0NCwxMiBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlSW50cmluc2lj
TG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsV2lkdAogICAgIG1pbkxvZ2ljYWxX
aWR0aCArPSBzY3JvbGxiYXJXaWR0aDsKIH0KIAotc3RhdGljIGludCBzeW50aGVzaXplZEJhc2Vs
aW5lRnJvbUJvcmRlckJveChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1vZGUg
ZGlyZWN0aW9uKQorc3RhdGljIExheW91dFVuaXQgc3ludGhlc2l6ZWRCYXNlbGluZUZyb21Cb3Jk
ZXJCb3goY29uc3QgUmVuZGVyQm94JiBib3gsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbikK
IHsKLSAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXplKCku
aGVpZ2h0KCkgOiBib3guc2l6ZSgpLndpZHRoKCkpLnRvSW50KCk7CisgICAgcmV0dXJuIGRpcmVj
dGlvbiA9PSBIb3Jpem9udGFsTGluZSA/IGJveC5zaXplKCkuaGVpZ2h0KCkgOiBib3guc2l6ZSgp
LndpZHRoKCk7CiB9CiAKLWludCBSZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbihG
b250QmFzZWxpbmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0
aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmJhc2VsaW5lUG9z
aXRpb24oRm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExp
bmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgYXV0byBiYXNlbGluZSA9IGZpcnN0TGluZUJh
c2VsaW5lKCk7CiAgICAgaWYgKCFiYXNlbGluZSkKQEAgLTE1OCwxMCArMTU4LDEwIEBAIGludCBS
ZW5kZXJGbGV4aWJsZUJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wsIExp
bmVEaXJlY3Rpb25Nb2RlIGRpCiAgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyAoZGlyZWN0
aW9uID09IEhvcml6b250YWxMaW5lID8gbWFyZ2luVG9wKCkgOiBtYXJnaW5SaWdodCgpKS50b0lu
dCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNl
bGluZSgpIGNvbnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJGbGV4aWJsZUJveDo6Zmly
c3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRpbmdNb2RlUm9vdCgpIHx8
IG1fbnVtYmVyT2ZJbkZsb3dDaGlsZHJlbk9uRmlyc3RMaW5lIDw9IDApCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0Pigp
OwogICAgIFJlbmRlckJveCogYmFzZWxpbmVDaGlsZCA9IG51bGxwdHI7CiAgICAgaW50IGNoaWxk
TnVtYmVyID0gMDsKICAgICBmb3IgKFJlbmRlckJveCogY2hpbGQgPSBtX29yZGVySXRlcmF0b3Iu
Zmlyc3QoKTsgY2hpbGQ7IGNoaWxkID0gbV9vcmRlckl0ZXJhdG9yLm5leHQoKSkgewpAQCAtMTgw
LDI1ICsxODAsMjUgQEAgT3B0aW9uYWw8aW50PiBSZW5kZXJGbGV4aWJsZUJveDo6Zmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdAogICAgIH0KIAogICAgIGlmICghYmFzZWxpbmVDaGlsZCkKLSAgICAg
ICAgcmV0dXJuIE9wdGlvbmFsPGludD4oKTsKKyAgICAgICAgcmV0dXJuIE9wdGlvbmFsPExheW91
dFVuaXQ+KCk7CiAKICAgICBpZiAoIWlzQ29sdW1uRmxvdygpICYmICFtYWluQXhpc0lzQ2hpbGRJ
bmxpbmVBeGlzKCpiYXNlbGluZUNoaWxkKSkKLSAgICAgICAgcmV0dXJuIE9wdGlvbmFsPGludD4o
Y3Jvc3NBeGlzRXh0ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+
bG9naWNhbFRvcCgpKTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyAoY3Jvc3NBeGlzRXh0
ZW50Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgp
KS50b0ludCgpIH07CiAgICAgaWYgKGlzQ29sdW1uRmxvdygpICYmIG1haW5BeGlzSXNDaGlsZElu
bGluZUF4aXMoKmJhc2VsaW5lQ2hpbGQpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Piht
YWluQXhpc0V4dGVudEZvckNoaWxkKCpiYXNlbGluZUNoaWxkKSArIGJhc2VsaW5lQ2hpbGQtPmxv
Z2ljYWxUb3AoKSk7CisgICAgICAgIHJldHVybiBMYXlvdXRVbml0IHsgKG1haW5BeGlzRXh0ZW50
Rm9yQ2hpbGQoKmJhc2VsaW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKS50
b0ludCgpIH07CiAKLSAgICBPcHRpb25hbDxpbnQ+IGJhc2VsaW5lID0gYmFzZWxpbmVDaGlsZC0+
Zmlyc3RMaW5lQmFzZWxpbmUoKTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBiYXNlbGluZSA9
IGJhc2VsaW5lQ2hpbGQtPmZpcnN0TGluZUJhc2VsaW5lKCk7CiAgICAgaWYgKCFiYXNlbGluZSkg
ewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJz
dExpbmVCb3hCYXNlbGluZSBhbmQgc3RvcCBiYWlsaW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcg
bW9kZSByb290LgogICAgICAgICAvLyBUaGlzIHdvdWxkIGFsc28gZml4IHNvbWUgY2FzZXMgd2hl
cmUgdGhlIGZsZXhib3ggaXMgb3J0aG9nb25hbCB0byBpdHMgY29udGFpbmVyLgogICAgICAgICBM
aW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24gPSBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
SG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmU7Ci0gICAgICAgIHJldHVybiBPcHRpb25hbDxp
bnQ+KHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KCpiYXNlbGluZUNoaWxkLCBkaXJl
Y3Rpb24pICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKTsKKyAgICAgICAgcmV0dXJuIHN5
bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KCpiYXNlbGluZUNoaWxkLCBkaXJlY3Rpb24p
ICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpOwogICAgIH0KIAotICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkp
OworICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNo
aWxkLT5sb2dpY2FsVG9wKCkpLnRvSW50KCkgfTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJG
bGV4aWJsZUJveDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QK
K09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjppbmxpbmVCbG9ja0Jhc2Vs
aW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiBmaXJzdExpbmVCYXNl
bGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
ZXhpYmxlQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3gu
aAppbmRleCBlOTNlZTdiYWZmZmU2NGY2YTA3ZjZiMDFiODA1M2ZmZDQ5MTBkZTdlLi4xYzI1MTkx
NmQ1MzJhMWYwZDJmM2Y1YTVlNjliMGI3NWVhODg2ODY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaApAQCAtNTIsOSArNTIsOSBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjYW5Ecm9wQW5vbnltb3VzQmxvY2tDaGlsZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdm9pZCBsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1KSBmaW5hbDsKIAotICAgIGludCBiYXNl
bGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25N
b2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBv
dmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3Zl
cnJpZGU7Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rp
b25Nb2RlKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3Np
dGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAg
IE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0
aW9uTW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqKSBvdmVycmlkZTsKICAgICBib29sIGhpdFRl
c3RDaGlsZHJlbihjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBI
aXRUZXN0TG9jYXRpb24mLCBjb25zdCBMYXlvdXRQb2ludCYgYWRqdXN0ZWRMb2NhdGlvbiwgSGl0
VGVzdEFjdGlvbikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR3JpZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5j
cHAKaW5kZXggZTYyNmQ5OWI0NDkxNTM5M2Y1NjM0OTc3MDE5ZGU5NDI4MDhhNGE3OS4uODQ3Y2Y5
ODQ1YzNjMGJhNWJmODViYWZmMjM2YTY1OWM2M2U4ZmZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJHcmlkLmNwcApAQCAtMTIzMyw3ICsxMjMzLDcgQEAgdm9pZCBSZW5kZXJHcmlk
Ojp1cGRhdGVBdXRvTWFyZ2luc0luQ29sdW1uQXhpc0lmTmVlZGVkKFJlbmRlckJveCYgY2hpbGQp
CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGNvdWxkIGJlIHJlZmFjdG9yZWQgc29tZWhvdyBh
bmQgZGVmaW5lZCBpbiBSZW5kZXJCb3guCi1zdGF0aWMgaW50IHN5bnRoZXNpemVkQmFzZWxpbmVG
cm9tQm9yZGVyQm94KGNvbnN0IFJlbmRlckJveCYgYm94LCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24pCitzdGF0aWMgTGF5b3V0VW5pdCBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJv
eChjb25zdCBSZW5kZXJCb3gmIGJveCwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKQogewog
ICAgIHJldHVybiAoZGlyZWN0aW9uID09IEhvcml6b250YWxMaW5lID8gYm94LnNpemUoKS5oZWln
aHQoKSA6IGJveC5zaXplKCkud2lkdGgoKSkudG9JbnQoKTsKIH0KQEAgLTEyNTMsNyArMTI1Myw3
IEBAIGJvb2wgUmVuZGVyR3JpZDo6aXNCYXNlbGluZUFsaWdubWVudEZvckNoaWxkKGNvbnN0IFJl
bmRlckJveCYgY2hpbGQsIEdyaWRBeGlzIGJhCiB9CiAKIC8vIEZJWE1FOiBUaGlzIGxvZ2ljIGlz
IHNoYXJlZCBieSBSZW5kZXJGbGV4aWJsZUJveCwgc28gaXQgbWlnaHQgYmUgcmVmYWN0b3JlZCBz
b21laG93LgotaW50IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBi
b29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbW9kZSkg
Y29uc3QKK0xheW91dFVuaXQgUmVuZGVyR3JpZDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxp
bmUsIGJvb2wsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBt
b2RlKSBjb25zdAogewogICAgIEFTU0VSVF9VTlVTRUQobW9kZSwgbW9kZSA9PSBQb3NpdGlvbk9u
Q29udGFpbmluZ0xpbmUpOwogICAgIGF1dG8gYmFzZWxpbmUgPSBmaXJzdExpbmVCYXNlbGluZSgp
OwpAQCAtMTI2Myw3ICsxMjYzLDcgQEAgaW50IFJlbmRlckdyaWQ6OmJhc2VsaW5lUG9zaXRpb24o
Rm9udEJhc2VsaW5lLCBib29sLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24KICAgICByZXR1
cm4gYmFzZWxpbmUudmFsdWUoKSArIChkaXJlY3Rpb24gPT0gSG9yaXpvbnRhbExpbmUgPyBtYXJn
aW5Ub3AoKSA6IG1hcmdpblJpZ2h0KCkpLnRvSW50KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVu
ZGVyR3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4g
UmVuZGVyR3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGlmIChpc1dyaXRp
bmdNb2RlUm9vdCgpIHx8ICFtX2dyaWQuaGFzR3JpZEl0ZW1zKCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CkBAIC0xMjk0LDEyICsxMjk0LDEyIEBAIE9wdGlvbmFsPGludD4gUmVuZGVy
R3JpZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHBhc3MgfGRpcmVjdGlvbnwgaW50byBmaXJzdExpbmVCYXNlbGluZSBhbmQgc3RvcCBiYWls
aW5nIG91dCBpZiB3ZSdyZSBhIHdyaXRpbmcKICAgICAgICAgLy8gbW9kZSByb290LiBUaGlzIHdv
dWxkIGFsc28gZml4IHNvbWUgY2FzZXMgd2hlcmUgdGhlIGdyaWQgaXMgb3J0aG9nb25hbCB0byBp
dHMgY29udGFpbmVyLgogICAgICAgICBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24gPSBpc0hv
cml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmU7Ci0g
ICAgICAgIHJldHVybiBzeW50aGVzaXplZEJhc2VsaW5lRnJvbUJvcmRlckJveCgqYmFzZWxpbmVD
aGlsZCwgZGlyZWN0aW9uKSArIGxvZ2ljYWxUb3BGb3JDaGlsZCgqYmFzZWxpbmVDaGlsZCkudG9J
bnQoKTsKKyAgICAgICAgcmV0dXJuIHN5bnRoZXNpemVkQmFzZWxpbmVGcm9tQm9yZGVyQm94KCpi
YXNlbGluZUNoaWxkLCBkaXJlY3Rpb24pICsgbG9naWNhbFRvcEZvckNoaWxkKCpiYXNlbGluZUNo
aWxkKTsKICAgICB9CiAgICAgcmV0dXJuIGJhc2VsaW5lLnZhbHVlKCkgKyBiYXNlbGluZUNoaWxk
LT5sb2dpY2FsVG9wKCkudG9JbnQoKTsKIH0KIAotT3B0aW9uYWw8aW50PiBSZW5kZXJHcmlkOjpp
bmxpbmVCbG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdAorT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyR3JpZDo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9k
ZSkgY29uc3QKIHsKICAgICByZXR1cm4gZmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyR3JpZC5oCmluZGV4IGJiODVjNjdjODgyNDVjNzE1OTNlMDBiMWZi
YjY0OTFkNGQ2MjhlMGUuLjFkYmU5MWM3OGU2ZjZmNDA4NGIwNmQ0OWI0ZTAzMmM4NDFlN2Q0Y2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHcmlkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdyaWQuaApAQCAtMTY5LDkgKzE2OSw5IEBA
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVBdXRvTWFyZ2luc0luQ29sdW1uQXhpc0lmTmVlZGVk
KFJlbmRlckJveCYpOwogICAgIHZvaWQgdXBkYXRlQXV0b01hcmdpbnNJblJvd0F4aXNJZk5lZWRl
ZChSZW5kZXJCb3gmKTsKIAotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7Ci0gICAgT3B0aW9uYWw8aW50PiBpbmxpbmVC
bG9ja0Jhc2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRV
bml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURp
cmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUp
IGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5l
KCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNl
bGluZShMaW5lRGlyZWN0aW9uTW9kZSkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBpc0lubGluZUJh
c2VsaW5lQWxpZ25lZENoaWxkKGNvbnN0IFJlbmRlckJveCYpIGNvbnN0OwogCiAgICAgTGF5b3V0
VW5pdCBjb2x1bW5BeGlzQmFzZWxpbmVPZmZzZXRGb3JDaGlsZChjb25zdCBSZW5kZXJCb3gmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggMmFj
YTA3ZDJhNzNiNGY5MTgzOWE1YTlkNzUwZTE5NjYwYzZiNmMwZC4uMmUxNWU1NWRlM2ZmOGE0YjFl
MThmMWEwNWVhMTA5ZjgxNjYyNTk3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcklubGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5jcHAKQEAgLTExNjIsMTEgKzExNjIsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJJbmxp
bmU6OmxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIC8qZGlyZWN0
aW8KICAgICByZXR1cm4gc3R5bGUoKS5jb21wdXRlZExpbmVIZWlnaHQoKTsKIH0KIAotaW50IFJl
bmRlcklubGluZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBi
b29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25N
b2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlcklubGluZTo6YmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwg
TGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlv
bk1vZGUpIGNvbnN0CiB7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0gZmlyc3RMaW5l
ID8gZmlyc3RMaW5lU3R5bGUoKSA6IHRoaXMtPnN0eWxlKCk7CiAgICAgY29uc3QgRm9udE1ldHJp
Y3MmIGZvbnRNZXRyaWNzID0gc3R5bGUuZm9udE1ldHJpY3MoKTsKLSAgICByZXR1cm4gZm9udE1l
dHJpY3MuYXNjZW50KGJhc2VsaW5lVHlwZSkgKyAobGluZUhlaWdodChmaXJzdExpbmUsIGRpcmVj
dGlvbiwgbGluZVBvc2l0aW9uTW9kZSkgLSBmb250TWV0cmljcy5oZWlnaHQoKSkgLyAyOworICAg
IHJldHVybiBMYXlvdXRVbml0IHsgKGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsg
KGxpbmVIZWlnaHQoZmlyc3RMaW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9u
dE1ldHJpY3MuaGVpZ2h0KCkpIC8gMikudG9JbnQoKSB9OwogfQogCiBMYXlvdXRTaXplIFJlbmRl
cklubGluZTo6b2Zmc2V0Rm9ySW5GbG93UG9zaXRpb25lZElubGluZShjb25zdCBSZW5kZXJCb3gq
IGNoaWxkKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4
IDNiYzUxYTBkNDYyZmZjZGU0YzRkN2Y2ZTA0N2U0ODljYzBjMWU0NzAuLjJkNGU3NjI0Y2FlYjhi
YTU0MGIxYTExY2MxNjc3YTM5MTVkMTVjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW5saW5lLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlydHlM
aW5lc0Zyb21DaGFuZ2VkQ2hpbGQoUmVuZGVyT2JqZWN0JiBjaGlsZCkgZmluYWwgeyBtX2xpbmVC
b3hlcy5kaXJ0eUxpbmVzRnJvbUNoYW5nZWRDaGlsZCgqdGhpcywgY2hpbGQpOyB9CiAKICAgICBM
YXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBM
aW5lUG9zaXRpb25Nb2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsK
LSAgICBpbnQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5n
TGluZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25N
b2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBmaW5hbDsKICAgICAKICAgICB2
b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50
JikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5j
cHAKaW5kZXggM2Y5NmViNjMwNzZiMDY3MTIxZjg1MWUzY2NmNzdkNzA4Njc3NTg0Yy4uM2IyMzBm
MWJiZjcxMDFlMWEwNGYyMjY2NDE5YjNlMjI2MmJkNjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKQEAgLTc2LDExICs3NiwxMSBAQCBMYXlvdXRV
bml0IFJlbmRlckxpbmVCcmVhazo6bGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVj
dGlvbk1vZGUgLypkaXJlYwogICAgIHJldHVybiBtX2NhY2hlZExpbmVIZWlnaHQ7CiB9CiAKLWlu
dCBSZW5kZXJMaW5lQnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5l
VHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBv
c2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJMaW5l
QnJlYWs6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBs
aW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9
IGZpcnN0TGluZSA/IGZpcnN0TGluZVN0eWxlKCkgOiB0aGlzLT5zdHlsZSgpOwogICAgIGNvbnN0
IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7Ci0gICAgcmV0
dXJuIGZvbnRNZXRyaWNzLmFzY2VudChiYXNlbGluZVR5cGUpICsgKGxpbmVIZWlnaHQoZmlyc3RM
aW5lLCBkaXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gZm9udE1ldHJpY3MuaGVpZ2h0KCkp
IC8gMjsKKyAgICByZXR1cm4gTGF5b3V0VW5pdCB7IChmb250TWV0cmljcy5hc2NlbnQoYmFzZWxp
bmVUeXBlKSArIChsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25N
b2RlKSAtIGZvbnRNZXRyaWNzLmhlaWdodCgpKSAvIDIpLnRvSW50KCkgfTsKIH0KIAogc3RkOjp1
bmlxdWVfcHRyPElubGluZUVsZW1lbnRCb3g+IFJlbmRlckxpbmVCcmVhazo6Y3JlYXRlSW5saW5l
Qm94KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJl
YWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAppbmRleCBl
NTliYWYyMjEyMWIxNjFlY2FhNjc0YTg3NTM0MjYzNTRmNjhjOWNlLi5lNzUzZTQ1NTAwZTBmYzlk
MmNlZGNmZjFkZWQ5NjVlYzZiNGU1NTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpbmVCcmVhay5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYW5C
ZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBmaW5hbDsKIAogICAgIExheW91dFVuaXQgbGluZUhlaWdo
dChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNv
bnN0IGZpbmFsOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9vbCBm
aXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5h
bDsKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZp
cnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0IGZpbmFs
OwogCiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Ub3AoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CiAgICAgTGF5b3V0VW5pdCBtYXJnaW5Cb3R0b20oKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMDY0Zjgx
NDg4OWE1NDdkZmRlYmQzNmVlZjNjODQzZmU3ZDNhYjM1Mi4uOTUwYjFkN2UzMWQyYzBjZDg0Nzdk
ZDFhYjZhMzhjNTBmNTcyZGY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aXN0Qm94LmNwcApAQCAtMjczLDcgKzI3Myw3IEBAIFJlbmRlckJveDo6TG9naWNhbEV4dGVudENv
bXB1dGVkVmFsdWVzIFJlbmRlckxpc3RCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91CiAg
ICAgcmV0dXJuIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoaGVpZ2h0LCBsb2dpY2Fs
VG9wKTsKIH0KIAotaW50IFJlbmRlckxpc3RCb3g6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGxpbmVE
aXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91
dFVuaXQgUmVuZGVyTGlzdEJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxp
bmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgbGluZURpcmVjdGlvbiwg
TGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiBS
ZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGxpbmVE
aXJlY3Rpb24sIGxpbmVQb3NpdGlvbk1vZGUpIC0gYmFzZWxpbmVBZGp1c3RtZW50OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmgKaW5kZXggYzY3MDQyZDFkZWFiN2Vh
ZjlkYjMzOGNkMjMzNDhkNTA3ZjI0NzMyNS4uMjFiYmFhMjc4MDg2MDk4MWUxODJhZjBmOTkyNmM0
ZjIxN2UxMzQyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
c3RCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5oCkBA
IC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9n
aWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzKCkgb3ZlcnJpZGU7Ci0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2Vs
aW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUg
PSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOworICAgIExheW91dFVu
aXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdWVzIGNvbXB1dGVM
b2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgTGF5b3V0VW5pdCBsb2dpY2Fs
VG9wKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0KCkgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMTU4MTIx
MWRiYjZjNzJmZDhiMWZhYjM1OTMxZDJiYTIwOTkwNmMzOC4uMzc0MTdmZGY0N2I5ZGI2M2EyZjZi
ZTNjZTRiNDAwNGNiY2IyMjZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0TWFya2VyLmNwcApAQCAtMTc5MSw3ICsxNzkxLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJM
aXN0TWFya2VyOjpsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBk
aXJlY3QKICAgICByZXR1cm4gUmVuZGVyQm94OjpsaW5lSGVpZ2h0KGZpcnN0TGluZSwgZGlyZWN0
aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKIH0KIAotaW50IFJlbmRlckxpc3RNYXJrZXI6OmJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExp
bmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25N
b2RlKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJMaXN0TWFya2VyOjpiYXNlbGluZVBvc2l0aW9u
KEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QK
IHsKICAgICBpZiAoIWlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fbGlzdEl0ZW0tPmJhc2Vs
aW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgUG9zaXRpb25P
ZkludGVyaW9yTGluZUJveGVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaXN0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlz
dE1hcmtlci5oCmluZGV4IDA4NDRlOTc2ZGNlMGZmNDk4NzJkZTBjNGVlOGEzNzNmOTNkNTcxZDYu
Ljk4MWU5MGVlMTQxOGJkNDZiZWEwM2YzYjM0YjQzMmNjZmJmMzAwNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtNjksNyArNjksNyBAQCBwcml2
YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVFbGVtZW50Qm94PiBjcmVhdGVJbmxpbmVC
b3goKSBvdmVycmlkZTsKIAogICAgIExheW91dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGlu
ZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFp
bmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRC
YXNlbGluZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25N
b2RlID0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlv
dXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGlu
ZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xp
bmUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Qgb3ZlcnJpZGU7
CiAgICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhaXNJbWFnZSgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCmluZGV4IGJmY2I5OTBmOTkzY2Q1Y2Ix
YmRmOWNlYzU2YWY1NWExZWNhYzFlNmIuLmE3MTlmMDNmN2YxNTE5NjM5Y2YzNjJkNTBjODc5MWEx
ZGUxYjIzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5oCkBA
IC0xMjUsMTIgKzEyNSwxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gRmxleGJveCBkZWZpbmVzIGJh
c2VsaW5lcyBkaWZmZXJlbnRseSB0aGFuIHJlZ3VsYXIgYmxvY2tzLgogICAgIC8vIEZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSwgbWVudWxpc3RzIG5lZWQgdG8gZG8gdGhlIHJlZ3VsYXIgYmxv
Y2sgYmVoYXZpb3IuCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2Vs
aW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9z
aXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQorICAgIExheW91dFVuaXQgYmFzZWxp
bmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgcG9zaXRpb24pIGNvbnN0IG92
ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gUmVuZGVyQmxvY2s6OmJhc2VsaW5lUG9zaXRp
b24oYmFzZWxpbmUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBwb3NpdGlvbik7CiAgICAgfQotICAg
IE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQotICAgIE9wdGlvbmFsPGludD4g
aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxpbmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlv
bik7IH0KKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOyB9Cisg
ICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gaW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGlyZWN0aW9u
TW9kZSBkaXJlY3Rpb24pIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFJlbmRlckJsb2NrOjppbmxp
bmVCbG9ja0Jhc2VsaW5lKGRpcmVjdGlvbik7IH0KIAogICAgIHZvaWQgZ2V0SXRlbUJhY2tncm91
bmRDb2xvcih1bnNpZ25lZCBsaXN0SW5kZXgsIENvbG9yJiwgYm9vbCYgaXRlbUhhc0N1c3RvbUJh
Y2tncm91bmRDb2xvcikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNs
aWRlci5jcHAKaW5kZXggNGQyNzhkMTcyZmQzZTM3OGI3MDUwNGQxYTRiNDk0ZjkzN2RmOWY5YS4u
NDcxNjllZGY5OGUxNDI4YzRhMDc3MGYyZjRlZmMwYjU4ZDgxM2M3YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgSFRNTElucHV0
RWxlbWVudCYgUmVuZGVyU2xpZGVyOjplbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKTsKIH0KIAotaW50IFJl
bmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgLypmaXJzdExp
bmUqLywgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CitMYXlvdXRV
bml0IFJlbmRlclNsaWRlcjo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgLypm
aXJzdExpbmUqLywgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7
CiAgICAgLy8gRklYTUU6IFBhdGNoIHRoaXMgZnVuY3Rpb24gZm9yIHdyaXRpbmctbW9kZS4KICAg
ICByZXR1cm4gaGVpZ2h0KCkgKyBtYXJnaW5Ub3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbGlkZXIuaAppbmRleCBhMzM3NDk2ZDc1ZjVmYTA1ODYwMjU3MjE5ZmI3YmMxNGI0NmU1
ZGNiLi4zYmEwNTEwNTc4OGYxZmM3OTBiNmM0MTNlNTI3MzQ5MzdkMzJhNjc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJS
ZW5kZXJTbGlkZXIiOyB9CiAgICAgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwgYm9v
bCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9zaXRp
b25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IGJhc2Vs
aW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1v
ZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMoTGF5b3V0VW5p
dCYgbWluTG9naWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhMb2dpY2FsV2lkdGgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlk
ZTsKICAgICB2b2lkIGxheW91dCgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZS5jcHAKaW5kZXggYTIxNDhjMjNmNTE2MjMzYzc2NDFiMzAxOGYzMGRiZmYwMWFj
OGUyMy4uMzAwZmQyYzc5YzUzYmUxYmU2OWRiMzZmY2Q5NDE4YTIxZGZkYWNiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0xNDcxLDM5ICsxNDcxLDM5IEBA
IFJlbmRlckJsb2NrKiBSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQmxvY2soKSBjb25zdAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1pbnQgUmVuZGVyVGFibGU6OmJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwgYm9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2Rl
IGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAorTGF5
b3V0VW5pdCBSZW5kZXJUYWJsZTo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxp
bmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uLCBMaW5l
UG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZhbHVl
T3JDb21wdXRlKGZpcnN0TGluZUJhc2VsaW5lKCksIFsmXSB7CiAgICAgICAgIHJldHVybiBSZW5k
ZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlv
biwgbGluZVBvc2l0aW9uTW9kZSk7CiAgICAgfSk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVy
VGFibGU6OmlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0CitPcHRp
b25hbDxMYXlvdXRVbml0PiBSZW5kZXJUYWJsZTo6aW5saW5lQmxvY2tCYXNlbGluZShMaW5lRGly
ZWN0aW9uTW9kZSkgY29uc3QKIHsKICAgICAvLyBUYWJsZXMgYXJlIHNraXBwZWQgd2hlbiBjb21w
dXRpbmcgYW4gaW5saW5lLWJsb2NrJ3MgYmFzZWxpbmUuCi0gICAgcmV0dXJuIE9wdGlvbmFsPGlu
dD4oKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAotT3B0aW9uYWw8
aW50PiBSZW5kZXJUYWJsZTo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyVGFibGU6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICAv
LyBUaGUgYmFzZWxpbmUgb2YgYSAndGFibGUnIGlzIHRoZSBzYW1lIGFzIHRoZSAnaW5saW5lLXRh
YmxlJyBiYXNlbGluZSBwZXIgQ1NTIDMgRmxleGJveCAoQ1NTIDIuMQogICAgIC8vIGRvZXNuJ3Qg
ZGVmaW5lIHRoZSBiYXNlbGluZSBvZiBhICd0YWJsZScgb25seSBhbiAnaW5saW5lLXRhYmxlJyku
CiAgICAgLy8gVGhpcyBpcyBhbHNvIG5lZWRlZCB0byBwcm9wZXJseSBkZXRlcm1pbmUgdGhlIGJh
c2VsaW5lIG9mIGEgY2VsbCBpZiBpdCBoYXMgYSB0YWJsZSBjaGlsZC4KIAogICAgIGlmIChpc1dy
aXRpbmdNb2RlUm9vdCgpKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOworICAgICAg
ICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAogICAgIHJlY2FsY1NlY3Rpb25zSWZO
ZWVkZWQoKTsKIAogICAgIGNvbnN0IFJlbmRlclRhYmxlU2VjdGlvbiogdG9wTm9uRW1wdHlTZWN0
aW9uID0gdGhpcy0+dG9wTm9uRW1wdHlTZWN0aW9uKCk7CiAgICAgaWYgKCF0b3BOb25FbXB0eVNl
Y3Rpb24pCi0gICAgICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KCk7CisgICAgICAgIHJldHVybiBP
cHRpb25hbDxMYXlvdXRVbml0PigpOwogCi0gICAgaWYgKE9wdGlvbmFsPGludD4gYmFzZWxpbmUg
PSB0b3BOb25FbXB0eVNlY3Rpb24tPmZpcnN0TGluZUJhc2VsaW5lKCkpCi0gICAgICAgIHJldHVy
biBPcHRpb25hbDxpbnQ+KHRvcE5vbkVtcHR5U2VjdGlvbi0+bG9naWNhbFRvcCgpICsgYmFzZWxp
bmUudmFsdWUoKSk7CisgICAgaWYgKGF1dG8gYmFzZWxpbmUgPSB0b3BOb25FbXB0eVNlY3Rpb24t
PmZpcnN0TGluZUJhc2VsaW5lKCkpCisgICAgICAgIHJldHVybiBPcHRpb25hbDxMYXlvdXRVbml0
Pih0b3BOb25FbXB0eVNlY3Rpb24tPmxvZ2ljYWxUb3AoKSArIGJhc2VsaW5lLnZhbHVlKCkpOwog
CiAgICAgLy8gRklYTUU6IEEgdGFibGUgcm93IGFsd2F5cyBoYXMgYSBiYXNlbGluZSBwZXIgQ1NT
IDIuMS4gV2lsbCB0aGlzIHJldHVybiB0aGUgcmlnaHQgdmFsdWU/Ci0gICAgcmV0dXJuIE9wdGlv
bmFsPGludD4oKTsKKyAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIH0KIAogTGF5
b3V0UmVjdCBSZW5kZXJUYWJsZTo6b3ZlcmZsb3dDbGlwUmVjdChjb25zdCBMYXlvdXRQb2ludCYg
bG9jYXRpb24sIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCwgT3ZlcmxheVNjcm9s
bGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5LCBQYWludFBoYXNlIHBoYXNlKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaAppbmRleCA2ZmUwY2FkMjUzZGUzNGYxMTg1
MWZlZThmZWE0NzNmZGQ2NTNiYTIzLi44ODFhNjc1NDkzZDQ3NGM2MGFlZmU0OTI5MWRiYWMyMzhj
ZWJiNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuaApAQCAtMjkyLDkg
KzI5Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIG92ZXJyaWRlOwogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
LCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFp
bmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24p
IG92ZXJyaWRlOwogCi0gICAgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29s
IGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJs
b2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFVu
aXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGly
ZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkg
Y29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBpbmxpbmVCbG9ja0Jh
c2VsaW5lKExpbmVEaXJlY3Rpb25Nb2RlKSBjb25zdCBmaW5hbDsKIAogICAgIFJlbmRlclRhYmxl
Q29sKiBzbG93Q29sRWxlbWVudCh1bnNpZ25lZCBjb2wsIGJvb2wqIHN0YXJ0RWRnZSwgYm9vbCog
ZW5kRWRnZSkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlU2VjdGlvbi5jcHAKaW5kZXggMWUxOWIzZGIzNTExYTI5YWU2ZWNmNmMzZWIzMzM5Yzc3MzA4
NTlmMS4uZGJjODE3OWNhNjkwNzdjYTljNjZlMWYzMmEwOGNkNDY2MmYxYTlkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTg2Nywy
MyArODY3LDIzIEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNPdXRlckJvcmRlcigp
CiAgICAgbV9vdXRlckJvcmRlckVuZCA9IGNhbGNPdXRlckJvcmRlckVuZCgpOwogfQogCi1PcHRp
b25hbDxpbnQ+IFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAor
T3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCYXNlbGlu
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2dyaWQuc2l6ZSgpKQotICAgICAgICByZXR1cm4gT3B0
aW9uYWw8aW50PigpOworICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAot
ICAgIGludCBmaXJzdExpbmVCYXNlbGluZSA9IG1fZ3JpZFswXS5iYXNlbGluZTsKKyAgICBMYXlv
dXRVbml0IGZpcnN0TGluZUJhc2VsaW5lID0gbV9ncmlkWzBdLmJhc2VsaW5lOwogICAgIGlmIChm
aXJzdExpbmVCYXNlbGluZSkKLSAgICAgICAgcmV0dXJuIGZpcnN0TGluZUJhc2VsaW5lICsgcm91
bmRUb0ludChtX3Jvd1Bvc1swXSk7CisgICAgICAgIHJldHVybiBmaXJzdExpbmVCYXNlbGluZSAr
IG1fcm93UG9zWzBdOwogCi0gICAgT3B0aW9uYWw8aW50PiByZXN1bHQ7CisgICAgT3B0aW9uYWw8
TGF5b3V0VW5pdD4gcmVzdWx0OwogICAgIGNvbnN0IFJvdyYgZmlyc3RSb3cgPSBtX2dyaWRbMF0u
cm93OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlyc3RSb3cuc2l6ZSgpOyArK2kpIHsK
ICAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3MgPSBmaXJzdFJvdy5hdChpKTsKICAgICAgICAg
Y29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsID0gY3MucHJpbWFyeUNlbGwoKTsKICAgICAgICAg
Ly8gT25seSBjZWxscyB3aXRoIGNvbnRlbnQgaGF2ZSBhIGJhc2VsaW5lCiAgICAgICAgIGlmIChj
ZWxsICYmIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpIHsKLSAgICAgICAgICAgIGludCBj
YW5kaWRhdGUgPSByb3VuZFRvSW50KGNlbGwtPmxvZ2ljYWxUb3AoKSArIGNlbGwtPmJvcmRlckFu
ZFBhZGRpbmdCZWZvcmUoKSArIGNlbGwtPmNvbnRlbnRMb2dpY2FsSGVpZ2h0KCkpOworICAgICAg
ICAgICAgTGF5b3V0VW5pdCBjYW5kaWRhdGUgPSBjZWxsLT5sb2dpY2FsVG9wKCkgKyBjZWxsLT5i
b3JkZXJBbmRQYWRkaW5nQmVmb3JlKCkgKyBjZWxsLT5jb250ZW50TG9naWNhbEhlaWdodCgpOwog
ICAgICAgICAgICAgcmVzdWx0ID0gc3RkOjptYXgocmVzdWx0LnZhbHVlT3IoY2FuZGlkYXRlKSwg
Y2FuZGlkYXRlKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCBlM2Y5NDY3YWIxMDcwYTIxZTNjMzYzYmFjZDcy
NzAwM2Q2ZTlhNmY3Li4zYTYzMDViZWM3NWY4OTAyZTA0YzdkMzAzNTc1ZWQ0NThjZmQ2Y2VjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC02
Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJUYWJsZVJvdyogZmlyc3RSb3coKSBjb25z
dDsKICAgICBSZW5kZXJUYWJsZVJvdyogbGFzdFJvdygpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8
aW50PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIE9wdGlvbmFsPExh
eW91dFVuaXQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGFkZENlbGwoUmVuZGVyVGFibGVDZWxsKiwgUmVuZGVyVGFibGVSb3cqIHJvdyk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmgKaW5kZXggNjliMTkzYjFm
ZjI4YmYyZDBlNThiZTZhZTMxNTJkYThkOTIyOWE5MC4uNmEzN2IwYjNlN2Q2NjAyZDU3ZTY1ZjY2
NjVlN2M3YTU1MzBiMmFlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRl
eHRDb250cm9sLmgKQEAgLTk0LDEyICs5NCwxMiBAQCBwdWJsaWM6CiAgICAgeyB9CiAgICAgdmly
dHVhbCB+UmVuZGVyVGV4dENvbnRyb2xJbm5lckNvbnRhaW5lcigpID0gZGVmYXVsdDsKIAotICAg
IGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZSwgYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9uTW9kZSBwb3NpdGlv
bikgY29uc3Qgb3ZlcnJpZGUKKyAgICBMYXlvdXRVbml0IGJhc2VsaW5lUG9zaXRpb24oRm9udEJh
c2VsaW5lIGJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0
aW9uLCBMaW5lUG9zaXRpb25Nb2RlIHBvc2l0aW9uKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKGJhc2VsaW5lLCBmaXJz
dExpbmUsIGRpcmVjdGlvbiwgcG9zaXRpb24pOwogICAgIH0KLSAgICBPcHRpb25hbDxpbnQ+IGZp
cnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gUmVuZGVyQmxvY2s6OmZp
cnN0TGluZUJhc2VsaW5lKCk7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGlubGluZUJsb2NrQmFzZWxp
bmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBS
ZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShkaXJlY3Rpb24pOyB9CisgICAgT3B0aW9u
YWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBSZW5kZXJCbG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsgfQorICAgIE9wdGlvbmFsPExheW91
dFVuaXQ+IGlubGluZUJsb2NrQmFzZWxpbmUoTGluZURpcmVjdGlvbk1vZGUgZGlyZWN0aW9uKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBSZW5kZXJCbG9jazo6aW5saW5lQmxvY2tCYXNlbGluZShk
aXJlY3Rpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc0ZsZXhpYmxlQm94SW1wbCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCmluZGV4IDI4MzVjNzk2
NDZhNmQ1Nzc3NzJlY2NkOGQwYWI4NDJkOGNjOTViNTkuLjI5ODMwNzA5ZDgwNjBjOWEzMWNlY2I3
OGFhNzFiMDRmNzlkMjBhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sTXVsdGlMaW5lLmNwcApAQCAtOTIsNyArOTIsNyBAQCBMYXlv
dXRVbml0IFJlbmRlclRleHRDb250cm9sTXVsdGlMaW5lOjpjb21wdXRlQ29udHJvbExvZ2ljYWxI
ZWlnaHQoTGF5b3V0VW5pdCBsaQogICAgIHJldHVybiBsaW5lSGVpZ2h0ICogdGV4dEFyZWFFbGVt
ZW50KCkucm93cygpICsgbm9uQ29udGVudEhlaWdodDsKIH0KIAotaW50IFJlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUs
IGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJlY3Rpb24sIExpbmVQb3NpdGlv
bk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmU6OmJhc2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlIGRpcmVjdGlvbiwgTGluZVBvc2l0aW9u
TW9kZSBsaW5lUG9zaXRpb25Nb2RlKSBjb25zdAogewogICAgIHJldHVybiBSZW5kZXJCb3g6OmJh
c2VsaW5lUG9zaXRpb24oYmFzZWxpbmVUeXBlLCBmaXJzdExpbmUsIGRpcmVjdGlvbiwgbGluZVBv
c2l0aW9uTW9kZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCmluZGV4IDcyMWFmOWY2YTMzZmFmNGI4OWM3NTFjYmU5
MjQ5MzhiNGNkM2IwNjkuLjQ0MDk0Y2UwMzIwMzFmZWM4NjllMzIzZDMyODEwNjA2NDViYzFhMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bE11bHRpTGluZS5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgZ2V0QXZl
cmFnZUNoYXJXaWR0aCgpIG92ZXJyaWRlOwogICAgIExheW91dFVuaXQgcHJlZmVycmVkQ29udGVu
dExvZ2ljYWxXaWR0aChmbG9hdCBjaGFyV2lkdGgpIGNvbnN0IG92ZXJyaWRlOwogICAgIExheW91
dFVuaXQgY29tcHV0ZUNvbnRyb2xMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbGluZUhlaWdodCwg
TGF5b3V0VW5pdCBub25Db250ZW50SGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKLSAgICBpbnQgYmFz
ZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9u
TW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9uT25Db250YWluaW5nTGluZSkgY29uc3Qg
b3ZlcnJpZGU7CisgICAgTGF5b3V0VW5pdCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSwg
Ym9vbCBmaXJzdExpbmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlID0gUG9z
aXRpb25PbkNvbnRhaW5pbmdMaW5lKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZvaWQgbGF5b3V0
RXhjbHVkZWRDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4pIG92ZXJyaWRlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAppbmRleCA0OTI1OTVkMzQx
ODNiOTQwNzJmYjkxMDA1MzkwYWJjZGIxMTA3YWNjLi42NDkxMTMwY2NkY2I1NjZlZWNhNmZmODdh
OTU4ZWViZjE5ODFkNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgYm9vbCBSb290SW5saW5lQm94Ojppc0h5cGhlbmF0
ZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotaW50IFJvb3RJbmxpbmVCb3g6OmJh
c2VsaW5lUG9zaXRpb24oRm9udEJhc2VsaW5lIGJhc2VsaW5lVHlwZSkgY29uc3QKK0xheW91dFVu
aXQgUm9vdElubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUgYmFzZWxpbmVU
eXBlKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpLmJhc2VsaW5lUG9zaXRpb24oYmFz
ZWxpbmVUeXBlLCBpc0ZpcnN0TGluZSgpLCBpc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5l
IDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmgKaW5kZXggZWNmMmE1MGJkNGI3ODYyMTQ4
ZWNmZDMwZWQxZmYzZGRmNTU1ZGFhMi4uOTI5NDA5NmMxZDU5MDdmOTgwZjE4YWRjMGQ5YWYyMTZh
NmE3OWI3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5oCkBAIC0x
MTcsNyArMTE3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0h5cGhlbmF0ZWQoKSBjb25zdDsK
IAotICAgIGludCBiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNlbGluZSBiYXNlbGluZVR5cGUpIGNv
bnN0IGZpbmFsOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUg
YmFzZWxpbmVUeXBlKSBjb25zdCBmaW5hbDsKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUJvdHRvbSkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TEJsb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCmluZGV4IDRiYWU0ZDJiMjgyOGI2NGY0NmZhNmUxYWRmOTgzODZhM2M0N2NlNDIu
LjE4ZTg0YmI0NWNiYzExYzUwYTlhMjBlOGIxZjIyYjk3MjBmMWQ0ZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBA
IC05NSw3ICs5NSw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1pcnJvcklmTmVl
ZGVkKExheW91dFVuaXQgaG9yaXpvbnRhbE9mZnNldCwgTGF5b3V0CiAgICAgcmV0dXJuIGhvcml6
b250YWxPZmZzZXQ7CiB9CiAKLWludCBSZW5kZXJNYXRoTUxCbG9jazo6YmFzZWxpbmVQb3NpdGlv
bihGb250QmFzZWxpbmUgYmFzZWxpbmVUeXBlLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlv
bk1vZGUgZGlyZWN0aW9uLCBMaW5lUG9zaXRpb25Nb2RlIGxpbmVQb3NpdGlvbk1vZGUpIGNvbnN0
CitMYXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjpiYXNlbGluZVBvc2l0aW9uKEZvbnRCYXNl
bGluZSBiYXNlbGluZVR5cGUsIGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSBkaXJl
Y3Rpb24sIExpbmVQb3NpdGlvbk1vZGUgbGluZVBvc2l0aW9uTW9kZSkgY29uc3QKIHsKICAgICAv
LyBtYXRobWwuY3NzIHNldHMgbWF0aCB7IC13ZWJraXQtbGluZS1ib3gtY29udGFpbjogZ2x5cGhz
IHJlcGxhY2VkOyBsaW5lLWhlaWdodDogMDsgfSwgc28gd2hlbiBsaW5lUG9zaXRpb25Nb2RlID09
IFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyB3ZSB3YW50IHRvCiAgICAgLy8gcmV0dXJuIDAg
aGVyZSB0byBtYXRjaCBvdXIgbGluZS1oZWlnaHQuIFRoaXMgbWF0dGVycyB3aGVuIFJvb3RJbmxp
bmVCb3g6OmFzY2VudEFuZERlc2NlbnRGb3JCb3ggaXMgY2FsbGVkIG9uIGEgUm9vdElubGluZUJv
eCBmb3IgYW4gaW5saW5lLWJsb2NrLgpAQCAtMTc2LDExICsxNzYsMTEgQEAgTGF5b3V0VW5pdCB0
b1VzZXJVbml0cyhjb25zdCBNYXRoTUxFbGVtZW50OjpMZW5ndGgmIGxlbmd0aCwgY29uc3QgUmVu
ZGVyU3R5bGUmIHMKICAgICB9CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MVGFibGU6
OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1h
dGhNTFRhYmxlOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgLy8gQnkgZGVmYXVs
dCB0aGUgdmVydGljYWwgY2VudGVyIG9mIDxtdGFibGU+IGlzIGFsaWduZWQgb24gdGhlIG1hdGgg
YXhpcy4KICAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIFJlbmRlclRhYmxlOjpmaXJzdExp
bmVCb3hCYXNlbGluZSwgd2hpY2ggcmV0dXJucyB0aGUgYmFzZWxpbmUgb2YgdGhlIGZpcnN0IHJv
dyBvZiBhIDx0YWJsZT4uCi0gICAgcmV0dXJuIE9wdGlvbmFsPGludD4obG9naWNhbEhlaWdodCgp
IC8gMiArIGF4aXNIZWlnaHQoc3R5bGUoKSkpOworICAgIHJldHVybiBMYXlvdXRVbml0IHsgKGxv
Z2ljYWxIZWlnaHQoKSAvIDIgKyBheGlzSGVpZ2h0KHN0eWxlKCkpKS50b0ludCgpIH07CiB9CiAK
IHZvaWQgUmVuZGVyTWF0aE1MQmxvY2s6OmxheW91dEl0ZW1zKGJvb2wgcmVsYXlvdXRDaGlsZHJl
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suaAppbmRleCAwZjZjNzYyMjc3ODgzN2YyOTFjYmRkNDc0ZjVjODJiODNhNzM1Yzg1Li4z
YTYxZmZlZjEzYWY1YTdjOTllNmQ0NTA5OThmNjFiNWIyNjE0YWVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC01OSw3
ICs1OSw3IEBAIHB1YmxpYzoKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzg2MTcuCiAgICAgdmlydHVhbCBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJl
bGxpc2hlZE9wZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCi0gICAgaW50IGJhc2VsaW5l
UG9zaXRpb24oRm9udEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUs
IExpbmVQb3NpdGlvbk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJy
aWRlOworICAgIExheW91dFVuaXQgYmFzZWxpbmVQb3NpdGlvbihGb250QmFzZWxpbmUsIGJvb2wg
Zmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSA9IFBvc2l0aW9u
T25Db250YWluaW5nTGluZSkgY29uc3Qgb3ZlcnJpZGU7CiAKICNpZiBFTkFCTEUoREVCVUdfTUFU
SF9MQVlPVVQpCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91
dFBvaW50Jik7CkBAIC04Miw3ICs4Miw3IEBAIHByb3RlY3RlZDoKIAogICAgIHN0YXRpYyBMYXlv
dXRVbml0IGFzY2VudEZvckNoaWxkKGNvbnN0IFJlbmRlckJveCYgY2hpbGQpCiAgICAgewotICAg
ICAgICByZXR1cm4gY2hpbGQuZmlyc3RMaW5lQmFzZWxpbmUoKS52YWx1ZU9yKGNoaWxkLmxvZ2lj
YWxIZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBjaGlsZC5maXJzdExpbmVCYXNlbGluZSgpLnZh
bHVlT3IoY2hpbGQubG9naWNhbEhlaWdodCgpLnRvSW50KCkpOwogICAgIH0KIAogICAgIHZvaWQg
bGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBMYXlvdXRVbml0IHBhZ2VMb2dpY2Fs
SGVpZ2h0ID0gMF9sdSkgb3ZlcnJpZGU7CkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBib29sIGlzUmVuZGVyTWF0aE1MVGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biB0cnVlOyB9CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJSZW5kZXJNYXRoTUxUYWJsZSI7IH0KLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJh
c2VsaW5lKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKIAogICAgIFJlZjxNYXRoTUxTdHlsZT4gbV9tYXRoTUxT
dHlsZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEZyYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCmluZGV4IGVmM2I2NDdiZmY0NzJiNjYyZjZkYWRmZmI2
MzQ2NmFmMzk5NjQ0OGMuLmFmMzc0OTQ2MWVlMjQ2NTQ0MTgzNTFkNzIzOWMwODNlNmY1MjhjN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
RnJhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MRnJhY3Rpb24uY3BwCkBAIC0yNzIsMTAgKzI3MiwxMCBAQCB2b2lkIFJlbmRlck1hdGhN
TEZyYWN0aW9uOjpwYWludChQYWludEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWlu
dE9mZnNldAogICAgIGluZm8uY29udGV4dCgpLmRyYXdMaW5lKGFkanVzdGVkUGFpbnRPZmZzZXQs
IHJvdW5kZWRJbnRQb2ludChMYXlvdXRQb2ludChhZGp1c3RlZFBhaW50T2Zmc2V0LngoKSArIGxv
Z2ljYWxXaWR0aCgpLCBMYXlvdXRVbml0KGFkanVzdGVkUGFpbnRPZmZzZXQueSgpKSkpKTsKIH0K
IAotT3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxGcmFjdGlvbjo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MRnJhY3Rpb246OmZpcnN0
TGluZUJhc2VsaW5lKCkgY29uc3QKIHsKICAgICBpZiAoaXNWYWxpZCgpKQotICAgICAgICByZXR1
cm4gT3B0aW9uYWw8aW50PihzdGQ6Omxyb3VuZChzdGF0aWNfY2FzdDxmbG9hdD4oZnJhY3Rpb25B
c2NlbnQoKSkpKTsKKyAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyByb3VuZGYoc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGZyYWN0aW9uQXNjZW50KCkpKSB9OwogICAgIHJldHVybiBSZW5kZXJNYXRoTUxC
bG9jazo6Zmlyc3RMaW5lQmFzZWxpbmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5oCmluZGV4IDIwYjViNGM5
YWVlZjVmZGRjNjIxZjM3MjVlYWU0NTRjMzQ2ZDA1OTAuLjI3ZjE0ZDc1ZjBlMjg4ODNlY2EzZjAx
MjE5N2YxNzZhZjllMWNiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbWF0aG1sL1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAg
ICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdl
TG9naWNhbEhlaWdodCA9IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExp
bmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UG9pbnQmKSBmaW5hbDsKICAgICBSZW5kZXJNYXRoTUxPcGVyYXRvciogdW5lbWJl
bGxpc2hlZE9wZXJhdG9yKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKaW5kZXggNzBl
ZDk3N2E2MzgxOWVhZmRmZjZlMjFkODYzY2UyMzEzMWUwMzQwNy4uYTQxOWE5ZDJmYjc0MTgwMTZj
ODU2ZWIyNGUwN2ZjZDIzZWQ2ODU1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKQEAgLTMwMSwxMCArMzAx
LDEwIEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnZlcnRpY2FsU3RyZXRjaGVk
T3BlcmF0b3JTaGlmdCgpIGNvbnN0CiAgICAgcmV0dXJuIChtX3N0cmV0Y2hEZXB0aEJlbG93QmFz
ZWxpbmUgLSBtX3N0cmV0Y2hIZWlnaHRBYm92ZUJhc2VsaW5lIC0gbV9tYXRoT3BlcmF0b3IuZGVz
Y2VudCgpICsgbV9tYXRoT3BlcmF0b3IuYXNjZW50KCkpIC8gMjsKIH0KIAotT3B0aW9uYWw8aW50
PiBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9u
YWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MT3BlcmF0b3I6OmZpcnN0TGluZUJhc2VsaW5lKCkg
Y29uc3QKIHsKICAgICBpZiAodXNlTWF0aE9wZXJhdG9yKCkpCi0gICAgICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0PihtX21hdGhPcGVyYXRvci5h
c2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JTaGlmdCgpKSkpOworICAgICAgICBy
ZXR1cm4gTGF5b3V0VW5pdCB7IHN0YXRpY19jYXN0PGludD4obHJvdW5kKHN0YXRpY19jYXN0PGZs
b2F0PihtX21hdGhPcGVyYXRvci5hc2NlbnQoKSAtIHZlcnRpY2FsU3RyZXRjaGVkT3BlcmF0b3JT
aGlmdCgpKSkpIH07CiAgICAgcmV0dXJuIFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNl
bGluZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmgKaW5kZXggOWQzMTA5NmYyNDczODA3MjA4YjE0MDJhZjM3
OTRjYjk3OGUxYWZlOC4uZmU4OWFhMWFmMjZhMDdjMDE2MDNmZTE3OWM3MmU4OWY2OTcyNzg2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MT3BlcmF0b3IuaApAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNSZW5k
ZXJNYXRoTUxPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICBib29s
IGlzSW52aXNpYmxlT3BlcmF0b3IoKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPGludD4gZmlyc3RM
aW5lQmFzZWxpbmUoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0IGZpbmFsOwogICAgIFJlbmRlck1hdGhNTE9wZXJhdG9yKiB1
bmVtYmVsbGlzaGVkT3BlcmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBjb25zdF9jYXN0PFJl
bmRlck1hdGhNTE9wZXJhdG9yKj4odGhpcyk7IH0KIAogICAgIExheW91dFVuaXQgdmVydGljYWxT
dHJldGNoZWRPcGVyYXRvclNoaWZ0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKaW5kZXggZDEzYzhiNGJh
NWQxMTA1NzQ5MDE0MDFhOTk5MmZhZjdhMzJjZGNjNy4uNzkwYWY3YWEzNmRlYTYyMTQ4Y2EzOWU3
ZTUwM2UzY2EzMmJjMmNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQg
UmVuZGVyTWF0aE1MUGFkZGVkOjpsYXlvdXRCbG9jayhib29sIHJlbGF5b3V0Q2hpbGRyZW4sIExh
eW91dFVuaXQpCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogfQogCi1PcHRpb25hbDxpbnQ+IFJl
bmRlck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5
b3V0VW5pdD4gUmVuZGVyTWF0aE1MUGFkZGVkOjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0CiB7
CiAgICAgLy8gV2UgdHJ5IGFuZCBjYWxjdWxhdGUgdGhlIGJhc2VsaW5lIGZyb20gdGhlIHBvc2l0
aW9uIG9mIHRoZSBmaXJzdCBjaGlsZC4KICAgICBMYXlvdXRVbml0IGFzY2VudDsKQEAgLTEyNCw3
ICsxMjQsNyBAQCBPcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFBhZGRlZDo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAogICAgICAgICBhc2NlbnQgPSBhc2NlbnRGb3JDaGlsZCgqYmFzZWxpbmVD
aGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkgKyB2b2Zmc2V0KCk7CiAgICAgZWxz
ZQogICAgICAgICBhc2NlbnQgPSBtcGFkZGVkSGVpZ2h0KDApOwotICAgIHJldHVybiBPcHRpb25h
bDxpbnQ+KHN0ZDo6bHJvdW5kKHN0YXRpY19jYXN0PGZsb2F0Pihhc2NlbnQpKSk7CisgICAgcmV0
dXJuIGFzY2VudDsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmgKaW5kZXggMGQ3ZjMxMGFiYjQ1ZjNhMjA4ZjE2MjYx
MWQ3Mjg4ZDljZmExY2JjNi4uOTNiMzY2ZWNmZTYyYWU3MGRlNDUyYWJhZTA1ZDYzNjQ1NTgyYzMw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxQYWRkZWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFBhZGRlZC5oCkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbXB1
dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCkgZmluYWw7CiAgICAgdm9pZCBsYXlvdXRCbG9jayhi
b29sIHJlbGF5b3V0Q2hpbGRyZW4sIExheW91dFVuaXQgcGFnZUxvZ2ljYWxIZWlnaHQgPSAwX2x1
KSBmaW5hbDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QgZmlu
YWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBm
aW5hbDsKIAogICAgIE1hdGhNTFBhZGRlZEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxNYXRoTUxQYWRkZWRFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygp
KTsgfQogICAgIExheW91dFVuaXQgdm9mZnNldCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuY3BwCmluZGV4IDliM2ViMDg4
ZmFiMzQzNDIyMGJhMGZiYTc5ZDJkODhjOTUwY2UzYTEuLjc2NDEzMGEyMDhkMjZlM2FhZjc4NzYy
ZTk2YzAxYzIwN2I1ODgwMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFJvdy5jcHAKQEAgLTUyLDEzICs1MiwxMyBAQCBNYXRoTUxSb3dF
bGVtZW50JiBSZW5kZXJNYXRoTUxSb3c6OmVsZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYXRoTUxSb3dFbGVtZW50Jj4obm9kZUZvck5vbkFub255bW91cygpKTsKIH0KIAot
T3B0aW9uYWw8aW50PiBSZW5kZXJNYXRoTUxSb3c6OmZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3QK
K09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFJvdzo6Zmlyc3RMaW5lQmFzZWxpbmUo
KSBjb25zdAogewogICAgIGF1dG8qIGJhc2VsaW5lQ2hpbGQgPSBmaXJzdENoaWxkQm94KCk7CiAg
ICAgaWYgKCFiYXNlbGluZUNoaWxkKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PigpOwor
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8TGF5b3V0VW5pdD4oKTsKIAotICAgIHJldHVybiBPcHRp
b25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZihhc2NlbnRGb3JDaGlsZCgqYmFzZWxp
bmVDaGlsZCkgKyBiYXNlbGluZUNoaWxkLT5sb2dpY2FsVG9wKCkpKSk7CisgICAgcmV0dXJuIExh
eW91dFVuaXQgeyBzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoYXNjZW50Rm9yQ2hpbGQoKmJhc2Vs
aW5lQ2hpbGQpICsgYmFzZWxpbmVDaGlsZC0+bG9naWNhbFRvcCgpKSkgfTsKIH0KIAogc3RhdGlj
IFJlbmRlck1hdGhNTE9wZXJhdG9yKiB0b1ZlcnRpY2FsU3RyZXRjaHlPcGVyYXRvcihSZW5kZXJC
b3gqIGJveCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVu
ZGVyTWF0aE1MUm93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFJvdy5oCmluZGV4IGU4NzU4YWU4ZWJjMTBhNWYxYWJkODQxOTY3ZmQxNWM2ODViZDg5MTgu
LjE2OTU2NDI5MDUzZWQ2NGZjN2Y4NzA4OTA0YzA5OGQyNGQyMzA0NDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUm93LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxSb3cuaApAQCAtNDIsNyAr
NDIsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wg
cmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIG92
ZXJyaWRlOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBzdHJldGNoVmVydGljYWxPcGVyYXRvcnNBbmRMYXlvdXRD
aGlsZHJlbigpOwogICAgIHZvaWQgZ2V0Q29udGVudEJvdW5kaW5nQm94KExheW91dFVuaXQmIHdp
ZHRoLCBMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3Jp
cHRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2Ny
aXB0cy5jcHAKaW5kZXggNWMxNWViNDRhOGI5Zjg5MTBhZThjOWJiMDIwMTEzMzFlN2M4YzdjMy4u
MDgxNGU1MjMxYTIzMGM0Yzc2YmQ4Y2NiMmIzODMxODdiZDdiOTcwZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3Bw
CkBAIC00NjYsMTIgKzQ2NiwxMiBAQCB2b2lkIFJlbmRlck1hdGhNTFNjcmlwdHM6OmxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5
b3V0KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MU2NyaXB0czo6Zmlyc3RMaW5l
QmFzZWxpbmUoKSBjb25zdAorT3B0aW9uYWw8TGF5b3V0VW5pdD4gUmVuZGVyTWF0aE1MU2NyaXB0
czo6Zmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdAogewogICAgIGF1dG8qIGJhc2UgPSBmaXJzdENo
aWxkQm94KCk7CiAgICAgaWYgKCFiYXNlKQotICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50Pigp
OwotICAgIHJldHVybiBPcHRpb25hbDxpbnQ+KHN0YXRpY19jYXN0PGludD4obHJvdW5kZihhc2Nl
bnRGb3JDaGlsZCgqYmFzZSkgKyBiYXNlLT5sb2dpY2FsVG9wKCkpKSk7CisgICAgICAgIHJldHVy
biBPcHRpb25hbDxMYXlvdXRVbml0PigpOworICAgIHJldHVybiBMYXlvdXRVbml0IHsgcm91bmRm
KGFzY2VudEZvckNoaWxkKCpiYXNlKSArIGJhc2UtPmxvZ2ljYWxUb3AoKSkgfTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxT
Y3JpcHRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNj
cmlwdHMuaAppbmRleCA4MmYyNTcwZmY4Yzk3YTQ3NTdhZGUxMTRjYTdhZDgzYjc5M2I0NjBjLi45
ZDIzYWJlMzk0MGY1MmZmNmVjNjRmM2RlNzhiZjFkM2I2Mzk3MmY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuaApAQCAt
NTAsNyArNTAsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgTWF0aE1MU2NyaXB0c0Vs
ZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdCBmaW5hbDsKICAgICBzdHJ1Y3QgUmVmZXJlbmNlQ2hpbGRyZW4gewogICAg
ICAgICBSZW5kZXJCb3gqIGJhc2U7CiAgICAgICAgIFJlbmRlckJveCogcHJlc2NyaXB0RGVsaW1p
dGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJN
YXRoTUxTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNwYWNlLmNwcAppbmRleCAzMTM2OTNhNGFlMDUyZmRiMmI2MWFmMDZmODJhNWM1ZDgxNmE5
M2UzLi5mOTI0NjU3MTJkYjc4ZGY2NDYxMzEyNDFiZTRjMDBjZmRmOGQyNjNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmNw
cApAQCAtODYsMTEgKzg2LDExIEBAIHZvaWQgUmVuZGVyTWF0aE1MU3BhY2U6OmxheW91dEJsb2Nr
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICBjbGVhck5lZWRzTGF5b3V0
KCk7CiB9CiAKLU9wdGlvbmFsPGludD4gUmVuZGVyTWF0aE1MU3BhY2U6OmZpcnN0TGluZUJhc2Vs
aW5lKCkgY29uc3QKK09wdGlvbmFsPExheW91dFVuaXQ+IFJlbmRlck1hdGhNTFNwYWNlOjpmaXJz
dExpbmVCYXNlbGluZSgpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5pdCBoZWlnaHQsIGRlcHRoOwog
ICAgIGdldFNwYWNlSGVpZ2h0QW5kRGVwdGgoaGVpZ2h0LCBkZXB0aCk7Ci0gICAgcmV0dXJuIE9w
dGlvbmFsPGludD4oaGVpZ2h0KTsKKyAgICByZXR1cm4gaGVpZ2h0OwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNwYWNlLmgKaW5k
ZXggYjI1OTcyNjE0OTJjNzE0Y2YzYTIwY2ZkZDNiN2I3MTY5NTliMDFiNy4uNzI1ZDRmMjBhMzI1
YWJjYTFmZGM4NGMwNzM1NWIxMzJkNTY1NmIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2UuaApAQCAtNDQsNyArNDQsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgaXNDaGlsZEFsbG93ZWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29u
c3QgUmVuZGVyU3R5bGUmKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQg
Y29tcHV0ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBmaW5hbDsKICAgICB2b2lkIGxheW91dEJs
b2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9
IDBfbHUpIGZpbmFsOwotICAgIE9wdGlvbmFsPGludD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25z
dCBmaW5hbDsKKyAgICBPcHRpb25hbDxMYXlvdXRVbml0PiBmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0IGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBzcGFjZVdpZHRoKCkgY29uc3Q7CiAgICAgdm9p
ZCBnZXRTcGFjZUhlaWdodEFuZERlcHRoKExheW91dFVuaXQmIGhlaWdodCwgTGF5b3V0VW5pdCYg
ZGVwdGgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxUb2tlbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmNwcAppbmRleCA3ZWZhZTRkMGZiOWI3NzVlNjk3OGY1MDIyODk2
NmY3NTc5YTMzODE2Li5kOTlmNTNlNmRjMDQyYzVhMWUzYTVlNGQ4NTYyZTAxYjYxMWRmZWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFRv
a2VuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TFRva2VuLmNwcApAQCAtNTU0LDEyICs1NTQsMTIgQEAgdm9pZCBSZW5kZXJNYXRoTUxUb2tlbjo6
dXBkYXRlRnJvbUVsZW1lbnQoKQogICAgIHNldE1hdGhWYXJpYW50R2x5cGhEaXJ0eSgpOwogfQog
Ci1PcHRpb25hbDxpbnQ+IFJlbmRlck1hdGhNTFRva2VuOjpmaXJzdExpbmVCYXNlbGluZSgpIGNv
bnN0CitPcHRpb25hbDxMYXlvdXRVbml0PiBSZW5kZXJNYXRoTUxUb2tlbjo6Zmlyc3RMaW5lQmFz
ZWxpbmUoKSBjb25zdAogewogICAgIGlmIChtX21hdGhWYXJpYW50Q29kZVBvaW50KSB7CiAgICAg
ICAgIGF1dG8gbWF0aFZhcmlhbnRHbHlwaCA9IHN0eWxlKCkuZm9udENhc2NhZGUoKS5nbHlwaERh
dGFGb3JDaGFyYWN0ZXIobV9tYXRoVmFyaWFudENvZGVQb2ludC52YWx1ZSgpLCBtX21hdGhWYXJp
YW50SXNNaXJyb3JlZCk7CiAgICAgICAgIGlmIChtYXRoVmFyaWFudEdseXBoLmZvbnQpCi0gICAg
ICAgICAgICByZXR1cm4gT3B0aW9uYWw8aW50PihzdGF0aWNfY2FzdDxpbnQ+KGxyb3VuZGYoLW1h
dGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZhcmlhbnRHbHlwaC5nbHlw
aCkueSgpKSkpOworICAgICAgICAgICAgcmV0dXJuIExheW91dFVuaXQgeyBzdGF0aWNfY2FzdDxp
bnQ+KGxyb3VuZGYoLW1hdGhWYXJpYW50R2x5cGguZm9udC0+Ym91bmRzRm9yR2x5cGgobWF0aFZh
cmlhbnRHbHlwaC5nbHlwaCkueSgpKSkgfTsKICAgICB9CiAgICAgcmV0dXJuIFJlbmRlck1hdGhN
TEJsb2NrOjpmaXJzdExpbmVCYXNlbGluZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxUb2tlbi5oCmluZGV4IGMyNmYxMWFmNjM5YjNl
OTJlYzk3ZTA3YzQwYWZkNGY1ODAzOWViZWQuLmNlNTNkNTU0MzM4N2MyNjdkZDM2ZTgyNTNhMDBm
ZmE3OGFlYTJiNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFRva2VuLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBvdmVycmlk
ZTsKICAgICB2b2lkIHBhaW50Q2hpbGRyZW4oUGFpbnRJbmZvJiBmb3JTZWxmLCBjb25zdCBMYXlv
dXRQb2ludCYsIFBhaW50SW5mbyYgZm9yQ2hpbGQsIGJvb2wgdXNlUHJpbnRSZWN0KSBvdmVycmlk
ZTsKLSAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGluZUJhc2VsaW5lKCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4gZmlyc3RMaW5lQmFzZWxpbmUoKSBjb25zdCBvdmVy
cmlkZTsKICAgICB2b2lkIGxheW91dEJsb2NrKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0
VW5pdCBwYWdlTG9naWNhbEhlaWdodCA9IDBfbHUpIG92ZXJyaWRlOwogICAgIHZvaWQgY29tcHV0
ZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>