<?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>81587</bug_id>
          
          <creation_ts>2012-03-19 16:21:28 -0700</creation_ts>
          <short_desc>Increase code sharing between CSSParser and CSSPropertyLonghand.</short_desc>
          <delta_ts>2012-03-22 10:55:14 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>benjamin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>582411</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-19 16:21:28 -0700</bug_when>
    <thetext>Remove the map of CSSPropertyLonghand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582414</commentid>
    <comment_count>1</comment_count>
      <attachid>132707</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-19 16:23:46 -0700</bug_when>
    <thetext>Created attachment 132707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582428</commentid>
    <comment_count>2</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-19 16:33:11 -0700</bug_when>
    <thetext>Without the patch :

Running CSS/CSSPropertySetterGetter.html (1 of 1)
RESULT CSS: CSSPropertySetterGetter= 1140.55 ms
median= 1139.5 ms, stdev= 5.11346262331 ms, min= 1134.0 ms, max= 1151.0 ms
Finished: 24.360030 s

With the patch :

Running CSS/CSSPropertySetterGetter.html (1 of 1)
RESULT CSS: CSSPropertySetterGetter= 1125.6 ms
median= 1123.0 ms, stdev= 7.052659073 ms, min= 1119.0 ms, max= 1147.0 ms
Finished: 24.047662 s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583625</commentid>
    <comment_count>3</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-20 17:01:23 -0700</bug_when>
    <thetext>See also https://bugs.webkit.org/show_bug.cgi?id=81611</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584625</commentid>
    <comment_count>4</comment_count>
      <attachid>132707</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 14:17:48 -0700</bug_when>
    <thetext>Comment on attachment 132707
Patch

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

&gt; Source/WebCore/css/CSSPropertyLonghand.cpp:371
&gt; +static inline CSSPropertyLonghand&amp; webkitWrapLonghands()
&gt; +{
&gt; +    static const int webkitWrapProperties[] = {

Do we actually need all these functions?  How does it look to just inlines these in longhandForProperty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584627</commentid>
    <comment_count>5</comment_count>
      <attachid>132707</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-21 14:19:56 -0700</bug_when>
    <thetext>Comment on attachment 132707
Patch

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

&gt; Source/WebCore/css/CSSPropertyLonghand.cpp:380
&gt; +static CSSPropertyLonghand defaultLonghand;

This looks like a global static. Can you put this in longhandForProperty?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585172</commentid>
    <comment_count>6</comment_count>
      <attachid>133235</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 05:52:38 -0700</bug_when>
    <thetext>Created attachment 133235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585193</commentid>
    <comment_count>7</comment_count>
      <attachid>133243</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 06:12:26 -0700</bug_when>
    <thetext>Created attachment 133243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585203</commentid>
    <comment_count>8</comment_count>
      <attachid>133243</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-22 06:34:19 -0700</bug_when>
    <thetext>Comment on attachment 133243
Patch

Attachment 133243 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12070991</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585206</commentid>
    <comment_count>9</comment_count>
      <attachid>133243</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-03-22 06:39:01 -0700</bug_when>
    <thetext>Comment on attachment 133243
Patch

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

r=me

&gt; Source/WebCore/css/CSSPropertyLonghand.cpp:31
&gt; +CSSPropertyLonghand&amp; backgroundLonghand()
&gt; +{

These should be 

const CSSPropertyLonghand&amp;

&gt; Source/WebCore/css/CSSPropertyLonghand.cpp:59
&gt; +CSSPropertyLonghand&amp; backgroundRepeatLonghand()
&gt; +{
&gt; +    static const int backgroundRepeatProperties[] = { CSSPropertyBackgroundRepeatX, CSSPropertyBackgroundRepeatY };
&gt; +    DEFINE_STATIC_LOCAL(CSSPropertyLonghand, backgroundRepeatLonghand, (backgroundRepeatProperties, WTF_ARRAY_LENGTH(backgroundRepeatProperties)));
&gt; +    return backgroundRepeatLonghand;
&gt; +}

These should be 

const CSSPropertyLonghand&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585211</commentid>
    <comment_count>10</comment_count>
      <attachid>133247</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 06:51:45 -0700</bug_when>
    <thetext>Created attachment 133247
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585226</commentid>
    <comment_count>11</comment_count>
      <attachid>133247</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-22 07:08:26 -0700</bug_when>
    <thetext>Comment on attachment 133247
Patch for landing

Attachment 133247 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12066959</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585233</commentid>
    <comment_count>12</comment_count>
      <attachid>133253</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 07:14:38 -0700</bug_when>
    <thetext>Created attachment 133253
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585241</commentid>
    <comment_count>13</comment_count>
      <attachid>133253</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-22 07:28:26 -0700</bug_when>
    <thetext>Comment on attachment 133253
Patch for landing

Attachment 133253 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12067018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585263</commentid>
    <comment_count>14</comment_count>
      <attachid>133261</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 07:39:50 -0700</bug_when>
    <thetext>Created attachment 133261
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585311</commentid>
    <comment_count>15</comment_count>
      <attachid>133261</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-22 08:21:37 -0700</bug_when>
    <thetext>Comment on attachment 133261
Patch for landing

Attachment 133261 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12114041</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585318</commentid>
    <comment_count>16</comment_count>
      <attachid>133261</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 08:26:01 -0700</bug_when>
    <thetext>Comment on attachment 133261
Patch for landing

Attachment 133261 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12117050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585333</commentid>
    <comment_count>17</comment_count>
      <attachid>133273</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 08:43:28 -0700</bug_when>
    <thetext>Created attachment 133273
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585334</commentid>
    <comment_count>18</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 08:44:03 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Created an attachment (id=133273) [details]
&gt; Patch for landing

Should fix the warnings about integer vs unsigned comparison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585426</commentid>
    <comment_count>19</comment_count>
      <attachid>133287</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-22 10:10:15 -0700</bug_when>
    <thetext>Created attachment 133287
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585473</commentid>
    <comment_count>20</comment_count>
      <attachid>133287</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 10:55:08 -0700</bug_when>
    <thetext>Comment on attachment 133287
Patch for landing

Clearing flags on attachment: 133287

Committed r111731: &lt;http://trac.webkit.org/changeset/111731&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>585475</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-22 10:55:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132707</attachid>
            <date>2012-03-19 16:23:46 -0700</date>
            <delta_ts>2012-03-22 05:52:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81587-20120319202329.patch</filename>
            <type>text/plain</type>
            <size>27714</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE2ODU4NmI2NDViN2Iy
YmVjMDMzZWNlYmYzM2NjNDdlNmQyZmYzOS4uMjc5M2JhYWUwODcxZDZjMTQ5NjM1ODUxZGY4OTBi
YmNkOWQ1ZjY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTAzLTE5ICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlbW92
ZSB0aGUgbWFwIG9mIENTU1Byb3BlcnR5TG9uZ2hhbmQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTU4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgbWFwIG9mIENTU1Byb3BlcnR5TG9u
Z2hhbmQgYW5kIHJlcGxhY2UgaXQgYnkgYSByZWd1bGFyIHN3aXRjaC9jYXNlLgorICAgICAgICBU
aGUgbWFwIGRvZXNuJ3QgYnJpbmcgbXVjaCBoZXJlIGFuZCBpdCdzIGNsZWFuZXIgYW5kIGZhc3Rl
ciB0byB1c2UgdGhlIHN3aXRjaC4KKyAgICAgICAgSXQgYWxzbyBzaG93cyBhIGxpdHRsZSBwZXJm
b3JtYW5jZSBpbXByb3ZlbWVudCBpbiBDU1MvQ1NTUHJvcGVydHlTZXR0ZXJHZXR0ZXIuaHRtbC4K
KworICAgICAgICBObyBuZXcgdGVzdHMgOiBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAg
KiBjc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3Jv
dW5kTG9uZ2hhbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRQb3NpdGlvbkxvbmdo
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmRzKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlckJvdHRvbUxvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3Jl
Ojpib3JkZXJDb2xvckxvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxv
bmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJMZWZ0TG9uZ2hhbmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJvcmRlclJhZGl1c0xvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpi
b3JkZXJSaWdodExvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJTcGFjaW5nTG9u
Z2hhbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclN0eWxlTG9uZ2hhbmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpib3Jk
ZXJXaWR0aExvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpsaXN0U3R5bGVMb25naGFuZHMp
OgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpt
YXJnaW5Mb25naGFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6b3V0bGluZUxvbmdoYW5kcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpw
YWRkaW5nTG9uZ2hhbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEFuaW1hdGlvbkxvbmdo
YW5kcyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRDb2x1bW5zTG9uZ2hhbmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVMb25naGFuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6d2Via2l0RmxleEZsb3dMb25naGFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFy
Z2luQ29sbGFwc2VMb25naGFuZHMpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0TWFycXVlZUxv
bmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrTG9uZ2hhbmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OndlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kcyk6CisgICAgICAgIChXZWJD
b3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRleHRFbXBoYXNpc0xvbmdoYW5kcyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUZXh0U3Ry
b2tlTG9uZ2hhbmRzKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFRyYW5zaXRpb25Mb25naGFu
ZHMpOgorICAgICAgICAoV2ViQ29yZTo6d2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmRzKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdFdyYXBMb25naGFuZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TG9uZ2hh
bmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTE5ICBEYXZpZCBIeWF0dCAgPGh5
YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE1MzQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eUxvbmdoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNw
cAppbmRleCAwZDAzYjIwYmZkNDUxNmZjYzdmOWM1MzExMjE3MzFiNzU4MDBjMWRjLi42ODQ3OGVk
MmExNTBjZDk3NTFmMDNkNDcyYTk5ODg4ZTYzMmI2NTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCkBAIC0yNyw0NSArMjcsNzIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8aW50LCBDU1NQcm9wZXJ0eUxvbmdoYW5kPiBT
aG9ydGhhbmRNYXA7CitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91
bmRMb25naGFuZHMoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFByb3BlcnRp
ZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKKyAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAorICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWCwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAorICAg
ICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAorICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZCisgICAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJhY2tncm91bmRMb25naGFuZHMsIChiYWNrZ3JvdW5kUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFj
a2dyb3VuZExvbmdoYW5kczsKK30KIAotc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9y
dGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFu
ZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmRzKCkKIHsKLSAgICAjZGVmaW5lIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHBy
b3BJRCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkp
KQorICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBv
c2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
YmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmRzLCAoYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAg
IHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZHM7Cit9CiAKLSAgICBzdGF0aWMgY29u
c3QgaW50IGZvbnRQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWls
eSwKLSAgICAgICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKLSAgICAgICAgQ1NTUHJvcGVydHlGb250
U3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsCi0gICAgICAgIENTU1Byb3Bl
cnR5Rm9udFdlaWdodCwKLSAgICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0Ci0gICAgfTsKLSAg
ICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Rm9udCwg
Zm9udFByb3BlcnRpZXMpOworc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNr
Z3JvdW5kUmVwZWF0TG9uZ2hhbmRzKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91
bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91bmRSZXBlYXRMb25naGFuZHMsIChiYWNrZ3JvdW5k
UmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllcykpKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kczsKK30KIAotICAg
IC8vIERvIG5vdCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgZm91ciBzaG9ydGhh
bmRzLCBhbmQga2VlcCB0aGVtIHRvZ2V0aGVyLgorLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIg
b2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIu
CitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kcygpCit7
CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0gewogICAgICAg
ICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUs
IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKICAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodFdpZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0
aCB9LAogICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJv
cmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQogICAgIH07Ci0gICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cCwgYm9yZGVyUHJvcGVydGllc1swXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBib3JkZXJQcm9wZXJ0aWVzWzFdKTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tLCBib3JkZXJQcm9wZXJ0aWVzWzJdKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyUHJvcGVydGll
c1szXSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3Jk
ZXJMb25naGFuZHMsIChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGll
cykgLyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsKKyAgICByZXR1cm4gYm9yZGVy
TG9uZ2hhbmRzOworfQogCi0gICAgc2hvcnRoYW5kTWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlciwg
Q1NTUHJvcGVydHlMb25naGFuZChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJv
cGVydGllcykgLyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsKIAorc3RhdGljIGlu
bGluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZHMoKQoreworICAg
IHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQm90dG9tUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBib3JkZXJCb3R0b21Mb25naGFuZHMsIChib3JkZXJCb3R0b21Qcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIGJvcmRlckJvdHRvbUxvbmdoYW5kczsKK30KKworc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBib3JkZXJDb2xvckxvbmdoYW5kcygpCit7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJDb2xvclByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJU
b3BDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRDb2xvcgogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBib3JkZXJDb2xvclByb3BlcnRpZXMpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFu
ZHMsIChib3JkZXJDb2xvclByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQ29sb3JQ
cm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJDb2xvckxvbmdoYW5kczsKK30KIAorc3Rh
dGljIGlubGluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFnZUxvbmdoYW5kcygpCit7
CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJJbWFnZVByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3Jk
ZXJJbWFnZVNsaWNlLApAQCAtNzMsMTMwICsxMDAsMjA0IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9y
dGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVySW1hZ2VPdXRzZXQsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQK
ICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZSwgYm9yZGVySW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckltYWdlTG9uZ2hhbmRzLCAoYm9y
ZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckltYWdlUHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFuZHM7Cit9CisKK3N0YXRpYyBpbmxp
bmUgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kcygpCit7CisgICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFdpZHRoIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBib3JkZXJMZWZ0TG9uZ2hhbmRzLCAoYm9yZGVyTGVmdFByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYm9yZGVyTGVmdFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckxlZnRMb25n
aGFuZHM7Cit9CiAKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmFk
aXVzTG9uZ2hhbmRzKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3Bl
cnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywKKyAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
UmlnaHRSYWRpdXMKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgYm9yZGVyUmFkaXVzTG9uZ2hhbmRzLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBi
b3JkZXJSYWRpdXNMb25naGFuZHM7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZHMoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9y
ZGVyUmlnaHRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGggfTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJpZ2h0
TG9uZ2hhbmRzLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
clJpZ2h0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZHM7Cit9
CisKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdo
YW5kcygpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kcywgKGJvcmRlclNwYWNp
bmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9uZ2hhbmRzOworfQorCitzdGF0aWMgaW5saW5l
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmRzKCkKK3sKICAgICBzdGF0
aWMgY29uc3QgaW50IGJvcmRlclN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUs
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFN0eWxlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJvcmRlclN0eWxlUHJvcGVydGll
cyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJT
dHlsZUxvbmdoYW5kcywgKGJvcmRlclN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJTdHlsZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclN0eWxlTG9uZ2hhbmRz
OworfQogCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdo
YW5kcygpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENT
U1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIGJvcmRlclRvcExvbmdoYW5kcywgKGJvcmRlclRvcFByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyVG9wUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9y
ZGVyVG9wTG9uZ2hhbmRzOworfQorCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlcldpZHRoTG9uZ2hhbmRzKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlcldp
ZHRoUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLAog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoCiAg
ICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29u
c3QgaW50IGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uLCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBj
b25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0LCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50
IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9y
aXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07
Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJv
cmRlclNwYWNpbmcsIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25z
dCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVj
dGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdywgZmxleEZsb3dQ
cm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IGJvcmRlcldpZHRoTG9uZ2hhbmRzLCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGJvcmRlcldpZHRoUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGhM
b25naGFuZHM7Cit9CiAKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFuZCYgbGlzdFN0
eWxlTG9uZ2hhbmRzKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGxpc3RTdHlsZVByb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKICAgICAgICAgQ1NT
UHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVU
eXBlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5TGlzdFN0eWxlLCBsaXN0U3R5bGVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5kcywgKGxpc3RT
dHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsK
KyAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hhbmRzOworfQorCitzdGF0aWMgaW5saW5lIENTU1By
b3BlcnR5TG9uZ2hhbmQmIGZvbnRMb25naGFuZHMoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQg
Zm9udFByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlGb250RmFtaWx5LAorICAg
ICAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwK
KyAgICAgICAgQ1NTUHJvcGVydHlGb250VmFyaWFudCwKKyAgICAgICAgQ1NTUHJvcGVydHlGb250
V2VpZ2h0LAorICAgICAgICBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQKKyAgICB9OworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgZm9udExvbmdoYW5kcywgKGZvbnRQ
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biBmb250TG9uZ2hhbmRzOworfQogCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQm
IG1hcmdpbkxvbmdoYW5kcygpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0
aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luVG9wLAogICAgICAgICBDU1NQcm9w
ZXJ0eU1hcmdpblJpZ2h0LAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwKICAgICAg
ICAgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5TWFyZ2luLCBtYXJnaW5Qcm9wZXJ0aWVzKTsK
LQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFu
ZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwgbWFyZ2luQ29sbGFwc2VQcm9w
ZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFycXVlZVByb3BlcnRpZXNbXSA9IHsK
LSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLAotICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0
TWFycXVlZVJlcGV0aXRpb24sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxl
LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZAotICAgIH07Ci0gICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIG1hcmdpbkxvbmdoYW5kcywgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgobWFyZ2luUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmRz
OworfQogCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFu
ZHMoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGlu
ZU9mZnNldCwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsCiAgICAgICAgIENTU1By
b3BlcnR5T3V0bGluZVdpZHRoCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5T3V0bGluZSwgb3V0bGluZVByb3BlcnRpZXMpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdoYW5k
cywgKG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQcm9wZXJ0aWVz
KSkpOworICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmRzOworfQorCitzdGF0aWMgaW5saW5lIENT
U1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hhbmRzKCkKK3sKKyAgICBzdGF0aWMgY29u
c3QgaW50IG92ZXJmbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NT
UHJvcGVydHlPdmVyZmxvd1kgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIG92ZXJmbG93TG9uZ2hhbmRzLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gb3ZlcmZsb3dMb25n
aGFuZHM7Cit9CiAKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFuZCYgcGFkZGluZ0xv
bmdoYW5kcygpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBwYWRkaW5nUHJvcGVydGllc1tdID0g
ewogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsCiAgICAgICAgIENTU1Byb3BlcnR5UGFk
ZGluZ1JpZ2h0LAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sCiAgICAgICAgIENT
U1Byb3BlcnR5UGFkZGluZ0xlZnQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlQYWRkaW5nLCBwYWRkaW5nUHJvcGVydGllcyk7Ci0K
LSAgICBzdGF0aWMgY29uc3QgaW50IHdlYmtpdFdyYXBQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAg
IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3Jh
cE1hcmdpbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZwotICAgIH07Ci0g
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXAsIHdlYmtpdFdyYXBQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4
dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3Is
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoIH07Ci0gICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIHRleHRT
dHJva2VQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHBhZGRpbmdMb25naGFuZHMsIChwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kczsK
K30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKLSAg
ICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCi0g
ICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwK
LSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAotICAgICAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRZCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxv
bmdoYW5kcygpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBhbmltYXRpb25Qcm9wZXJ0aWVzW10g
PSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKKyAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25EZWxheSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25D
b3VudCwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCisgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUKICAgICB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBi
YWNrZ3JvdW5kUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCB3ZWJraXRBbmltYXRpb25Mb25naGFuZHMsIChhbmltYXRpb25Qcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdl
YmtpdEFuaW1hdGlvbkxvbmdoYW5kczsKK30KIAorc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmRzKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50
IGNvbHVtbnNQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucywgY29sdW1uc1Byb3BlcnRp
ZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0
Q29sdW1uc0xvbmdoYW5kcywgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNv
bHVtbnNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmRzOwor
fQogCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVM
b25naGFuZHMoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNb
XSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsCiAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVXaWR0aAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIGNvbHVtblJ1bGVQcm9w
ZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgb3Zl
cmZsb3dQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZHMsIChjb2x1bW5SdWxlUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Vi
a2l0Q29sdW1uUnVsZUxvbmdoYW5kczsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVy
UmFkaXVzUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0
UmFkaXVzLAotICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsCi0gICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywKLSAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21SaWdodFJhZGl1cwotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJv
cGVydGllcyk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcyk7CitzdGF0
aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmRzKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhGbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAgfTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEZsZXhGbG93
TG9uZ2hhbmRzLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZsZXhGbG93
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0RmxleEZsb3dMb25naGFuZHM7Cit9CiAK
LSAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uLCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKTsKK3N0YXRpYyBpbmxp
bmUgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZHMoKQor
eworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQWZ0ZXJDb2xsYXBzZSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZHMsIChtYXJnaW5Db2xsYXBzZVBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kczsKK30KIAotICAgIHN0YXRp
YyBjb25zdCBpbnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OwotICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
LCBtYXNrUmVwZWF0UHJvcGVydGllcyk7CitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hh
bmQmIHdlYmtpdE1hcnF1ZWVMb25naGFuZHMoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFy
cXVlZVByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGly
ZWN0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCisgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCisgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0TWFycXVlZVN0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVT
cGVlZAorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmRzLCAobWFycXVlZVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgobWFycXVlZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcnF1ZWVMb25n
aGFuZHM7Cit9CiAKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFz
a0xvbmdoYW5kcygpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXNrUHJvcGVydGllc1tdID0g
ewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRhY2htZW50LAogICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tDbGlwLApAQCAtMjA3LDQ5ICszMDgsMTUzIEBAIHN0YXRpYyB2b2lk
IGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFz
a1JlcGVhdFkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNrUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrTG9uZ2hhbmRzLCAobWFz
a1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Byb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIHdlYmtpdE1hc2tMb25naGFuZHM7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1h
dGlvblByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25O
YW1lLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAotICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLAotICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkl0ZXJhdGlvbkNvdW50LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQor
c3RhdGljIGlubGluZSBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZHMoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1td
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFz
a1Bvc2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFu
ZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmRzLCAobWFza1Bvc2l0aW9uUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3
ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZHM7Cit9CisKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVy
dHlMb25naGFuZCYgd2Via2l0TWFza1JlcGVhdExvbmdoYW5kcygpCit7CisgICAgc3RhdGljIGNv
bnN0IGludCBtYXNrUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmRzLCAo
bWFza1JlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1JlcGVhdFByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZHM7Cit9CisKK3N0YXRp
YyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmRz
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsK
KyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwKKyAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbiwgYW5p
bWF0aW9uUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZHMsICh0ZXh0RW1waGFzaXNQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kczsKK30KIAorc3RhdGljIGlubGluZSBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmRzKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
VGV4dFN0cm9rZUNvbG9yLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCB9OworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VGV4dFN0cm9r
ZUxvbmdoYW5kcywgKHRleHRTdHJva2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRT
dHJva2VQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmRz
OworfQorCitzdGF0aWMgaW5saW5lIENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRp
b25Mb25naGFuZHMoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNpdGlvblByb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRGVsYXkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uLCB0cmFuc2l0aW9u
UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmRzLCAodHJhbnNpdGlvblByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgodHJhbnNpdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRy
YW5zaXRpb25Mb25naGFuZHM7Cit9CiAKK3N0YXRpYyBpbmxpbmUgQ1NTUHJvcGVydHlMb25naGFu
ZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmRzKCkKK3sKICAgICBzdGF0aWMgY29uc3Qg
aW50IHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpblkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4sIHRyYW5zZm9ybU9yaWdpblByb3Bl
cnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Vi
a2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmRzLCAodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZHM7Cit9CiAKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNDb2xvciwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNTdHlsZQotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgdGV4dEVtcGhhc2lzUHJvcGVydGllcyk7
CiAKLSAgICAjdW5kZWYgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkKK3N0YXRpYyBpbmxpbmUgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0V3JhcExvbmdoYW5kcygpCit7CisgICAgc3RhdGljIGNv
bnN0IGludCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBGbG93LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCisgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKKyAgICB9OworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0V3JhcExvbmdoYW5kcywgKHdlYmtp
dFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hhbmRzOwogfQogCi1DU1NQcm9wZXJ0eUxvbmdo
YW5kIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTaG9ydGhhbmRNYXAsIHNob3J0aGFuZE1hcCwgKCkpOwotICAgIGlmIChzaG9y
dGhhbmRNYXAuaXNFbXB0eSgpKQotICAgICAgICBpbml0U2hvcnRoYW5kTWFwKHNob3J0aGFuZE1h
cCk7CitzdGF0aWMgQ1NTUHJvcGVydHlMb25naGFuZCBkZWZhdWx0TG9uZ2hhbmQ7CiAKLSAgICBy
ZXR1cm4gc2hvcnRoYW5kTWFwLmdldChwcm9wZXJ0eUlEKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IGxvbmdoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCit7CisgICAgc3dpdGNoIChwcm9w
ZXJ0eUlEKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CisgICAgICAgIHJldHVy
biBiYWNrZ3JvdW5kTG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kcygpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgICAgICByZXR1cm4gYmFj
a2dyb3VuZFJlcGVhdExvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6Cisg
ICAgICAgIHJldHVybiBib3JkZXJMb25naGFuZHMoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tOgorICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9uZ2hhbmRzKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgorICAgICAgICByZXR1cm4gYm9yZGVyQ29sb3JM
b25naGFuZHMoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CisgICAgICAgIHJl
dHVybiBib3JkZXJJbWFnZUxvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJM
ZWZ0OgorICAgICAgICByZXR1cm4gYm9yZGVyTGVmdExvbmdoYW5kcygpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJSYWRpdXM6CisgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZHMoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAgICAgIHJldHVybiBi
b3JkZXJSaWdodExvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5n
OgorICAgICAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kcygpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0dXJuIGJvcmRlclN0eWxlTG9uZ2hhbmRz
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKKyAgICAgICAgcmV0dXJuIGJvcmRl
clRvcExvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKKyAgICAg
ICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxp
c3RTdHlsZToKKyAgICAgICAgcmV0dXJuIGxpc3RTdHlsZUxvbmdoYW5kcygpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250OgorICAgICAgICByZXR1cm4gZm9udExvbmdoYW5kcygpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgICAgIHJldHVybiBtYXJnaW5Mb25naGFuZHMoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJuIG91dGxpbmVMb25n
aGFuZHMoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CisgICAgICAgIHJldHVybiBv
dmVyZmxvd0xvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAg
ICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRBbmltYXRpb25Mb25naGFuZHMoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgorICAgICAgICByZXR1cm4gYm9y
ZGVyUmFkaXVzTG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6
CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5SdWxl
TG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgorICAgICAg
ICByZXR1cm4gd2Via2l0RmxleEZsb3dMb25naGFuZHMoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQ29sbGFwc2U6CisgICAgICAgIHJldHVybiB3ZWJraXRNYXJnaW5Db2xsYXBz
ZUxvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAgICAg
ICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kcygpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrOgorICAgICAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kcygpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRN
YXNrUG9zaXRpb25Mb25naGFuZHMoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZHMoKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgorICAgICAgICByZXR1cm4gd2Via2l0
VGV4dEVtcGhhc2lzTG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRT
dHJva2U6CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmRzKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRU
cmFuc2l0aW9uTG9uZ2hhbmRzKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9y
bU9yaWdpbjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kcygp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgorICAgICAgICByZXR1cm4gd2Via2l0
V3JhcExvbmdoYW5kcygpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBkZWZhdWx0TG9u
Z2hhbmQ7CisgICAgfQogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5oCmluZGV4IDk2MzNjMDI1YWJmZGFhMmM3ZDljOGYzNGU0MjI2Y2ExZDEzYjFkNDMuLmY4MDcw
ZDNhMTFjMmE3ODkxMWQ2NzdjNWQzMTI0ZTBlZjBjMjkyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtNDYsNyArNDYsNyBAQCBwcml2YXRlOgogfTsKIAog
Ly8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgYSBzaG9ydGhh
bmQKLUNTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOworQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133235</attachid>
            <date>2012-03-22 05:52:38 -0700</date>
            <delta_ts>2012-03-22 06:00:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81587-20120322095220.patch</filename>
            <type>text/plain</type>
            <size>51320</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uZjYzNmNlYjgyNjY0Mzg2ODY4ZDgxN2Y0MmU0NjMy
Yzk3Nzk0NTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uMzBmYTE5ZTFjNGMyYjI1NDJk
NGU3MzYzYjc1MmJkM2VhNzNhOTlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI1Nyw3
ICsyMjUyLDYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAgICAgICAgLy8g
UG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBw
bGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKICAgICAgICAgLy8gaW4gcXVpcmtzIG1vZGUg
YnV0IGl0J3MgdXN1YWxseSB0aGUgWCBjb29yZGluYXRlIG9mIGEgcG9zaXRpb24uCi0gICAgICAg
IC8vIEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5k
LgogICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRJbWFnZSwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LCBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlw
LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciB9OwpAQCAtMjI3Miw5ICsyMjY2LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9yZGVyLXdpZHRoJyB8fCAn
Ym9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAgewotICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBpZiAocGFyc2VTaG9ydGhhbmQo
cHJvcElkLCBib3JkZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpKSB7CiAgICAgICAgICAgICAvLyBU
aGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBi
b3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCiAgICAgICAgICAgICAvLyB0
aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KICAgICAg
ICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgp
LT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwpAQCAtMjI4NCwxMDMg
KzIyNzYsNDQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CiAgICAgICAg
IC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBi
b3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRoJyB8fCAnYm9yZGVyLXN0
eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKSwgaW1wb3J0YW50
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAgICAgICAvLyBbICdib3Jk
ZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3Ig
fTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywg
aW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQs
IGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdpZHRoJyB8fCAnYm9yZGVy
LXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVy
biBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFuZCgpLCBpbXBvcnRhbnQp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0
V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwKLSAgICAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAg
ICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0g
ICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwKLSAgICAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckVuZExv
bmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJl
Zm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciB9
OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBp
bXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8gWyAnb3V0bGluZS1jb2xv
cicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBdIHwgaW5oZXJpdAotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5T3V0bGlu
ZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQor
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRsaW5lTG9uZ2hhbmQoKSwg
aW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CiAgICAgICAgIC8v
IDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9OwotICAgICAg
ICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAg
ICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJDb2xvckxvbmdo
YW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwg
cHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1
ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAgICAgLy8gPGJvcmRlci1z
dHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0
U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSB9OwotICAgICAgICBy
ZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5k
KCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46
CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1By
b3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
U1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0IH07Ci0gICAgICAg
IHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAg
IH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1hcmdpbkxvbmdoYW5kKCku
cHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgog
ICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1By
b3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0IH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwot
ICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIHBhZGRpbmdMb25naGFu
ZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdl
YmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5
Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9udC12YXJpYW50JyB8fCAn
Zm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWlnaHQnIF0/CiAgICAgICAg
IC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVudSB8IG1lc3NhZ2UtYm94
IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBAIC0yMzkwLDI0ICsyMzIz
LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRhbnQpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAgIHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJv
cGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVT
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9w
SWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdoYW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChw
cm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFuZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQo
cHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAgcmV0dXJuIHBhcnNlQW5p
bWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRy
YW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ0LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRV
bmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBDU1MgVGV4dCBMYXlvdXQg
TW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQp
OwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzOgorICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNp
c1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNTdHlsZShpbXBvcnRhbnQp
OwpAQCAtMjQ2NywxMCArMjM4Nyw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFk
ZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwg
Rkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdp
biwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAgICByZXR1cm4gcGFyc2VT
aG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMp
LCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKKyAg
ICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0V3JhcExvbmdoYW5kKCks
IGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwxOCArMjY3MywxMCBAQCB2b2lkIENTU1BhcnNlcjo6YWRk
QW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBv
cnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUgfTsKLSAgICBjb25zdCBp
bnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7Ci0KKyAgICBj
b25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKS5s
ZW5ndGgoKTsKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbik7CiAKLSAgICBib29sIHBhcnNlZFByb3BlcnR5W251bVByb3BlcnRpZXNdID0g
eyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBhcyBuZWNlc3NhcnkKKyAg
ICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSwgZmFsc2UsIGZhbHNlIH07CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbbnVtUHJv
cGVydGllc107CiAKICAgICBpbnQgaTsKQEAgLTI3OTAsNyArMjcwMCw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgZm9y
IChpID0gaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXg7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVy
dGllczsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAg
ICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWw7Ci0gICAgICAgICAgICAgICAgaWYgKHBh
cnNlQW5pbWF0aW9uUHJvcGVydHkocHJvcGVydGllc1tpXSwgdmFsKSkgeworICAgICAgICAgICAg
ICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCku
cHJvcGVydGllcygpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3Bl
cnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpbml0aWFsUGFyc2Vk
UHJvcGVydHlJbmRleCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVl
KHZhbHVlc1tpXSwgdmFsLnJlbGVhc2UoKSk7CkBAIC0yODEyLDIyICsyNzIyLDE4IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIAogICAg
IC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9
IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRp
ZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3Bl
cnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0u
cmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAg
Y29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJv
cGVydHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRHVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsKLSAgICBjb25z
dCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7CisgICAg
Y29uc3QgaW50IG51bVByb3BlcnRpZXMgPSB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKS5sZW5n
dGgoKTsKIAogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbik7CiAKLSAgICBib29sIHBhcnNlZFByb3BlcnR5W251bVByb3BlcnRpZXNdID0g
eyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBhcyBuZWNlc3NhcnkKKyAg
ICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07
CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbbnVtUHJvcGVydGllc107CiAKICAgICBpbnQg
aTsKQEAgLTI4NDksNyArMjc1NSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25T
aG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGZvciAoaSA9IDA7ICFmb3VuZCAmJiBp
IDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5
W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWw7Ci0gICAgICAgICAg
ICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkocHJvcGVydGllc1tpXSwgdmFsKSkgewor
ICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdFRyYW5zaXRp
b25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgewogICAgICAgICAgICAgICAgICAg
ICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
YWRkQW5pbWF0aW9uVmFsdWUodmFsdWVzW2ldLCB2YWwucmVsZWFzZSgpKTsKICAgICAgICAgICAg
ICAgICB9CkBAIC0yODcwLDEyICsyNzc2LDEyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5z
aXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAKICAgICAvLyBOb3cgYWRkIGFsbCBvZiB0
aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4KICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGll
czsgaSsrKQotICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWx1ZXNbaV0ucmVs
ZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9u
TG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKClbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRo
YW5kKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMs
IGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBwcm9w
SWQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kLCBib29sIGltcG9ydGFudCkK
IHsKICAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxl
CiAgICAgLy8gV2Ugc2V0IHVwIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRvIG1hcmsgd2hpY2ggcHJv
cGVydHkgaGFzIGJlZW4gZm91bmQsCkBAIC0yODg4LDggKzI3OTQsOCBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCBpbnQg
bnVtUHJvcGVydAogCiAgICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAg
ICAgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpbnQgcHJvcEluZGV4ID0gMDsgIWZvdW5k
ICYmIHByb3BJbmRleCA8IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4KSB7Ci0gICAgICAgICAg
ICBpZiAoIWZuZFtwcm9wSW5kZXhdICYmIHBhcnNlVmFsdWUocHJvcGVydGllc1twcm9wSW5kZXhd
LCBpbXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAoaW50IHByb3BJbmRleCA9IDA7ICFmb3VuZCAm
JiBwcm9wSW5kZXggPCBsb25naGFuZC5sZW5ndGgoKTsgKytwcm9wSW5kZXgpIHsKKyAgICAgICAg
ICAgIGlmICghZm5kW3Byb3BJbmRleF0gJiYgcGFyc2VWYWx1ZShsb25naGFuZC5wcm9wZXJ0aWVz
KClbcHJvcEluZGV4XSwgaW1wb3J0YW50KSkgewogICAgICAgICAgICAgICAgICAgICBmbmRbcHJv
cEluZGV4XSA9IGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc1Bh
cnNlZCsrOwogICAgICAgICAgICAgfQpAQCAtMjkwMSwxNCArMjgwNywxNCBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCBp
bnQgbnVtUHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
IChwcm9wZXJ0aWVzUGFyc2VkID09IG51bVByb3BlcnRpZXMpCisgICAgaWYgKHByb3BlcnRpZXNQ
YXJzZWQgPT0gbG9uZ2hhbmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0aGUgaW5pdGlhbCB2YWx1
ZS4KICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNp
dCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYg
KCFmbmRbaV0pCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCBjc3NWYWx1
ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAg
ICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSwgY3NzVmFsdWVQb29s
KCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggNDVjNWE0NDI1NTczZWQy
ODQwMTE3YmVhNmQ3MjA5MGRiMzE2NGVjMS4uYTVhMjM4YzFkMTk4ZGRiMDNmMTc4MTZmYzFiMjVh
NDVlNmIxZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTsKIGNsYXNz
IENTU1ByaW1pdGl2ZVZhbHVlOworY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENT
U1ZhbHVlUG9vbDsKIGNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NTUnVsZTsKQEAgLTg3LDcg
Kzg4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJu
ICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50
IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBp
bXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50LCBjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiwgYm9vbCk7CiAgICAgYm9vbCBwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29u
c3QgaW50KiBwcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRl
bnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
TG9uZ2hhbmQuY3BwCmluZGV4IDBkMDNiMjBiZmQ0NTE2ZmNjN2Y5YzUzMTEyMTczMWI3NTgwMGMx
ZGMuLjEwNTZlNjg4NGZmOGY0ZjcyOTcxMDlmNmYzMjQxMzZlMDFhODU5OWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTIyLDUwICsyMiw3NiBAQAog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8aW50LCBD
U1NQcm9wZXJ0eUxvbmdoYW5kPiBTaG9ydGhhbmRNYXA7CisvLyBGSVhNRTogQWRkIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFNpemUgdG8gdGhlIHNob3J0aGFuZC4KK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJhY2tncm91bmRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5k
UHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50
LAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAorICAgICAgICBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCisg
ICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKKyAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blksCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCisgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFja2dyb3VuZFByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIGJhY2tncm91bmRMb25naGFuZDsKK30KIAotc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1h
cChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tn
cm91bmRQb3NpdGlvbkxvbmdoYW5kKCkKIHsKLSAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NT
UHJvcGVydHlMb25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkpKQorICAgIHN0
YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3Vu
ZFBvc2l0aW9uTG9uZ2hhbmQsIChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJh
Y2tncm91bmRQb3NpdGlvbkxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCBmb250
UHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCi0gICAgICAg
IENTU1Byb3BlcnR5Rm9udFNpemUsCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFN0eWxlLAotICAg
ICAgICBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LAotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRXZWln
aHQsCi0gICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdodAotICAgIH07Ci0gICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRQcm9wZXJ0
aWVzKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpCit7
CisgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZ
IH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3Jv
dW5kUmVwZWF0TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dy
b3VuZFJlcGVhdExvbmdoYW5kOworfQogCi0gICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIg
b2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIu
CisvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRo
YW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRl
ckxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclByb3BlcnRpZXNbNF1b
M10gPSB7CiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwgQ1NTUHJvcGVydHlC
b3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCB9LAogICAgICAgICB7IENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGggfSwKICAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVdpZHRoIH0sCiAgICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3Is
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9
CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5Qm9yZGVyVG9wLCBib3JkZXJQcm9wZXJ0aWVzWzBdKTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIGJvcmRlclBy
b3BlcnRpZXNbMV0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIGJvcmRlclByb3BlcnRpZXNbMl0pOwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0LCBi
b3JkZXJQcm9wZXJ0aWVzWzNdKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIGJvcmRlckxvbmdoYW5kLCAoYm9yZGVyUHJvcGVydGllc1swXSwgc2l6ZW9mKGJv
cmRlclByb3BlcnRpZXMpIC8gc2l6ZW9mKGJvcmRlclByb3BlcnRpZXNbMF1bMF0pKSk7CisgICAg
cmV0dXJuIGJvcmRlckxvbmdoYW5kOworfQogCi0gICAgc2hvcnRoYW5kTWFwLnNldChDU1NQcm9w
ZXJ0eUJvcmRlciwgQ1NTUHJvcGVydHlMb25naGFuZChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXpl
b2YoYm9yZGVyUHJvcGVydGllcykgLyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsK
K0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckJvdHRvbUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IGJvcmRlckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21XaWR0aCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgYm9yZGVyQm90dG9tTG9uZ2hhbmQsIChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJv
cmRlckJvdHRvbUxvbmdoYW5kOworfQogCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xv
ckxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNvbG9yUHJvcGVydGll
c1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9t
Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCiAgICAgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3IsIGJvcmRlckNvbG9yUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJDb2xvckxvbmdoYW5kLCAoYm9yZGVyQ29sb3JQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckNvbG9yUHJvcGVydGllcykpKTsKKyAgICByZXR1
cm4gYm9yZGVyQ29sb3JMb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
SW1hZ2VMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJJbWFnZVByb3Bl
cnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwKICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLApAQCAtNzMsMTMwICs5OSwyMzIgQEAgc3Rh
dGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJJbWFnZVJlcGVhdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBib3JkZXJJbWFnZVByb3BlcnRpZXMp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVySW1h
Z2VMb25naGFuZCwgKGJvcmRlckltYWdlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3Jk
ZXJJbWFnZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQ7Cit9
CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxlZnRMb25naGFuZCgpCit7CisgICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFdpZHRoIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBib3JkZXJMZWZ0TG9uZ2hhbmQsIChib3JkZXJMZWZ0UHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJMZWZ0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyTGVmdExvbmdo
YW5kOworfQorCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFuZCgpCit7
CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7CisgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsCisgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyVG9wTGVmdFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0
UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzCisgICAg
fTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJh
ZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFu
ZDsKK30KKworQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpCit7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJSaWdodFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgYm9yZGVyUmlnaHRMb25naGFuZCwgKGJvcmRlclJpZ2h0UHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChib3JkZXJSaWdodFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJv
cmRlclJpZ2h0TG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclNwYWNp
bmdMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVy
U3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZDsKK30KIAorQ1NTUHJvcGVy
dHlMb25naGFuZCYgYm9yZGVyU3R5bGVMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJTdHlsZVByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJU
b3BTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLAogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxl
ZnRTdHlsZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBib3JkZXJTdHlsZVByb3BlcnRpZXMpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyU3R5bGVMb25naGFu
ZCwgKGJvcmRlclN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdHlsZVBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclN0eWxlTG9uZ2hhbmQ7Cit9CiAKK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlclRvcFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwg
Q1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyVG9wTG9u
Z2hhbmQsIChib3JkZXJUb3BQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclRvcFBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclRvcExvbmdoYW5kOworfQorCitDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlcldpZHRoUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
clRvcFdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVy
TGVmdFdpZHRoCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRN
YXAsIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcyk7Ci0KLSAg
ICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uLCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKTsKLQot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9
OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0LCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcyk7Ci0KLSAgICBzdGF0
aWMgY29uc3QgaW50IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGlj
YWxTcGFjaW5nIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBD
U1NQcm9wZXJ0eUJvcmRlclNwYWNpbmcsIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKTsKLQotICAg
IHN0YXRpYyBjb25zdCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4Rmxv
dywgZmxleEZsb3dQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJvcmRlcldpZHRoTG9uZ2hhbmQsIChib3JkZXJXaWR0aFByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBi
b3JkZXJXaWR0aExvbmdoYW5kOworfQogCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVM
b25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBsaXN0U3R5bGVQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsCiAgICAgICAgIENTU1Byb3Bl
cnR5TGlzdFN0eWxlUG9zaXRpb24sCiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZQog
ICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZSwgbGlzdFN0eWxlUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBsaXN0U3R5bGVMb25naGFuZCwgKGxpc3RTdHlsZVBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gbGlzdFN0eWxlTG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRM
b25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0gewor
ICAgICAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFNp
emUsCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFN0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50LAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCisgICAgICAgIENTU1By
b3BlcnR5TGluZUhlaWdodAorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBmb250TG9uZ2hhbmQsIChmb250UHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChmb250UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gZm9udExvbmdoYW5kOworfQogCitD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0
IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luVG9w
LAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAogICAgICAgICBDU1NQcm9wZXJ0eU1h
cmdpbkJvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0CiAgICAgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5TWFyZ2luLCBt
YXJnaW5Qcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwg
bWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFycXVl
ZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0
aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0gICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCi0gICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVl
ZAotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG1hcmdpbkxvbmdoYW5kLCAobWFyZ2luUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biBtYXJnaW5Mb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlMb25naGFuZCYgb3V0bGluZUxvbmdo
YW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eU91dGxp
bmVPZmZzZXQsCiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAogICAgICAgICBDU1NQ
cm9wZXJ0eU91dGxpbmVXaWR0aAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG91dGxpbmVMb25naGFu
ZCwgKG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQcm9wZXJ0aWVz
KSkpOworICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3BlcnR5TG9uZ2hh
bmQmIG92ZXJmbG93TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93
WSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3ZlcmZs
b3dMb25naGFuZCwgKG92ZXJmbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChvdmVyZmxv
d1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQ7Cit9CisKK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIHBhZGRpbmdMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBwYWRkaW5nUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdUb3As
CiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAogICAgICAgICBDU1NQcm9wZXJ0eVBh
ZGRpbmdCb3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQKICAgICB9OwotICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlQYWRkaW5n
LCBwYWRkaW5nUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQsIChwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5k
OworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewot
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAotICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKK0NT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25OYW1lLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
bkR1cmF0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0
aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAorICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAorICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25GaWxsTW9kZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXAsIHdlYmtpdFdyYXBQcm9wZXJ0aWVzKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEFuaW1h
dGlvbkxvbmdoYW5kLCAoYW5pbWF0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChhbmlt
YXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRBbmltYXRpb25Mb25naGFuZDsK
K30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZVdpZHRoIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIHRleHRTdHJva2VQcm9wZXJ0aWVzKTsKK0NTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKQoreworICAgIGNvbnN0IGlu
dCBib3JkZXJBZnRlclByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckFmdGVyQ29sb3IgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBp
bnQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQXR0YWNobWVudCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZEltYWdlLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCi0gICAgICAg
IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25ZLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAot
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCi0gICAgfTsKLSAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFj
a2dyb3VuZFByb3BlcnRpZXMpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVm
b3JlTG9uZ2hhbmQoKQoreworICAgIGNvbnN0IGludCBib3JkZXJCZWZvcmVQcm9wZXJ0aWVzWzNd
ID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9y
ZGVyQmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJl
Zm9yZUxvbmdoYW5kOworfQorCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJFbmRM
b25naGFuZCgpCit7CisgICAgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5k
U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kLCAo
Ym9yZGVyRW5kUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJFbmRQcm9wZXJ0aWVz
KSkpOworICAgIHJldHVybiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZDsKK30KKworQ1NTUHJvcGVy
dHlMb25naGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCit7CisgICAgY29uc3QgaW50
IGJvcmRlclN0YXJ0UHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdENvbHVtbnNMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5z
UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVzKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdENvbHVtbnNM
b25naGFuZCwgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtbnNQcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQ7Cit9CiAKK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpCit7CiAgICAgc3RhdGlj
IGNvbnN0IGludCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoCiAgICAg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZSwgY29sdW1uUnVsZVByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNv
bnN0IGludCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENT
U1Byb3BlcnR5T3ZlcmZsb3dZIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eU92ZXJmbG93LCBvdmVyZmxvd1Byb3BlcnRpZXMpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uUnVsZUxv
bmdoYW5kLCAoY29sdW1uUnVsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVs
ZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZDsKK30K
IAotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0gewotICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLAotICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlclRvcExlZnRSYWRpdXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVm
dFJhZGl1cywKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cwotICAg
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eUJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVydGllcyk7Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywg
Ym9yZGVyUmFkaXVzUHJvcGVydGllcyk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRGbGV4
Rmxvd0xvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhGbG93UHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0
RmxleFdyYXAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQsIChmbGV4Rmxvd1Byb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoZmxleEZsb3dQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRGbGV4Rmxvd0xv
bmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVz
W10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUG9zaXRpb25ZIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvbiwgbWFza1Bvc2l0aW9uUHJvcGVydGllcyk7
CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkKK3sK
KyAgICBzdGF0aWMgY29uc3QgaW50IG1hcmdpbkNvbGxhcHNlUHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkFmdGVyQ29sbGFwc2UgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQsIChtYXJnaW5Db2xsYXBzZVByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKSkpOworICAg
IHJldHVybiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNv
bnN0IGludCBtYXNrUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tS
ZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIG1h
c2tSZXBlYXRQcm9wZXJ0aWVzKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcnF1ZWVM
b25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1tdID0g
eworICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sCisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlUmVwZXRpdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGUsCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkCisgICAgfTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hcnF1ZWVMb25n
aGFuZCwgKG1hcnF1ZWVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcnF1ZWVQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBtYXNrUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tBdHRh
Y2htZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLApAQCAtMjA3LDUwICsz
MzUsMTYxIEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9y
dGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsCiAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNrUHJvcGVy
dGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJr
aXRNYXNrTG9uZ2hhbmQsIChtYXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUHJv
cGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOworfQogCi0gICAgc3Rh
dGljIGNvbnN0IGludCBhbmltYXRpb25Qcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRp
b25EdXJhdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwKLSAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uRmlsbE1vZGUKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlv
bkxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQb3NpdGlvblByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtp
dE1hc2tQb3NpdGlvblkgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kLCAobWFza1Bvc2l0aW9uUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZDsKK30KKworQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tS
ZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCwgKG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9wZXJ0aWVzKSkpOworICAgIHJl
dHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHRl
eHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHls
ZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbiwgYW5pbWF0aW9uUHJvcGVydGllcyk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0RW1waGFzaXNMb25n
aGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dEVtcGhh
c2lzUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQ7
Cit9CiAKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCit7
CisgICAgc3RhdGljIGNvbnN0IGludCB0ZXh0U3Ryb2tlUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lk
dGggfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtp
dFRleHRTdHJva2VMb25naGFuZCwgKHRleHRTdHJva2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHRleHRTdHJva2VQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tl
TG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25n
aGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCB0cmFuc2l0aW9uUHJvcGVydGllc1tdID0g
ewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwKICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EZWxheQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24sIHRyYW5zaXRpb25Qcm9wZXJ0
aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCwgKHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHRyYW5zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9u
TG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdp
bkxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IHRyYW5zZm9ybU9yaWdpblByb3Bl
cnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAog
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkKICAgICB9OwotICAgIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm1PcmlnaW4sIHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hh
bmQsICh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYW5zZm9y
bU9yaWdpblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxv
bmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVz
W10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsCi0gICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUKK0NTU1Byb3BlcnR5TG9uZ2hh
bmQmIHdlYmtpdFdyYXBMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRX
cmFwUHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAor
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCisgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0V3JhcFBhZGRpbmcKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNo
b3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIHRleHRFbXBoYXNpc1By
b3BlcnRpZXMpOwotCi0gICAgI3VuZGVmIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZCisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRXcmFwTG9uZ2hhbmQs
ICh3ZWJraXRXcmFwUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh3ZWJraXRXcmFwUHJvcGVy
dGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0V3JhcExvbmdoYW5kOwogfQogCi1DU1NQcm9wZXJ0
eUxvbmdoYW5kIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCisvLyBSZXR1cm5z
IGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAorQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKIHsKLSAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZE1hcCwgc2hvcnRoYW5kTWFwLCAoKSk7Ci0g
ICAgaWYgKHNob3J0aGFuZE1hcC5pc0VtcHR5KCkpCi0gICAgICAgIGluaXRTaG9ydGhhbmRNYXAo
c2hvcnRoYW5kTWFwKTsKLQotICAgIHJldHVybiBzaG9ydGhhbmRNYXAuZ2V0KHByb3BlcnR5SUQp
OworICAgIHN3aXRjaCAocHJvcGVydHlJRCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kOgorICAgICAgICByZXR1cm4gYmFja2dyb3VuZExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIGJhY2tncm91bmRQb3Np
dGlvbkxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6Cisg
ICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyOgorICAgICAgICByZXR1cm4gYm9yZGVyTG9uZ2hhbmQoKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgorICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9u
Z2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgICAgIHJldHVy
biBib3JkZXJDb2xvckxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdl
OgorICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0OgorICAgICAgICByZXR1cm4gYm9yZGVyTGVmdExvbmdoYW5kKCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKKyAgICAgICAgcmV0dXJuIGJvcmRlclJh
ZGl1c0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgICAg
ICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTcGFjaW5nOgorICAgICAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgorICAgICAgICByZXR1cm4gYm9yZGVyU3R5bGVM
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CisgICAgICAgIHJldHVy
biBib3JkZXJUb3BMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoK
KyAgICAgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TGlzdFN0eWxlOgorICAgICAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hhbmQoKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udDoKKyAgICAgICAgcmV0dXJuIGZvbnRMb25naGFuZCgpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgICAgIHJldHVybiBtYXJnaW5Mb25naGFuZCgp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgorICAgICAgICByZXR1cm4gb3V0bGluZUxv
bmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgorICAgICAgICByZXR1cm4g
b3ZlcmZsb3dMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAg
ICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgorICAgICAgICByZXR1cm4gd2Via2l0
Qm9yZGVyQWZ0ZXJMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJC
ZWZvcmU6CisgICAgICAgIHJldHVybiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6CisgICAgICAgIHJldHVybiB3ZWJraXRC
b3JkZXJFbmRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFy
dDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgorICAgICAgICByZXR1cm4gYm9yZGVyUmFk
aXVzTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczoKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4gd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5k
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgorICAgICAgICByZXR1cm4g
d2Via2l0RmxleEZsb3dMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJn
aW5Db2xsYXBzZToKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQo
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZToKKyAgICAgICAgcmV0dXJuIHdl
YmtpdE1hcnF1ZWVMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgor
ICAgICAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxv
bmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6CisgICAgICAg
IHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzOgorICAgICAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9u
Z2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAg
cmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKKyAgICAgICAg
cmV0dXJuIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFdyYXA6CisgICAgICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hhbmQoKTsKKyAg
ICBkZWZhdWx0OiB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgZGVmYXVsdExvbmdoYW5kLCAoKSk7CisgICAgICAgIHJldHVybiBkZWZhdWx0TG9uZ2hh
bmQ7CisgICAgfQorICAgIH0KIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaAppbmRleCA5NjMzYzAyNWFiZmRhYTJjN2Q5
YzhmMzRlNDIyNmNhMWQxM2IxZDQzLi42ODQ0ZWNhNzZlNWVjMzc5NjcxMDdjNGJlMjE2NWFlMGRl
ODY5NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKQEAgLTQ1
LDggKzQ1LDQ3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9OwogCitDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hh
bmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBi
YWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxv
bmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpOwor
Q1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQ29sb3JMb25naGFuZCgpOworQ1NTUHJvcGVydHlM
b25naGFuZCYgYm9yZGVySW1hZ2VMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyTGVmdExvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25n
aGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpOworQ1NT
UHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJUb3BMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyV2lkdGhMb25naGFu
ZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgbGlzdFN0eWxlTG9uZ2hhbmQoKTsKK0NTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGZvbnRMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2lu
TG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpOworQ1NT
UHJvcGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFu
ZCYgcGFkZGluZ0xvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRBbmltYXRp
b25Mb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQWZ0ZXJMb25n
aGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQo
KTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCk7CitDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCk7CitDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
RmxleEZsb3dMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2luQ29s
bGFwc2VMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxvbmdo
YW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hh
bmQmIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRy
YW5zaXRpb25Mb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3Jt
T3JpZ2luTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFu
ZCgpOworCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBh
IHNob3J0aGFuZAotQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZEZvclByb3BlcnR5KGludCk7
CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZEZvclByb3BlcnR5KGludCk7CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133243</attachid>
            <date>2012-03-22 06:12:26 -0700</date>
            <delta_ts>2012-03-22 06:51:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81587-20120322101208.patch</filename>
            <type>text/plain</type>
            <size>51004</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uZjYzNmNlYjgyNjY0Mzg2ODY4ZDgxN2Y0MmU0NjMy
Yzk3Nzk0NTBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uNDIyN2EyMDdkNWRjMzI5YWIy
NzNjYmVmMGJiOGYwNmE4OGM3ZjYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3Miw5
ICsyMjY3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBpZiAo
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0
aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCiAg
ICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRo
ZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQp
OwpAQCAtMjI4NCwxMDMgKzIyNzcsNDQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUn
IHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHBy
b3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBib3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRo
JyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlclJpZ2h0TG9uZ2hh
bmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAg
ICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29s
b3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwK
LSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQp
OwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9y
ZGVyU3RhcnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8g
WyAnb3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0g
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9y
dGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRs
aW5lTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBi
b3JkZXJDb2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCkucHJvcGVydGll
cygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAg
ICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3Jk
ZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBp
bXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1h
cmdpbkxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVz
LCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQs
IHBhZGRpbmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9u
dC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWln
aHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVu
dSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBA
IC0yMzkwLDI0ICsyMzI0LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRh
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAg
cmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ1LDggQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRp
ZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0
RW1waGFzaXNMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNT
dHlsZShpbXBvcnRhbnQpOwpAQCAtMjQ2NywxMCArMjM4OCw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5
V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
V3JhcExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwxOCArMjY3NCwxMCBAQCB2b2lk
IENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9y
dGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsg
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUg
fTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVy
dGllcyk7Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0
aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbik7CiAKLSAgICBib29sIHBhcnNlZFByb3BlcnR5W251
bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBh
cyBuZWNlc3NhcnkKKyAgICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07CiAgICAgUmVmUHRyPENTU1ZhbHVl
PiB2YWx1ZXNbbnVtUHJvcGVydGllc107CiAKICAgICBpbnQgaTsKQEAgLTI3OTAsNyArMjcwMSw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFu
dCkKICAgICAgICAgZm9yIChpID0gaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXg7ICFmb3VuZCAm
JiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3Bl
cnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWw7Ci0gICAgICAg
ICAgICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkocHJvcGVydGllc1tpXSwgdmFsKSkg
eworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdEFuaW1h
dGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBpbml0aWFsUGFyc2VkUHJvcGVydHlJbmRleCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGFk
ZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgdmFsLnJlbGVhc2UoKSk7CkBAIC0yODEyLDIyICsy
NzIzLDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGlt
cG9ydGFudCkKIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5k
LgogICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFBy
b3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7Cisg
ICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygp
W2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBv
cnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uUHJvcGVydHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVs
YXkgfTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJv
cGVydGllcyk7CisgICAgY29uc3QgaW50IG51bVByb3BlcnRpZXMgPSB3ZWJraXRUcmFuc2l0aW9u
TG9uZ2hhbmQoKS5sZW5ndGgoKTsKIAogICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbik7CiAKLSAgICBib29sIHBhcnNlZFByb3BlcnR5W251
bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBh
cyBuZWNlc3NhcnkKKyAgICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlIH07CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbbnVtUHJvcGVydGll
c107CiAKICAgICBpbnQgaTsKQEAgLTI4NDksNyArMjc1Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGZvciAoaSA9
IDA7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgICAgICBpZiAo
IXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWw7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkocHJvcGVydGll
c1tpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5
KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgewogICAg
ICAgICAgICAgICAgICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgYWRkQW5pbWF0aW9uVmFsdWUodmFsdWVzW2ldLCB2YWwucmVsZWFzZSgp
KTsKICAgICAgICAgICAgICAgICB9CkBAIC0yODcwLDEyICsyNzc3LDEyIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiAKICAgICAvLyBO
b3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4KICAgICBmb3IgKGkgPSAwOyBp
IDwgbnVtUHJvcGVydGllczsgaSsrKQotICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ld
LCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAgICAgICBhZGRQcm9wZXJ0eSh3
ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKS5wcm9wZXJ0aWVzKClbaV0sIHZhbHVlc1tpXS5yZWxl
YXNlKCksIGltcG9ydGFudCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50
IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hv
cnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kLCBi
b29sIGltcG9ydGFudCkKIHsKICAgICAvLyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0
aWVzIGFzIHBvc3NpYmxlCiAgICAgLy8gV2Ugc2V0IHVwIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRv
IG1hcmsgd2hpY2ggcHJvcGVydHkgaGFzIGJlZW4gZm91bmQsCkBAIC0yODg4LDggKzI3OTUsOCBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50ICpw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydAogCiAgICAgd2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCkpIHsKICAgICAgICAgZm91bmQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChpbnQgcHJvcElu
ZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8IG51bVByb3BlcnRpZXM7ICsrcHJvcEluZGV4
KSB7Ci0gICAgICAgICAgICBpZiAoIWZuZFtwcm9wSW5kZXhdICYmIHBhcnNlVmFsdWUocHJvcGVy
dGllc1twcm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CisgICAgICAgIGZvciAoaW50IHByb3BJbmRl
eCA9IDA7ICFmb3VuZCAmJiBwcm9wSW5kZXggPCBsb25naGFuZC5sZW5ndGgoKTsgKytwcm9wSW5k
ZXgpIHsKKyAgICAgICAgICAgIGlmICghZm5kW3Byb3BJbmRleF0gJiYgcGFyc2VWYWx1ZShsb25n
aGFuZC5wcm9wZXJ0aWVzKClbcHJvcEluZGV4XSwgaW1wb3J0YW50KSkgewogICAgICAgICAgICAg
ICAgICAgICBmbmRbcHJvcEluZGV4XSA9IGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgcHJvcGVydGllc1BhcnNlZCsrOwogICAgICAgICAgICAgfQpAQCAtMjkwMSwxNCArMjgwOCwx
NCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50
ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChwcm9wZXJ0aWVzUGFyc2VkID09IG51bVByb3BlcnRpZXMpCisgICAg
aWYgKHByb3BlcnRpZXNQYXJzZWQgPT0gbG9uZ2hhbmQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgLy8gRmlsbCBpbiBhbnkgcmVtYWluaW5nIHByb3BlcnRpZXMgd2l0aCB0
aGUgaW5pdGlhbCB2YWx1ZS4KICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywg
UHJvcGVydHlJbXBsaWNpdCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVz
OyArK2kpIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kp
IHsKICAgICAgICAgaWYgKCFmbmRbaV0pCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0
aWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1w
b3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtp
XSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFu
dCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXgg
NDVjNWE0NDI1NTczZWQyODQwMTE3YmVhNmQ3MjA5MGRiMzE2NGVjMS4uYTVhMjM4YzFkMTk4ZGRi
MDNmMTc4MTZmYzFiMjVhNDVlNmIxZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNDUs
NiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZTsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOworY2xhc3MgQ1NTUHJvcGVydHlMb25n
aGFuZDsKIGNsYXNzIENTU1ZhbHVlUG9vbDsKIGNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NT
UnVsZTsKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvcGVydGllcygp
IGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAKICAgICBi
b29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFy
c2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJv
cGVydGllcywgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50LCBj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiwgYm9vbCk7CiAgICAgYm9vbCBwYXJzZTRWYWx1ZXMo
aW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CiAgICAg
Ym9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wg
cGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IDBkMDNiMjBiZmQ0NTE2ZmNjN2Y5YzUz
MTEyMTczMWI3NTgwMGMxZGMuLjk2Y2VjYTk4ZjM5MmVmZmY5OWQ5Yzg3OWUwNGY0NGFmYjAzMDY4
YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTIy
LDUwICsyMiw3MSBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIKIAogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVm
IEhhc2hNYXA8aW50LCBDU1NQcm9wZXJ0eUxvbmdoYW5kPiBTaG9ydGhhbmRNYXA7CisvLyBGSVhN
RTogQWRkIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgdG8gdGhlIHNob3J0aGFuZC4KK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0
IGludCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRBdHRhY2htZW50LAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAorICAg
ICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kSW1hZ2UsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKKyAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLAorICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRQb3NpdGlvblksCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgs
CisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKKyAgICB9OworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAo
YmFja2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIGJhY2tncm91bmRMb25naGFuZDsKK30KIAotc3RhdGljIHZvaWQg
aW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKK0NTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkKIHsKLSAgICAjZGVmaW5lIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAu
c2V0KHByb3BJRCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChh
cnJheSkpKQorICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dy
b3VuZFBvc2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQsIChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpKSk7
CisgICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kOworfQogCi0gICAgc3RhdGlj
IGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRG
YW1pbHksCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFNpemUsCi0gICAgICAgIENTU1Byb3BlcnR5
Rm9udFN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LAotICAgICAgICBDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQsCi0gICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdodAotICAgIH07
Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUZv
bnQsIGZvbnRQcm9wZXJ0aWVzKTsKLQotICAgIC8vIERvIG5vdCBjaGFuZ2UgdGhlIG9yZGVyIG9m
IHRoZSBmb2xsb3dpbmcgZm91ciBzaG9ydGhhbmRzLCBhbmQga2VlcCB0aGVtIHRvZ2V0aGVyLgot
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUHJvcGVydGllc1s0XVszXSA9IHsKLSAgICAgICAg
eyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBD
U1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJS
aWdodENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRXaWR0aCB9LAotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgg
fSwKLSAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3Jk
ZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoIH0KLSAgICB9OwotICAgIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJUb3As
IGJvcmRlclByb3BlcnRpZXNbMF0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0
aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgYm9yZGVyUHJvcGVydGllc1sxXSk7Ci0g
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbSwgYm9yZGVyUHJvcGVydGllc1syXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnQsIGJvcmRlclByb3BlcnRpZXNb
M10pOworQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCkKK3sK
KyAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkg
fTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91
bmRSZXBlYXRMb25naGFuZCwgKGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBiYWNrZ3Jv
dW5kUmVwZWF0TG9uZ2hhbmQ7Cit9CiAKLSAgICBzaG9ydGhhbmRNYXAuc2V0KENTU1Byb3BlcnR5
Qm9yZGVyLCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihi
b3JkZXJQcm9wZXJ0aWVzKSAvIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOworLy8g
RG8gbm90IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMs
IGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIuCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMb25n
aGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5Qm9yZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIGJvcmRlckxvbmdoYW5kLCAoYm9yZGVyUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJMb25naGFuZDsKK30KIAorQ1NT
UHJvcGVydHlMb25naGFuZCYgYm9yZGVyQm90dG9tTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBj
b25zdCBpbnQgYm9yZGVyQm90dG9tUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRl
ckJvdHRvbUNvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBib3JkZXJCb3R0b21Mb25naGFuZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgoYm9yZGVyQm90dG9tUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVy
Qm90dG9tTG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckNvbG9yTG9u
Z2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsCiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IKICAgICB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwg
Ym9yZGVyQ29sb3JQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJvcmRlckNvbG9yTG9uZ2hhbmQsIChib3JkZXJDb2xvclByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBi
b3JkZXJDb2xvckxvbmdoYW5kOworfQogCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFn
ZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGll
c1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCkBAIC03MywxMzAgKzk0LDIzMiBAQCBzdGF0aWMg
dm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0LAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckltYWdlUmVwZWF0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlUHJvcGVydGllcyk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJJbWFnZUxv
bmdoYW5kLCAoYm9yZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlcklt
YWdlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFuZDsKK30KKwor
Q1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMg
Y29uc3QgaW50IGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVm
dFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
Q29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJv
cmRlckxlZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlckxlZnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQ7
Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKKyAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BMZWZ0UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsCisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKKyAgICB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyUmFkaXVz
TG9uZ2hhbmQsIChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
clJhZGl1c1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kOwor
fQorCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExvbmdoYW5kKCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgaW50IGJvcmRlclJpZ2h0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCBib3JkZXJSaWdodExvbmdoYW5kLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVy
UmlnaHRMb25naGFuZDsKK30KKworQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xv
bmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVz
W10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTcGFjaW5nTG9uZ2hhbmQsIChib3JkZXJTcGFj
aW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTcGFjaW5nUHJvcGVydGllcykp
KTsKKyAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kOworfQogCitDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJv
cmRlclN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0
eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0
eWxlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJvcmRlclN0eWxlUHJvcGVydGllcyk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdoYW5kLCAo
Ym9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxlUHJvcGVy
dGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFuZDsKK30KIAorQ1NTUHJvcGVy
dHlMb25naGFuZCYgYm9yZGVyVG9wTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQg
Ym9yZGVyVG9wUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yIH07CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJUb3BMb25naGFu
ZCwgKGJvcmRlclRvcFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyVG9wUHJvcGVy
dGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyVG9wTG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJvcmRlcldpZHRoTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQg
Ym9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0
V2lkdGgKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzKTsKLQotICAgIHN0
YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9
OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb24sIGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpOwotCi0gICAg
c3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07Ci0g
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXQsIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBj
b25zdCBpbnQgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNw
YWNpbmcgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5Qm9yZGVyU3BhY2luZywgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpOwotCi0gICAgc3Rh
dGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRG
bGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07Ci0gICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBm
bGV4Rmxvd1Byb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgYm9yZGVyV2lkdGhMb25naGFuZCwgKGJvcmRlcldpZHRoUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRl
cldpZHRoTG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGxpc3RTdHlsZUxvbmdo
YW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGxpc3RTdHlsZVByb3BlcnRpZXNbXSA9IHsK
LSAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKKyAgICAgICAgQ1NTUHJvcGVydHlM
aXN0U3R5bGVUeXBlLAogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAotICAg
ICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5
bGVJbWFnZQorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBsaXN0U3R5bGVMb25naGFuZCwgKGxpc3RTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hh
bmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRMb25naGFuZCgpCit7CisgICAgc3Rh
dGljIGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eUZv
bnRGYW1pbHksCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFNpemUsCisgICAgICAgIENTU1Byb3Bl
cnR5Rm9udFN0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LAorICAgICAgICBD
U1NQcm9wZXJ0eUZvbnRXZWlnaHQsCisgICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdodAogICAg
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eUxpc3RTdHlsZSwgbGlzdFN0eWxlUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBmb250TG9uZ2hhbmQsIChmb250UHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChmb250UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gZm9udExvbmdoYW5k
OworfQogCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCit7CiAgICAgc3Rh
dGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5
TWFyZ2luVG9wLAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAogICAgICAgICBDU1NQ
cm9wZXJ0eU1hcmdpbkJvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0CiAgICAg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
TWFyZ2luLCBtYXJnaW5Qcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2lu
Q29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29s
bGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZSwgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBp
bnQgbWFycXVlZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJx
dWVlRGlyZWN0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQs
Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCi0gICAgICAgIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1h
cnF1ZWVTcGVlZAotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVzKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG1hcmdpbkxvbmdoYW5kLCAo
bWFyZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Qcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiBtYXJnaW5Mb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlMb25naGFuZCYgb3V0
bGluZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVQcm9wZXJ0aWVz
W10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLAotICAgICAgICBDU1NQcm9w
ZXJ0eU91dGxpbmVPZmZzZXQsCisgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLAogICAg
ICAgICBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5l
V2lkdGgKKyAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCisgICAgICAgIENTU1Byb3Bl
cnR5T3V0bGluZU9mZnNldAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG91dGxpbmVMb25naGFuZCwg
KG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IG92ZXJmbG93TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSB9
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3ZlcmZsb3dM
b25naGFuZCwgKG92ZXJmbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChvdmVyZmxvd1By
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHBhZGRpbmdMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBw
YWRkaW5nUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsCiAg
ICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRp
bmdCb3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQKICAgICB9OwotICAgIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlQYWRkaW5nLCBw
YWRkaW5nUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQsIChwYWRkaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kOwor
fQogCi0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRXcmFwUHJvcGVydGllc1tdID0gewotICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRpbmcKK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMg
Y29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25OYW1lLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1
cmF0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAorICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAorICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25GaWxsTW9kZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXAsIHdlYmtpdFdyYXBQcm9wZXJ0aWVzKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEFuaW1hdGlv
bkxvbmdoYW5kLCAoYW5pbWF0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRp
b25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRBbmltYXRpb25Mb25naGFuZDsKK30K
IAotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2UsIHRleHRTdHJva2VQcm9wZXJ0aWVzKTsKK0NTU1Byb3BlcnR5
TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKQoreworICAgIGNvbnN0IGludCBi
b3JkZXJBZnRlclByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckFmdGVyQ29sb3IgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFmdGVyUHJvcGVydGllcykpKTsKKyAgICByZXR1
cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQg
YmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
QXR0YWNobWVudCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZEltYWdlLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCi0gICAgICAgIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kUG9zaXRpb25ZLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAotICAg
ICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZCi0gICAgfTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dy
b3VuZFByb3BlcnRpZXMpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3Jl
TG9uZ2hhbmQoKQoreworICAgIGNvbnN0IGludCBib3JkZXJCZWZvcmVQcm9wZXJ0aWVzWzNdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckJlZm9yZVN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVy
QmVmb3JlTG9uZ2hhbmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlckJlZm9yZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9y
ZUxvbmdoYW5kOworfQorCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJFbmRMb25n
aGFuZCgpCit7CisgICAgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRpZXNbM10gPSB7IENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5
bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kLCAoYm9y
ZGVyRW5kUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJFbmRQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCit7CisgICAgY29uc3QgaW50IGJv
cmRlclN0YXJ0UHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7Cit9CisKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdENvbHVtbnNMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5zUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtbkNvdW50IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVzKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdENvbHVtbnNMb25n
aGFuZCwgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtbnNQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQ7Cit9CiAKK0NTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNv
bnN0IGludCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
V2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0eWxlLAotICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aAorICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVDb2xvciwKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBjb2x1bW5SdWxlUHJv
cGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IG92ZXJmbG93UHJvcGVydGllc1tdID0g
eyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5T3ZlcmZsb3csIG92
ZXJmbG93UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQsIChjb2x1bW5SdWxlUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Vi
a2l0Q29sdW1uUnVsZUxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJS
YWRpdXNQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRS
YWRpdXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywKLSAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLAotICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVJpZ2h0UmFkaXVzCi0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9w
ZXJ0aWVzKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKTsKK0NTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBj
b25zdCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERp
cmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0RmxleEZsb3dMb25naGFuZCwgKGZsZXhG
bG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxvd1Byb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3Qg
aW50IG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgfTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9u
LCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1h
cmdpbkNvbGxhcHNlTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29s
bGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFw
c2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCwgKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5D
b2xsYXBzZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9u
Z2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10g
PSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5V2Via2l0TWFza1JlcGVhdCwgbWFza1JlcGVhdFByb3BlcnRpZXMpOworQ1NTUHJvcGVy
dHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
aW50IG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZURpcmVjdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50
LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAorICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlU3BlZWQKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgd2Via2l0TWFycXVlZUxvbmdoYW5kLCAobWFycXVlZVByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgobWFycXVlZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcnF1
ZWVMb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5k
KCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFza0F0dGFjaG1lbnQsCiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0NsaXAsCkBAIC0yMDcsNTAgKzMzMCwxNjEgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0
aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WQog
ICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2ssIG1hc2tQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tMb25naGFuZCwgKG1hc2tQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRN
YXNrTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRp
ZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAotICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dEFuaW1hdGlvbkRlbGF5LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJh
dGlvbkNvdW50LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwK
LSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25z
dCBpbnQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQ
b3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hh
bmQsIChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQb3NpdGlv
blByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kOwor
fQorCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1JlcGVh
dExvbmdoYW5kLCAobWFza1JlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Jl
cGVhdFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZDsK
K30KKworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQoKQor
eworICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0geworICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLAorICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uLCBhbmltYXRp
b25Qcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kLCAodGV4dEVtcGhhc2lzUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSCh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3
ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZDsKK30KKworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0VGV4dFN0cm9rZUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHRleHRTdHJv
a2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kLCAodGV4dFN0cm9r
ZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dFN0cm9rZVByb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50
IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvblByb3BlcnR5LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EdXJh
dGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24s
CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5CiAgICAgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VHJh
bnNpdGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kLCAodHJhbnNpdGlv
blByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNpdGlvblByb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZDsKK30KIAorQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25z
dCBpbnQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNm
b3JtT3JpZ2luWQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5k
TWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwgdHJhbnNmb3JtT3JpZ2luUHJv
cGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3
ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcykpKTsKKyAgICByZXR1
cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3Qg
aW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXNDb2xvciwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFz
aXNTdHlsZQorQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0V3JhcExvbmdoYW5kKCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgaW50IHdlYmtpdFdyYXBQcm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcE1h
cmdpbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZwogICAgIH07Ci0gICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpcywgdGV4dEVtcGhhc2lzUHJvcGVydGllcyk7Ci0KLSAgICAjdW5kZWYgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHdlYmtpdFdyYXBMb25naGFuZCwgKHdlYmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRXcmFw
TG9uZ2hhbmQ7CiB9CiAKLUNTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShp
bnQgcHJvcGVydHlJRCkKKy8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkg
aXMgbm90IGEgc2hvcnRoYW5kCitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZEZvclByb3Bl
cnR5KGludCBwcm9wZXJ0eUlEKQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5k
TWFwLCBzaG9ydGhhbmRNYXAsICgpKTsKLSAgICBpZiAoc2hvcnRoYW5kTWFwLmlzRW1wdHkoKSkK
LSAgICAgICAgaW5pdFNob3J0aGFuZE1hcChzaG9ydGhhbmRNYXApOwotCi0gICAgcmV0dXJuIHNo
b3J0aGFuZE1hcC5nZXQocHJvcGVydHlJRCk7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5k
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgorICAg
ICAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKKyAgICAgICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRM
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6CisgICAgICAgIHJldHVybiBi
b3JkZXJMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206CisgICAg
ICAgIHJldHVybiBib3JkZXJCb3R0b21Mb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJDb2xvcjoKKyAgICAgICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQoKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6CisgICAgICAgIHJldHVybiBib3JkZXJJbWFnZUxv
bmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CisgICAgICAgIHJldHVy
biBib3JkZXJMZWZ0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
OgorICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAgICAgIHJldHVybiBib3JkZXJSaWdodExvbmdoYW5kKCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNwYWNpbmc6CisgICAgICAgIHJldHVybiBib3Jk
ZXJTcGFjaW5nTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6Cisg
ICAgICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclRvcDoKKyAgICAgICAgcmV0dXJuIGJvcmRlclRvcExvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAgICAgICByZXR1cm4gYm9yZGVyV2lkdGhMb25n
aGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlMaXN0U3R5bGU6CisgICAgICAgIHJldHVybiBs
aXN0U3R5bGVMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgorICAgICAgICBy
ZXR1cm4gZm9udExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICAg
ICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6
CisgICAgICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3ZlcmZsb3c6CisgICAgICAgIHJldHVybiBvdmVyZmxvd0xvbmdoYW5kKCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgICAgIHJldHVybiBwYWRkaW5nTG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0
QW5pbWF0aW9uTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0
ZXI6CisgICAgICAgIHJldHVybiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJv
cmRlckJlZm9yZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVu
ZDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCk7CisgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0OgorICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVy
U3RhcnRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6
CisgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5zOgorICAgICAgICByZXR1cm4gd2Via2l0Q29sdW1uc0xvbmdoYW5k
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6CisgICAgICAgIHJldHVy
biB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
RmxleEZsb3c6CisgICAgICAgIHJldHVybiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOgorICAgICAgICByZXR1cm4gd2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXJxdWVlOgorICAgICAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6CisgICAgICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uOgorICAgICAgICBy
ZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFza1JlcGVhdDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6CisgICAgICAgIHJl
dHVybiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0U3Ryb2tlOgorICAgICAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5k
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CisgICAgICAgIHJldHVy
biB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNmb3JtT3JpZ2luOgorICAgICAgICByZXR1cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9u
Z2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJu
IHdlYmtpdFdyYXBMb25naGFuZCgpOworICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBkZWZhdWx0TG9uZ2hhbmQsICgpKTsKKyAg
ICAgICAgcmV0dXJuIGRlZmF1bHRMb25naGFuZDsKKyAgICB9CisgICAgfQogfQogCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5o
CmluZGV4IDk2MzNjMDI1YWJmZGFhMmM3ZDljOGYzNGU0MjI2Y2ExZDEzYjFkNDMuLjY4NDRlY2E3
NmU1ZWMzNzk2NzEwN2M0YmUyMTY1YWUwZGU4Njk1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtNDUsOCArNDUsNDcgQEAgcHJpdmF0ZToKICAgICB1bnNp
Z25lZCBtX2xlbmd0aDsKIH07CiAKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25n
aGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQo
KTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOworQ1NT
UHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlckJvdHRvbUxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xv
ckxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFnZUxvbmdoYW5kKCk7
CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBi
b3JkZXJSaWdodExvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5n
TG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsK
K0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0
U3R5bGVMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCk7CitD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFu
ZCYgb3V0bGluZUxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBvdmVyZmxvd0xvbmdo
YW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKTsKK0NTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyRW5kTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0
YXJ0TG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtbnNMb25naGFu
ZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCk7CitD
U1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCk7CitDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdE1hc2tMb25naGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0
aW9uTG9uZ2hhbmQoKTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25n
aGFuZCgpOworQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQo
KTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpOworQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCk7CitDU1NQcm9wZXJ0
eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgpOworQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0V3JhcExvbmdoYW5kKCk7CisKIC8vIFJldHVybnMgYW4gZW1wdHkgbGlz
dCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kCi1DU1NQcm9wZXJ0eUxvbmdoYW5k
IGxvbmdoYW5kRm9yUHJvcGVydHkoaW50KTsKK0NTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5k
Rm9yUHJvcGVydHkoaW50KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133247</attachid>
            <date>2012-03-22 06:51:45 -0700</date>
            <delta_ts>2012-03-22 07:14:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81587-20120322105128.patch</filename>
            <type>text/plain</type>
            <size>51474</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uYjgyYTQyOTBjMmI1N2Q3ZTcwNzMwYTA4OGE4MzM3
ZTI1MDQ2M2MyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uODFmNDE5Mzk0NzZlNTA2NTc3
MzVlNjQwMTdmNzUyM2YyM2FjNTI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3Miw5
ICsyMjY3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBpZiAo
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0
aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCiAg
ICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRo
ZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQp
OwpAQCAtMjI4NCwxMDMgKzIyNzcsNDQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUn
IHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHBy
b3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBib3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRo
JyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlclJpZ2h0TG9uZ2hh
bmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAg
ICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29s
b3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwK
LSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQp
OwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9y
ZGVyU3RhcnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8g
WyAnb3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0g
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9y
dGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRs
aW5lTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBi
b3JkZXJDb2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCkucHJvcGVydGll
cygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAg
ICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3Jk
ZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBp
bXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1h
cmdpbkxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVz
LCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQs
IHBhZGRpbmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9u
dC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWln
aHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVu
dSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBA
IC0yMzkwLDI0ICsyMzI0LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRh
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAg
cmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ1LDggQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRp
ZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0
RW1waGFzaXNMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNT
dHlsZShpbXBvcnRhbnQpOwpAQCAtMjQ2NywxMCArMjM4OCw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5
V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
V3JhcExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwxOCArMjY3NCwxMCBAQCB2b2lk
IENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9y
dGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsg
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUg
fTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVy
dGllcyk7Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0
aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbik7CiAKLSAgICBib29sIHBhcnNlZFByb3BlcnR5W251
bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBh
cyBuZWNlc3NhcnkKKyAgICBib29sIHBhcnNlZFByb3BlcnR5WzddID0geyBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSB9OwogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWVzW251bVByb3BlcnRpZXNdOwogCiAgICAgaW50IGk7CkBAIC0yNzkwLDcgKzI3MDEs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRh
bnQpCiAgICAgICAgIGZvciAoaSA9IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4OyAhZm91bmQg
JiYgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9w
ZXJ0eVtpXSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAg
ICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmlt
YXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgewogICAgICAgICAgICAgICAg
ICAgICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAxOwogICAgICAgICAgICAgICAgICAgICBh
ZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwpAQCAtMjgxMiwyMiAr
MjcyMywxOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBp
bXBvcnRhbnQpCiAKICAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3Vu
ZC4KICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQotICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwor
ICAgICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMo
KVtpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVl
OwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1w
b3J0YW50KQogewotICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNpdGlvblByb3BlcnR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRl
bGF5IH07Ci0gICAgY29uc3QgaW50IG51bVByb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKHBy
b3BlcnRpZXMpOworICAgIGNvbnN0IGludCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0VHJhbnNpdGlv
bkxvbmdoYW5kKCkubGVuZ3RoKCk7CiAKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pOwogCi0gICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtu
dW1Qcm9wZXJ0aWVzXSA9IHsgZmFsc2UgfTsgLy8gY29tcGlsZXIgd2lsbCByZXBlYXQgZmFsc2Ug
YXMgbmVjZXNzYXJ5CisgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVs0XSA9IHsgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UgfTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tudW1Qcm9wZXJ0
aWVzXTsKIAogICAgIGludCBpOwpAQCAtMjg0OSw3ICsyNzU2LDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgZm9yIChp
ID0gMDsgIWZvdW5kICYmIGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsKICAgICAgICAgICAgIGlm
ICghcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHZhbDsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eShwcm9wZXJ0
aWVzW2ldLCB2YWwpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVy
dHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWwpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNl
KCkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI4NzAsMTIgKzI3NzcsMTIgQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIAogICAgIC8v
IE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9IDA7
IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNb
aV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5
KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsdWVzW2ldLnJl
bGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1Bh
cnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCBp
bnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VT
aG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQs
IGJvb2wgaW1wb3J0YW50KQogewogICAgIC8vIFdlIHRyeSB0byBtYXRjaCBhcyBtYW55IHByb3Bl
cnRpZXMgYXMgcG9zc2libGUKICAgICAvLyBXZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMg
dG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKQEAgLTI4ODgsOCArMjc5NSw4
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQg
KnByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0CiAKICAgICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1
cnJlbnQoKSkgewogICAgICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKGludCBwcm9w
SW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbnVtUHJvcGVydGllczsgKytwcm9wSW5k
ZXgpIHsKLSAgICAgICAgICAgIGlmICghZm5kW3Byb3BJbmRleF0gJiYgcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpIHsKKyAgICAgICAgZm9yIChpbnQgcHJvcElu
ZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK3Byb3BJ
bmRleCkgeworICAgICAgICAgICAgaWYgKCFmbmRbcHJvcEluZGV4XSAmJiBwYXJzZVZhbHVlKGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtwcm9wSW5kZXhdLCBpbXBvcnRhbnQpKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGZuZFtwcm9wSW5kZXhdID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0aWVzUGFyc2VkKys7CiAgICAgICAgICAgICB9CkBAIC0yOTAxLDE0ICsyODA4
LDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBp
bnQgKnByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXNQYXJzZWQgPT0gbnVtUHJvcGVydGllcykKKyAg
ICBpZiAocHJvcGVydGllc1BhcnNlZCA9PSBsb25naGFuZC5sZW5ndGgoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAvLyBGaWxsIGluIGFueSByZW1haW5pbmcgcHJvcGVydGllcyB3aXRo
IHRoZSBpbml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29wZSh0aGlz
LCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVByb3BlcnRp
ZXM7ICsraSkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsr
aSkgewogICAgICAgICBpZiAoIWZuZFtpXSkKLSAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBp
bXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVydHkobG9uZ2hhbmQucHJvcGVydGllcygp
W2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0
YW50KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRl
eCA0NWM1YTQ0MjU1NzNlZDI4NDAxMTdiZWE2ZDcyMDkwZGIzMTY0ZWMxLi5hNWEyMzhjMWQxOThk
ZGIwM2YxNzgxNmZjMWIyNWE0NWU2YjFlNzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC00
NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CitjbGFzcyBDU1NQcm9wZXJ0eUxv
bmdoYW5kOwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xhc3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBD
U1NSdWxlOwpAQCAtODcsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVz
KCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAogICAg
IGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBw
YXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGludCBudW1Q
cm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQs
IGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmLCBib29sKTsKICAgICBib29sIHBhcnNlNFZhbHVl
cyhpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKICAg
ICBib29sIHBhcnNlQ29udGVudChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9v
bCBwYXJzZVF1b3RlcyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKaW5kZXggMGQwM2IyMGJmZDQ1MTZmY2M3Zjlj
NTMxMTIxNzMxYjc1ODAwYzFkYy4uMWI5NzEyMWZkYjE2OWVkMDg5ZTVhZmZkNjc2ODA3MjAzNDQ2
Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcApAQCAt
MjIsNTAgKzIyLDcxIEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlMb25naGFuZC5oIgogCiAjaW5j
bHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVk
ZWYgSGFzaE1hcDxpbnQsIENTU1Byb3BlcnR5TG9uZ2hhbmQ+IFNob3J0aGFuZE1hcDsKKy8vIEZJ
WE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6ZSB0byB0aGUgc2hvcnRoYW5kLgorY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IGJhY2tncm91bmRQcm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENs
aXAsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLAorICAgICAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRJbWFnZSwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2lu
LAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsCisgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UmVwZWF0WCwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WQorICAgIH07Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3JvdW5kTG9u
Z2hhbmQsIChiYWNrZ3JvdW5kUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5k
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZExvbmdoYW5kOworfQogCi1zdGF0
aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQorY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKQogewot
ICAgICNkZWZpbmUgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkobWFwLCBwcm9wSUQsIGFycmF5KSBc
Ci0gICAgICAgIG1hcC5zZXQocHJvcElELCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGFycmF5LCBXVEZf
QVJSQVlfTEVOR1RIKGFycmF5KSkpCisgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUG9z
aXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
U1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCwgKGJhY2tncm91
bmRQb3NpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFBvc2l0aW9u
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQ7Cit9
CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENT
U1Byb3BlcnR5Rm9udEZhbWlseSwKLSAgICAgICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKLSAgICAg
ICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQs
Ci0gICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKLSAgICAgICAgQ1NTUHJvcGVydHlMaW5l
SGVpZ2h0Ci0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5Rm9udCwgZm9udFByb3BlcnRpZXMpOwotCi0gICAgLy8gRG8gbm90IGNoYW5n
ZSB0aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRo
ZW0gdG9nZXRoZXIuCi0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNd
ID0gewotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKLSAgICAgICAgeyBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodFdpZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJC
b3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3Jk
ZXJCb3R0b21XaWR0aCB9LAotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGggfQot
ICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eUJvcmRlclRvcCwgYm9yZGVyUHJvcGVydGllc1swXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBib3JkZXJQcm9w
ZXJ0aWVzWzFdKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBib3JkZXJQcm9wZXJ0aWVzWzJdKTsKLSAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9y
ZGVyUHJvcGVydGllc1szXSk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5k
UmVwZWF0TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFJlcGVh
dFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kUmVwZWF0WSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kLCAoYmFja2dyb3VuZFJlcGVhdFBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMpKSk7
CisgICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZDsKK30KIAotICAgIHNob3J0aGFu
ZE1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXIsIENTU1Byb3BlcnR5TG9uZ2hhbmQoYm9yZGVyUHJv
cGVydGllc1swXSwgc2l6ZW9mKGJvcmRlclByb3BlcnRpZXMpIC8gc2l6ZW9mKGJvcmRlclByb3Bl
cnRpZXNbMF1bMF0pKSk7CisvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93
aW5nIGZvdXIgc2hvcnRoYW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KK2NvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50
IGJvcmRlclByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyTG9uZ2hhbmQsIChib3JkZXJQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IGJvcmRlckxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJC
b3R0b21Mb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJCb3R0b21Qcm9w
ZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IgfTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckJvdHRvbUxvbmdoYW5k
LCAoYm9yZGVyQm90dG9tUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJCb3R0b21Q
cm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJCb3R0b21Mb25naGFuZDsKK30KKworY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQ29sb3JMb25naGFuZCgpCit7CiAgICAgc3Rh
dGljIGNvbnN0IGludCBib3JkZXJDb2xvclByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJUb3BDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9y
LAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLAogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRDb2xvcgogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yLCBib3JkZXJDb2xvclByb3BlcnRp
ZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVy
Q29sb3JMb25naGFuZCwgKGJvcmRlckNvbG9yUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJDb2xvclByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7
Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckltYWdlTG9uZ2hhbmQoKQor
ewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVySW1hZ2VQcm9wZXJ0aWVzW10gPSB7CiAgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2UsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVySW1hZ2VTbGljZSwKQEAgLTczLDEzMCArOTQsMjMyIEBAIHN0YXRpYyB2b2lkIGluaXRTaG9y
dGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVySW1hZ2VPdXRzZXQsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQK
ICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlCb3JkZXJJbWFnZSwgYm9yZGVySW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckltYWdlTG9uZ2hhbmQsIChib3Jk
ZXJJbWFnZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVySW1hZ2VQcm9wZXJ0aWVz
KSkpOworICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBp
bnQgYm9yZGVyTGVmdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgs
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyTGVm
dExvbmdoYW5kLCAoYm9yZGVyTGVmdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVy
TGVmdFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckxlZnRMb25naGFuZDsKK30KKwor
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKQoreworICAg
IHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0geworICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
clRvcExlZnRSYWRpdXMsCisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1
cywKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cworICAgIH07Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJSYWRpdXNM
b25naGFuZCwgKGJvcmRlclJhZGl1c1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVy
UmFkaXVzUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyUmFkaXVzTG9uZ2hhbmQ7Cit9
CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmlnaHRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJvcmRlclJpZ2h0TG9uZ2hhbmQsIChib3JkZXJSaWdodFByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUmlnaHRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBi
b3JkZXJSaWdodExvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJTcGFjaW5nTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3BhY2lu
Z1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2lu
ZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclNwYWNpbmdMb25naGFuZCwg
KGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclNwYWNpbmdQ
cm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQ7Cit9CiAKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKQorewogICAgIHN0
YXRpYyBjb25zdCBpbnQgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyVG9wU3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHls
ZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0U3R5bGUKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgYm9yZGVyU3R5bGVQcm9wZXJ0
aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRl
clN0eWxlTG9uZ2hhbmQsIChib3JkZXJTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
Ym9yZGVyU3R5bGVQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdoYW5k
OworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFuZCgpCit7
CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJUb3BQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyVG9wQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJvcmRlclRvcExvbmdoYW5kLCAoYm9yZGVyVG9wUHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChib3JkZXJUb3BQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJUb3BMb25n
aGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyV2lkdGhMb25naGFu
ZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJXaWR0aFByb3BlcnRpZXNbXSA9IHsK
ICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLAog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aAogICAgIH07Ci0gICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoLCBib3Jk
ZXJXaWR0aFByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUG9z
aXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwgYmFja2dyb3Vu
ZFBvc2l0aW9uUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRS
ZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdCwgYmFja2dyb3VuZFJlcGVh
dFByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2luZyB9OwotICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nLCBib3JkZXJT
cGFjaW5nUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhGbG93UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0RmxleFdyYXAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3csIGZsZXhGbG93UHJvcGVydGllcyk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJXaWR0aExvbmdoYW5k
LCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlcldpZHRoUHJv
cGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyV2lkdGhMb25naGFuZDsKK30KIAorY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbGlzdFN0eWxlTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBj
b25zdCBpbnQgbGlzdFN0eWxlUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUxp
c3RTdHlsZUltYWdlLAorICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUsCiAgICAgICAg
IENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0gICAgICAgIENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZQorICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlCisgICAgfTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5k
LCAobGlzdFN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBsaXN0U3R5bGVMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGZv
bnRQcm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwKKyAgICAg
ICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKKyAgICAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCisg
ICAgICAgIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFdl
aWdodCwKKyAgICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0CiAgICAgfTsKLSAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5TGlzdFN0eWxlLCBsaXN0
U3R5bGVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZv
bnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBmb250TG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIG1hcmdpbkxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3Qg
aW50IG1hcmdpblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Ub3As
CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCiAgICAgICAgIENTU1Byb3BlcnR5TWFy
Z2luQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkxlZnQKICAgICB9OwotICAgIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlNYXJnaW4sIG1h
cmdpblByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Db2xsYXBzZVBy
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NT
UHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07Ci0gICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBt
YXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVl
UHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rp
b24sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKLSAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlU3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVk
Ci0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZSwgbWFycXVlZVByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgbWFyZ2luTG9uZ2hhbmQsIChtYXJnaW5Qcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcmdpblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IG1hcmdpbkxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBvdXRsaW5l
TG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgb3V0bGluZVByb3BlcnRpZXNbXSA9
IHsKLSAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCi0gICAgICAgIENTU1Byb3BlcnR5
T3V0bGluZU9mZnNldCwKKyAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lV2lkdGgsCiAgICAgICAg
IENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0
aAorICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlP
dXRsaW5lT2Zmc2V0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5T3V0bGluZSwgb3V0bGluZVByb3BlcnRpZXMpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3V0bGluZUxvbmdoYW5kLCAob3V0
bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgob3V0bGluZVByb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFu
ZCYgb3ZlcmZsb3dMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBvdmVyZmxvd1By
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZ
IH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBvdmVyZmxv
d0xvbmdoYW5kLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gb3ZlcmZsb3dMb25naGFuZDsKK30KIAorY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgcGFkZGluZ0xvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29u
c3QgaW50IHBhZGRpbmdQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGlu
Z1RvcCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nUmlnaHQsCiAgICAgICAgIENTU1Byb3Bl
cnR5UGFkZGluZ0JvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdAogICAgIH07
Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVBh
ZGRpbmcsIHBhZGRpbmdQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1By
b3BlcnR5TG9uZ2hhbmQsIHBhZGRpbmdMb25naGFuZCwgKHBhZGRpbmdQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKHBhZGRpbmdQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBwYWRkaW5nTG9u
Z2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IHdlYmtpdFdyYXBQcm9wZXJ0aWVzW10g
PSB7Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCi0gICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0V3JhcE1hcmdpbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGlu
ZworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQor
eworICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0geworICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsCisgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRHVyYXRpb24sCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24sCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXks
CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsCisgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLAorICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0V3JhcCwgd2Via2l0V3JhcFBy
b3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQsIChhbmltYXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGFuaW1hdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlv
bkxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCB0ZXh0U3Ryb2tlUHJvcGVydGll
c1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0U3Ryb2tlV2lkdGggfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZSwgdGV4dFN0cm9rZVByb3BlcnRpZXMp
OworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgp
Cit7CisgICAgY29uc3QgaW50IGJvcmRlckFmdGVyUHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5
bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJDb2xvciAgfTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQs
IChib3JkZXJBZnRlclByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQWZ0ZXJQcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kOworfQogCi0g
ICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0gewotICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDbGlwLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwKLSAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZE9yaWdpbiwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25YLAotICAgICAg
ICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksCi0gICAgICAgIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFJlcGVhdFgsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKLSAg
ICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kUHJvcGVydGllcyk7Citjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpCit7CisgICAgY29uc3QgaW50IGJv
cmRlckJlZm9yZVByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3Jl
V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlU3R5bGUsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyQmVmb3JlQ29sb3IgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCwgKGJvcmRlckJlZm9yZVBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQmVmb3JlUHJvcGVydGllcykpKTsKKyAg
ICByZXR1cm4gd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCkKK3sKKyAgICBjb25zdCBpbnQg
Ym9yZGVyRW5kUHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0
aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJFbmRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFu
ZCwgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQsIChib3JkZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlckVuZFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRl
ckVuZExvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3Jk
ZXJTdGFydExvbmdoYW5kKCkKK3sKKyAgICBjb25zdCBpbnQgYm9yZGVyU3RhcnRQcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Vi
a2l0Qm9yZGVyU3RhcnRTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydENvbG9yIH07
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3Jk
ZXJTdGFydExvbmdoYW5kLCAoYm9yZGVyU3RhcnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlclN0YXJ0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRM
b25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uc0xv
bmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGNvbHVtbnNQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291
bnQgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5V2Via2l0Q29sdW1ucywgY29sdW1uc1Byb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uc0xvbmdoYW5kLCAoY29sdW1u
c1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uc1Byb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50
IGNvbHVtblJ1bGVQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZUNvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwK
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5bGUsCi0gICAgICAgIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29s
dW1uUnVsZUNvbG9yLAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGUsIGNvbHVtblJ1bGVQcm9wZXJ0aWVz
KTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93WSB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlPdmVyZmxvdywgb3ZlcmZsb3dQ
cm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCwgKGNvbHVtblJ1bGVQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGNvbHVtblJ1bGVQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1
bW5SdWxlTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1By
b3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywK
LSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLAotICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tUmlnaHRSYWRpdXMKLSAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0
aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMp
OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpOworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgd2Via2l0RmxleEZsb3dMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNv
bnN0IGludCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGly
ZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kLCAoZmxleEZs
b3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZsZXhGbG93UHJvcGVydGllcykpKTsKKyAg
ICByZXR1cm4gd2Via2l0RmxleEZsb3dMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBp
bnQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb24s
IG1hc2tQb3NpdGlvblByb3BlcnRpZXMpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXJn
aW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5CZWZvcmVD
b2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXJnaW5Db2xsYXBz
ZUxvbmdoYW5kLCAobWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1h
cmdpbkNvbGxhcHNlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFyZ2luQ29sbGFw
c2VMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1JlcGVhdFByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LCBtYXNrUmVwZWF0UHJvcGVydGllcyk7Citjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKQoreworICAgIHN0
YXRpYyBjb25zdCBpbnQgbWFycXVlZVByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVJbmNyZW1lbnQsCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24s
CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLAorICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZAorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
U1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQsIChtYXJxdWVlUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJxdWVlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
d2Via2l0TWFycXVlZUxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRNYXNrTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Byb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrQXR0YWNobWVudCwKICAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwKQEAgLTIwNyw1MCArMzMwLDE2MSBAQCBzdGF0
aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLAogICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9y
dGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFzaywgbWFza1Byb3BlcnRpZXMpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza0xvbmdoYW5k
LCAobWFza1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Byb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdE1hc2tMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQg
YW5pbWF0aW9uUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbk5hbWUsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sCi0g
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sCi0gICAgICAg
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXksCi0gICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRGlyZWN0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxN
b2RlCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFu
ZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9z
aXRpb25ZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3
ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCwgKG1hc2tQb3NpdGlvblByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgobWFza1Bvc2l0aW9uUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0
TWFza1Bvc2l0aW9uTG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdE1hc2tSZXBlYXRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXNrUmVw
ZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9w
ZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQsIChtYXNrUmVwZWF0UHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUmVwZWF0UHJvcGVydGllcykpKTsKKyAgICByZXR1
cm4gd2Via2l0TWFza1JlcGVhdExvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGlu
dCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzU3R5bGUsCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
Q29sb3IKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwg
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24sIGFuaW1hdGlvblByb3BlcnRpZXMpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VGV4dEVtcGhhc2lz
TG9uZ2hhbmQsICh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRF
bXBoYXNpc1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdo
YW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9u
Z2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9
IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0VGV4
dFN0cm9rZUNvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQsICh0ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0
VGV4dFN0cm9rZUxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRUcmFuc2l0aW9uTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNpdGlv
blByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJv
cGVydHksCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25UaW1pbmdGdW5jdGlvbiwKICAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkKICAgICB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uLCB0
cmFuc2l0aW9uUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQsICh0cmFuc2l0aW9uUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
d2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0VHJhbnNmb3JtT3JpZ2luWCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5ZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAs
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luLCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0
aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtp
dFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kLCAodHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3
ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRFbXBoYXNpc0NvbG9yLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0
eWxlCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRXcmFwTG9uZ2hhbmQoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgd2Via2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFw
TWFyZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBQYWRkaW5nCiAgICAgfTsKLSAg
ICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0
VGV4dEVtcGhhc2lzLCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKTsKLQotICAgICN1bmRlZiBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgd2Via2l0V3JhcExvbmdoYW5kLCAod2Via2l0V3JhcFByb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgod2Via2l0V3JhcFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFdy
YXBMb25naGFuZDsKIH0KIAotQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZEZvclByb3BlcnR5
KGludCBwcm9wZXJ0eUlEKQorLy8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0
eSBpcyBub3QgYSBzaG9ydGhhbmQKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5k
Rm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiB7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
aG9ydGhhbmRNYXAsIHNob3J0aGFuZE1hcCwgKCkpOwotICAgIGlmIChzaG9ydGhhbmRNYXAuaXNF
bXB0eSgpKQotICAgICAgICBpbml0U2hvcnRoYW5kTWFwKHNob3J0aGFuZE1hcCk7Ci0KLSAgICBy
ZXR1cm4gc2hvcnRoYW5kTWFwLmdldChwcm9wZXJ0eUlEKTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKKyAgICAgICAgcmV0dXJuIGJh
Y2tncm91bmRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b246CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0OgorICAgICAgICByZXR1cm4gYmFja2dyb3Vu
ZFJlcGVhdExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKKyAgICAgICAg
cmV0dXJuIGJvcmRlckxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bToKKyAgICAgICAgcmV0dXJuIGJvcmRlckJvdHRvbUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckNvbG9yOgorICAgICAgICByZXR1cm4gYm9yZGVyQ29sb3JMb25naGFuZCgp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZToKKyAgICAgICAgcmV0dXJuIGJvcmRl
ckltYWdlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdDoKKyAgICAg
ICAgcmV0dXJuIGJvcmRlckxlZnRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJSYWRpdXM6CisgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNMb25naGFuZCgpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKKyAgICAgICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9u
Z2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKKyAgICAgICAgcmV0
dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJT
dHlsZToKKyAgICAgICAgcmV0dXJuIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgICAgICByZXR1cm4gYm9yZGVyVG9wTG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6CisgICAgICAgIHJldHVybiBib3JkZXJX
aWR0aExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZToKKyAgICAgICAg
cmV0dXJuIGxpc3RTdHlsZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUZvbnQ6Cisg
ICAgICAgIHJldHVybiBmb250TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5TWFyZ2lu
OgorICAgICAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
T3V0bGluZToKKyAgICAgICAgcmV0dXJuIG91dGxpbmVMb25naGFuZCgpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlPdmVyZmxvdzoKKyAgICAgICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKKyAgICAgICAgcmV0dXJuIHBhZGRpbmdMb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb246CisgICAgICAgIHJldHVy
biB3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRC
b3JkZXJBZnRlcjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlOgorICAgICAgICByZXR1cm4g
d2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyRW5kOgorICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnQ6CisgICAgICAgIHJldHVybiB3ZWJr
aXRCb3JkZXJTdGFydExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
clJhZGl1czoKKyAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5z
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZToKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRGbGV4RmxvdzoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQo
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQ29sbGFwc2U6CisgICAgICAgIHJl
dHVybiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWU6CisgICAgICAgIHJldHVybiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1h
c2tMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb246Cisg
ICAgICAgIHJldHVybiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCgpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgorICAgICAgICByZXR1cm4gd2Via2l0TWFza1JlcGVh
dExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpczoKKyAg
ICAgICAgcmV0dXJuIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tl
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbjoKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46CisgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOgorICAgICAg
ICByZXR1cm4gd2Via2l0V3JhcExvbmdoYW5kKCk7CisgICAgZGVmYXVsdDogeworICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGRlZmF1bHRMb25naGFuZCwg
KCkpOworICAgICAgICByZXR1cm4gZGVmYXVsdExvbmdoYW5kOworICAgIH0KKyAgICB9CiB9CiAK
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxv
bmdoYW5kLmgKaW5kZXggOTYzM2MwMjVhYmZkYWEyYzdkOWM4ZjM0ZTQyMjZjYTFkMTNiMWQ0My4u
OTFkNjg3NDhjMDBmYmM1ZDkwNTljZTY1NGQ5Nzg5N2EzMjhkMWQ2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCkBAIC00NSw4ICs0NSw0NyBAQCBwcml2YXRlOgog
ICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
YmFja2dyb3VuZExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3Jv
dW5kUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dy
b3VuZFJlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQm90dG9tTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckNvbG9yTG9uZ2hhbmQoKTsK
K2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckltYWdlTG9uZ2hhbmQoKTsKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxlZnRMb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIGJvcmRlclNwYWNpbmdMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
Ym9yZGVyU3R5bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
VG9wTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlcldpZHRoTG9u
Z2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxpc3RTdHlsZUxvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBmb250TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIG1hcmdpbkxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBvdXRsaW5lTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJm
bG93TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHBhZGRpbmdMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQo
KTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5k
KCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uc0xvbmdoYW5kKCk7Citj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKTsKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcnF1ZWVMb25naGFuZCgpOworY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRXcmFwTG9uZ2hhbmQoKTsKKwogLy8gUmV0dXJucyBhbiBl
bXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgYSBzaG9ydGhhbmQKLUNTU1Byb3BlcnR5
TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOworY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133253</attachid>
            <date>2012-03-22 07:14:38 -0700</date>
            <delta_ts>2012-03-22 07:39:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81587-20120322111420.patch</filename>
            <type>text/plain</type>
            <size>51494</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uYjgyYTQyOTBjMmI1N2Q3ZTcwNzMwYTA4OGE4MzM3
ZTI1MDQ2M2MyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uMWQyOTk2MTM4ZThiOTAzNWZl
Y2JjNTkyZjlhYWJhMDgxNDA3MGNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3Miw5
ICsyMjY3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBpZiAo
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0
aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCiAg
ICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRo
ZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQp
OwpAQCAtMjI4NCwxMDMgKzIyNzcsNDQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUn
IHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHBy
b3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBib3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRo
JyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlclJpZ2h0TG9uZ2hh
bmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAg
ICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29s
b3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwK
LSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQp
OwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9y
ZGVyU3RhcnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8g
WyAnb3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0g
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9y
dGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRs
aW5lTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBi
b3JkZXJDb2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCkucHJvcGVydGll
cygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAg
ICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3Jk
ZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBp
bXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1h
cmdpbkxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVz
LCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQs
IHBhZGRpbmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9u
dC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWln
aHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVu
dSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBA
IC0yMzkwLDI0ICsyMzI0LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRh
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAg
cmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ1LDggQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRp
ZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0
RW1waGFzaXNMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNT
dHlsZShpbXBvcnRhbnQpOwpAQCAtMjQ2NywxMCArMjM4OCw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5
V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
V3JhcExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwxOCArMjY3NCwxMCBAQCB2b2lk
IENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9y
dGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsg
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUg
fTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVy
dGllcyk7Ci0KKyAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IHdlYmtpdEFuaW1hdGlvbkxv
bmdoYW5kKCkubGVuZ3RoKCk7CiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb24pOwogCi0gICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtudW1Qcm9w
ZXJ0aWVzXSA9IHsgZmFsc2UgfTsgLy8gY29tcGlsZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMgbmVj
ZXNzYXJ5CisgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVs3XSA9IHsgZmFsc2UgfTsgLy8gQ29tcGls
ZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMgbmVjZXNzYXJ5LgogICAgIFJlZlB0cjxDU1NWYWx1ZT4g
dmFsdWVzW251bVByb3BlcnRpZXNdOwogCiAgICAgaW50IGk7CkBAIC0yNzkwLDcgKzI3MDEsNyBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQp
CiAgICAgICAgIGZvciAoaSA9IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4OyAhZm91bmQgJiYg
aSA8IG51bVByb3BlcnRpZXM7ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0
eVtpXSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAg
ICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRBbmltYXRp
b25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtpXSwgdmFsKSkgewogICAgICAgICAgICAgICAgICAg
ICBwYXJzZWRQcm9wZXJ0eVtpXSA9IGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAg
aW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAxOwogICAgICAgICAgICAgICAgICAgICBhZGRB
bmltYXRpb25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwpAQCAtMjgxMiwyMiArMjcy
MywxOCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBv
cnRhbnQpCiAKICAgICAvLyBOb3cgYWRkIGFsbCBvZiB0aGUgcHJvcGVydGllcyB3ZSBmb3VuZC4K
ICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgaSsrKQotICAgICAgICBhZGRQcm9w
ZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOworICAg
ICAgICBhZGRQcm9wZXJ0eSh3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtp
XSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0
YW50KQogewotICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvblByb3BlcnR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5
IH07Ci0gICAgY29uc3QgaW50IG51bVByb3BlcnRpZXMgPSBXVEZfQVJSQVlfTEVOR1RIKHByb3Bl
cnRpZXMpOworICAgIGNvbnN0IGludCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0VHJhbnNpdGlvbkxv
bmdoYW5kKCkubGVuZ3RoKCk7CiAKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb24pOwogCi0gICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtudW1Q
cm9wZXJ0aWVzXSA9IHsgZmFsc2UgfTsgLy8gY29tcGlsZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMg
bmVjZXNzYXJ5CisgICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVs0XSA9IHsgZmFsc2UgfTsgLy8gQ29t
cGlsZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMgbmVjZXNzYXJ5LgogICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWVzW251bVByb3BlcnRpZXNdOwogCiAgICAgaW50IGk7CkBAIC0yODQ5LDcgKzI3NTYs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBmb3IgKGkgPSAwOyAhZm91bmQgJiYgaSA8IG51bVByb3BlcnRpZXM7ICsr
aSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewogICAgICAgICAgICAg
ICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsOwotICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1h
dGlvblByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cGFyc2VBbmltYXRpb25Qcm9wZXJ0eSh3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKS5wcm9wZXJ0
aWVzKClbaV0sIHZhbCkpIHsKICAgICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0g
PSBmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZh
bHVlc1tpXSwgdmFsLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjg3MCwxMiAr
Mjc3NywxMiBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wg
aW1wb3J0YW50KQogCiAgICAgLy8gTm93IGFkZCBhbGwgb2YgdGhlIHByb3BlcnRpZXMgd2UgZm91
bmQuCiAgICAgZm9yIChpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgYWRk
UHJvcGVydHkocHJvcGVydGllc1tpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsK
KyAgICAgICAgYWRkUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGll
cygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25z
dCBpbnQgKnByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKK2Jv
b2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBsb25naGFuZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gV2UgdHJ5IHRv
IG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBhcyBwb3NzaWJsZQogICAgIC8vIFdlIHNldCB1cCBh
biBhcnJheSBvZiBib29sZWFucyB0byBtYXJrIHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5k
LApAQCAtMjg4OCw4ICsyNzk1LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGlu
dCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnQKIAogICAgIHdo
aWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CiAgICAgICAgIGZvdW5kID0gZmFsc2U7Ci0g
ICAgICAgIGZvciAoaW50IHByb3BJbmRleCA9IDA7ICFmb3VuZCAmJiBwcm9wSW5kZXggPCBudW1Q
cm9wZXJ0aWVzOyArK3Byb3BJbmRleCkgewotICAgICAgICAgICAgaWYgKCFmbmRbcHJvcEluZGV4
XSAmJiBwYXJzZVZhbHVlKHByb3BlcnRpZXNbcHJvcEluZGV4XSwgaW1wb3J0YW50KSkgeworICAg
ICAgICBmb3IgKGludCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbG9uZ2hh
bmQubGVuZ3RoKCk7ICsrcHJvcEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWZuZFtwcm9wSW5k
ZXhdICYmIHBhcnNlVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGltcG9y
dGFudCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNQYXJzZWQrKzsKICAgICAgICAgICAg
IH0KQEAgLTI5MDEsMTQgKzI4MDgsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5k
KGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnQKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGllc1BhcnNlZCA9
PSBudW1Qcm9wZXJ0aWVzKQorICAgIGlmIChwcm9wZXJ0aWVzUGFyc2VkID09IGxvbmdoYW5kLmxl
bmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZpbGwgaW4gYW55IHJlbWFp
bmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgSW1wbGljaXRTY29w
ZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBs
b25naGFuZC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgIGlmICghZm5kW2ldKQotICAgICAgICAg
ICAgYWRkUHJvcGVydHkocHJvcGVydGllc1tpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxp
Y2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CisgICAgICAgICAgICBhZGRQcm9wZXJ0eShs
b25naGFuZC5wcm9wZXJ0aWVzKClbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdElu
aXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCmluZGV4IDQ1YzVhNDQyNTU3M2VkMjg0MDExN2JlYTZkNzIwOTBkYjMx
NjRlYzEuLmE1YTIzOGMxZDE5OGRkYjAzZjE3ODE2ZmMxYjI1YTQ1ZTZiMWU3NDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU7CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsK
K2NsYXNzIENTU1Byb3BlcnR5TG9uZ2hhbmQ7CiBjbGFzcyBDU1NWYWx1ZVBvb2w7CiBjbGFzcyBD
U1NQcm9wZXJ0eTsKIGNsYXNzIENTU1J1bGU7CkBAIC04Nyw3ICs4OCw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc1Byb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVz
LmlzRW1wdHkoKTsgfQogCiAgICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KTsKLSAgICBib29sIHBhcnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCog
cHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29s
IHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYsIGJvb2wpOwog
ICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCogcHJvcGVydGllcywg
Ym9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VDb250ZW50KGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlUXVvdGVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAppbmRleCAw
ZDAzYjIwYmZkNDUxNmZjYzdmOWM1MzExMjE3MzFiNzU4MDBjMWRjLi4xYjk3MTIxZmRiMTY5ZWQw
ODllNWFmZmQ2NzY4MDcyMDM0NDZiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlMb25naGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5TG9uZ2hhbmQuY3BwCkBAIC0yMiw1MCArMjIsNzEgQEAKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eUxvbmdoYW5kLmgiCiAKICNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVzLmgiCi0jaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPGludCwgQ1NTUHJvcGVydHlMb25naGFuZD4g
U2hvcnRoYW5kTWFwOworLy8gRklYTUU6IEFkZCBDU1NQcm9wZXJ0eUJhY2tncm91bmRTaXplIHRv
IHRoZSBzaG9ydGhhbmQuCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9u
Z2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9
IHsKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKKyAgICAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3IsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAorICAgICAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRPcmlnaW4sCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWCwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAorICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRZCisgICAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJhY2tncm91bmRMb25naGFuZCwgKGJhY2tncm91bmRQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJhY2tncm91bmRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBiYWNrZ3JvdW5k
TG9uZ2hhbmQ7Cit9CiAKLXN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFw
JiBzaG9ydGhhbmRNYXApCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUG9z
aXRpb25Mb25naGFuZCgpCiB7Ci0gICAgI2RlZmluZSBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWSht
YXAsIHByb3BJRCwgYXJyYXkpIFwKLSAgICAgICAgbWFwLnNldChwcm9wSUQsIENTU1Byb3BlcnR5
TG9uZ2hhbmQoYXJyYXksIFdURl9BUlJBWV9MRU5HVEgoYXJyYXkpKSkKKyAgICBzdGF0aWMgY29u
c3QgaW50IGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91bmRQb3NpdGlv
bkxvbmdoYW5kLCAoYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdU
SChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBiYWNrZ3JvdW5k
UG9zaXRpb25Mb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgZm9udFByb3BlcnRp
ZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlGb250RmFtaWx5LAotICAgICAgICBDU1NQcm9w
ZXJ0eUZvbnRTaXplLAotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRTdHlsZSwKLSAgICAgICAgQ1NT
UHJvcGVydHlGb250VmFyaWFudCwKLSAgICAgICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0LAotICAg
ICAgICBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQKLSAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlGb250LCBmb250UHJvcGVydGllcyk7Ci0K
LSAgICAvLyBEbyBub3QgY2hhbmdlIHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hv
cnRoYW5kcywgYW5kIGtlZXAgdGhlbSB0b2dldGhlci4KLSAgICBzdGF0aWMgY29uc3QgaW50IGJv
cmRlclByb3BlcnRpZXNbNF1bM10gPSB7Ci0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BD
b2xvciwgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0
aCB9LAotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGggfSwKLSAgICAgICAg
eyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoIH0sCi0gICAgICAgIHsgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRXaWR0aCB9Ci0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBib3JkZXJQcm9wZXJ0aWVzWzBdKTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9y
ZGVyUmlnaHQsIGJvcmRlclByb3BlcnRpZXNbMV0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sIGJvcmRlclByb3BlcnRp
ZXNbMl0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0LCBib3JkZXJQcm9wZXJ0aWVzWzNdKTsKK2NvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0
IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91
bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQs
IChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5k
UmVwZWF0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5k
OworfQogCi0gICAgc2hvcnRoYW5kTWFwLnNldChDU1NQcm9wZXJ0eUJvcmRlciwgQ1NTUHJvcGVy
dHlMb25naGFuZChib3JkZXJQcm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGllcykg
LyBzaXplb2YoYm9yZGVyUHJvcGVydGllc1swXVswXSkpKTsKKy8vIERvIG5vdCBjaGFuZ2UgdGhl
IG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgZm91ciBzaG9ydGhhbmRzLCBhbmQga2VlcCB0aGVtIHRv
Z2V0aGVyLgorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJv
cmRlcldpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckNvbG9y
IH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJM
b25naGFuZCwgKGJvcmRlclByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUHJvcGVy
dGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJvcmRlckJvdHRvbUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlckJvdHRvbVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21X
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21Db2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
Ym9yZGVyQm90dG9tTG9uZ2hhbmQsIChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKGJvcmRlckJvdHRvbVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckJvdHRv
bUxvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJDb2xvckxv
bmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckNvbG9yUHJvcGVydGllc1td
ID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLAogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29s
b3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yCiAgICAgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3Is
IGJvcmRlckNvbG9yUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBib3JkZXJDb2xvckxvbmdoYW5kLCAoYm9yZGVyQ29sb3JQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckNvbG9yUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
Ym9yZGVyQ29sb3JMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVySW1hZ2VMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJJbWFnZVBy
b3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNvdXJjZSwKICAg
ICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZVNsaWNlLApAQCAtNzMsMTMwICs5NCwyMzIgQEAg
c3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkK
ICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZU91dHNldCwKICAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJJbWFnZVJlcGVhdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckltYWdlLCBib3JkZXJJbWFnZVByb3BlcnRp
ZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVy
SW1hZ2VMb25naGFuZCwgKGJvcmRlckltYWdlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChi
b3JkZXJJbWFnZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQ7
Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxlZnRMb25naGFuZCgpCit7
CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJMZWZ0UHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCBib3JkZXJMZWZ0TG9uZ2hhbmQsIChib3JkZXJMZWZ0UHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChib3JkZXJMZWZ0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVy
TGVmdExvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRp
dXNMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJSYWRpdXNQcm9wZXJ0
aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsCisgICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21MZWZ0UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJp
Z2h0UmFkaXVzCisgICAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGJvcmRlclJhZGl1c0xvbmdoYW5kLCAoYm9yZGVyUmFkaXVzUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3Jk
ZXJSYWRpdXNMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
UmlnaHRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJSaWdodFByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRl
clJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xvciB9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyUmlnaHRMb25naGFuZCwgKGJv
cmRlclJpZ2h0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJSaWdodFByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGJvcmRlclNwYWNpbmdMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3Bh
Y2luZyB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9y
ZGVyU3BhY2luZ0xvbmdoYW5kLCAoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclNwYWNp
bmdMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3R5bGVM
b25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJTdHlsZVByb3BlcnRpZXNb
XSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BTdHlsZSwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodFN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0
eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZQogICAgIH07Ci0gICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclN0eWxl
LCBib3JkZXJTdHlsZVByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgYm9yZGVyU3R5bGVMb25naGFuZCwgKGJvcmRlclN0eWxlUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdHlsZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IGJvcmRlclN0eWxlTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJv
cmRlclRvcExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclRvcFByb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJU
b3BTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciB9OworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyVG9wTG9uZ2hhbmQsIChib3JkZXJUb3BQ
cm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclRvcFByb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIGJvcmRlclRvcExvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJXaWR0aExvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlcldp
ZHRoUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLAog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRoCiAg
ICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3Bl
cnR5Qm9yZGVyV2lkdGgsIGJvcmRlcldpZHRoUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29u
c3QgaW50IGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25YLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblkgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uLCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBj
b25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVw
ZWF0LCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50
IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9y
aXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07
Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJv
cmRlclNwYWNpbmcsIGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25z
dCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVj
dGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdywgZmxleEZsb3dQ
cm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IGJvcmRlcldpZHRoTG9uZ2hhbmQsIChib3JkZXJXaWR0aFByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJXaWR0aExv
bmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsaXN0U3R5bGVMb25naGFu
ZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBsaXN0U3R5bGVQcm9wZXJ0aWVzW10gPSB7Ci0g
ICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UsCisgICAgICAgIENTU1Byb3BlcnR5TGlz
dFN0eWxlVHlwZSwKICAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAg
ICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlCisgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxl
SW1hZ2UKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFu
ZCwgbGlzdFN0eWxlTG9uZ2hhbmQsIChsaXN0U3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKGxpc3RTdHlsZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGxpc3RTdHlsZUxvbmdoYW5k
OworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBmb250TG9uZ2hhbmQoKQoreworICAg
IHN0YXRpYyBjb25zdCBpbnQgZm9udFByb3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVy
dHlGb250RmFtaWx5LAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRTaXplLAorICAgICAgICBDU1NQ
cm9wZXJ0eUZvbnRTdHlsZSwKKyAgICAgICAgQ1NTUHJvcGVydHlGb250VmFyaWFudCwKKyAgICAg
ICAgQ1NTUHJvcGVydHlGb250V2VpZ2h0LAorICAgICAgICBDU1NQcm9wZXJ0eUxpbmVIZWlnaHQK
ICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlMaXN0U3R5bGUsIGxpc3RTdHlsZVByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgZm9udExvbmdoYW5kLCAoZm9udFByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoZm9udFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGZvbnRMb25n
aGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKQor
ewogICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luUHJvcGVydGllc1tdID0gewogICAgICAgICBD
U1NQcm9wZXJ0eU1hcmdpblRvcCwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwKICAg
ICAgICAgQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2lu
TGVmdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBD
U1NQcm9wZXJ0eU1hcmdpbiwgbWFyZ2luUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3Qg
aW50IG1hcmdpbkNvbGxhcHNlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdp
bkJlZm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVyQ29sbGFwc2UgfTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Vi
a2l0TWFyZ2luQ29sbGFwc2UsIG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0
aWMgY29uc3QgaW50IG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZURpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVl
SW5jcmVtZW50LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAot
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHlsZSwKLSAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRNYXJxdWVlU3BlZWQKLSAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlLCBtYXJxdWVlUHJvcGVydGll
cyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBtYXJnaW5M
b25naGFuZCwgKG1hcmdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFyZ2luUHJvcGVy
dGllcykpKTsKKyAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBv
dXRsaW5lUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwK
LSAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0LAorICAgICAgICBDU1NQcm9wZXJ0eU91
dGxpbmVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGUsCi0gICAgICAgIENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoCisgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLAor
ICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQKICAgICB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlPdXRsaW5lLCBvdXRsaW5lUHJv
cGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBv
dXRsaW5lTG9uZ2hhbmQsIChvdXRsaW5lUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChvdXRs
aW5lUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gb3V0bGluZUxvbmdoYW5kOworfQorCitjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMg
Y29uc3QgaW50IG92ZXJmbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwg
Q1NTUHJvcGVydHlPdmVyZmxvd1kgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIG92ZXJmbG93TG9uZ2hhbmQsIChvdmVyZmxvd1Byb3BlcnRpZXMsIFdURl9B
UlJBWV9MRU5HVEgob3ZlcmZsb3dQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBvdmVyZmxvd0xv
bmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQo
KQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgcGFkZGluZ1Byb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdo
dCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0
eVBhZGRpbmdMZWZ0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5UGFkZGluZywgcGFkZGluZ1Byb3BlcnRpZXMpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgcGFkZGluZ0xvbmdoYW5kLCAocGFk
ZGluZ1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgocGFkZGluZ1Byb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHBhZGRpbmdMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgd2Vi
a2l0V3JhcFByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxv
dywKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFdyYXBQYWRkaW5nCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRB
bmltYXRpb25Mb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBhbmltYXRpb25Qcm9w
ZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKKyAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKKyAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25EZWxheSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25J
dGVyYXRpb25Db3VudCwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rp
b24sCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUKICAgICB9Owot
ICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJr
aXRXcmFwLCB3ZWJraXRXcmFwUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
U1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRBbmltYXRpb25Mb25naGFuZCwgKGFuaW1hdGlvblBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYW5pbWF0aW9uUHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50
IHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNv
bG9yLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlLCB0
ZXh0U3Ryb2tlUHJvcGVydGllcyk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRC
b3JkZXJBZnRlckxvbmdoYW5kKCkKK3sKKyAgICBjb25zdCBpbnQgYm9yZGVyQWZ0ZXJQcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyV2lkdGgsIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyQWZ0ZXJTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlckNvbG9y
ICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0
Qm9yZGVyQWZ0ZXJMb25naGFuZCwgKGJvcmRlckFmdGVyUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJBZnRlclByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckFm
dGVyTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQcm9wZXJ0
aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCi0gICAg
ICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKLSAgICAgICAg
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91
bmRQb3NpdGlvblgsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwKLSAg
ICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKLSAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUmVwZWF0WQotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmQsIGJhY2tncm91bmRQcm9wZXJ0aWVzKTsK
K2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKCkK
K3sKKyAgICBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJCZWZvcmVXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVT
dHlsZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciAgfTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdo
YW5kLCAoYm9yZGVyQmVmb3JlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJCZWZv
cmVQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZDsK
K30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQo
KQoreworICAgIGNvbnN0IGludCBib3JkZXJFbmRQcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckVuZFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZFN0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCwgKGJvcmRlckVu
ZFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyRW5kUHJvcGVydGllcykpKTsKKyAg
ICByZXR1cm4gd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKQoreworICAgIGNvbnN0IGludCBi
b3JkZXJTdGFydFByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRX
aWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlclN0YXJ0Q29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQsIChib3JkZXJTdGFydFByb3BlcnRp
ZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3RhcnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgY29s
dW1uc1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5XaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRDb2x1bW5Db3VudCB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNo
b3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zLCBjb2x1bW5zUHJvcGVydGllcyk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRDb2x1
bW5zTG9uZ2hhbmQsIChjb2x1bW5zUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5z
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Q29sdW1uc0xvbmdoYW5kOworfQogCitj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKQorewog
ICAgIHN0YXRpYyBjb25zdCBpbnQgY29sdW1uUnVsZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsCisgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0Q29sdW1uUnVsZVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVT
dHlsZSwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlV2lkdGgKKyAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlQ29sb3IsCiAgICAgfTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZSwg
Y29sdW1uUnVsZVByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBvdmVyZmxvd1By
b3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxvd1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZ
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eU92ZXJmbG93LCBvdmVyZmxvd1Byb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kLCAoY29sdW1uUnVs
ZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29sdW1uUnVsZVByb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25z
dCBpbnQgYm9yZGVyUmFkaXVzUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlclRvcFJpZ2h0UmFkaXVzLAotICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRp
dXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywKLSAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJCb3R0b21SaWdodFJhZGl1cwotICAgIH07Ci0gICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1cywgYm9y
ZGVyUmFkaXVzUHJvcGVydGllcyk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1cywgYm9yZGVyUmFkaXVzUHJvcGVy
dGllcyk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5k
KCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGZsZXhGbG93UHJvcGVydGllc1tdID0geyBDU1NQ
cm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAgfTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEZsZXhG
bG93TG9uZ2hhbmQsIChmbGV4Rmxvd1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoZmxleEZs
b3dQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kOworfQog
Ci0gICAgc3RhdGljIGNvbnN0IGludCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25Z
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hc2tQb3NpdGlvbiwgbWFza1Bvc2l0aW9uUHJvcGVydGllcyk7Citjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkKK3sKKyAgICBz
dGF0aWMgY29uc3QgaW50IG1hcmdpbkNvbGxhcHNlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNlLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkFmdGVy
Q29sbGFwc2UgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQsIChtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgobWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGlu
dCBtYXNrUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRY
LCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQsIG1hc2tSZXBl
YXRQcm9wZXJ0aWVzKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcnF1ZWVM
b25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1tdID0g
eworICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sCisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVudCwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlUmVwZXRpdGlvbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5
bGUsCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkCisgICAgfTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hcnF1ZWVMb25n
aGFuZCwgKG1hcnF1ZWVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcnF1ZWVQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNv
bnN0IGludCBtYXNrUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1h
c2tBdHRhY2htZW50LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tDbGlwLApAQCAtMjA3
LDUwICszMzAsMTYxIEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFw
JiBzaG9ydGhhbmRNYXApCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgsCiAg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkKICAgICB9OwotICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrLCBtYXNr
UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRNYXNrTG9uZ2hhbmQsIChtYXNrUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCht
YXNrUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kOworfQogCi0g
ICAgc3RhdGljIGNvbnN0IGludCBhbmltYXRpb25Qcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1p
bmdGdW5jdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwKLSAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgIENTU1Byb3BlcnR5
V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtp
dE1hc2tQb3NpdGlvbkxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQb3Np
dGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kLCAobWFza1Bvc2l0
aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZDsKK30KKworY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCkKK3sKKyAgICBzdGF0
aWMgY29uc3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0
TWFza1JlcGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdE1hc2tSZXBlYXRMb25naGFu
ZCwgKG1hc2tSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tSZXBlYXRQcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQ7Cit9CisKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kKCkKK3sK
KyAgICBzdGF0aWMgY29uc3QgaW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwKKyAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcgogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbiwgYW5pbWF0aW9u
UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCwgKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMsIFdU
Rl9BUlJBWV9MRU5HVEgodGV4dEVtcGhhc2lzUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Vi
a2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCB0ZXh0
U3Ryb2tlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCwgKHRleHRT
dHJva2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRTdHJva2VQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpCit7CiAgICAgc3RhdGlj
IGNvbnN0IGludCB0cmFuc2l0aW9uUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb25Qcm9wZXJ0eSwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFu
c2l0aW9uRHVyYXRpb24sCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvblRpbWlu
Z0Z1bmN0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25EZWxheQogICAg
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb24sIHRyYW5zaXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCwg
KHRyYW5zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYW5zaXRpb25Qcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCkKK3sK
ICAgICBzdGF0aWMgY29uc3QgaW50IHRyYW5zZm9ybU9yaWdpblByb3BlcnRpZXNbXSA9IHsKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5YLAogICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblkKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQ
X0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW4sIHRy
YW5zZm9ybU9yaWdpblByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQsICh0cmFuc2Zvcm1P
cmlnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRyYW5zZm9ybU9yaWdpblByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kOworfQogCi0g
ICAgc3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsCi0gICAgICAgIENTU1Byb3BlcnR5
V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtp
dFdyYXBMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRXcmFwUHJvcGVy
dGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAorICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3Jh
cFBhZGRpbmcKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXMsIHRleHRFbXBoYXNpc1Byb3BlcnRpZXMp
OwotCi0gICAgI3VuZGVmIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZCisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRXcmFwTG9uZ2hhbmQsICh3ZWJraXRX
cmFwUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh3ZWJraXRXcmFwUHJvcGVydGllcykpKTsK
KyAgICByZXR1cm4gd2Via2l0V3JhcExvbmdoYW5kOwogfQogCi1DU1NQcm9wZXJ0eUxvbmdoYW5k
IGxvbmdoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCisvLyBSZXR1cm5zIGFuIGVtcHR5
IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAorY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKIHsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFNob3J0aGFuZE1hcCwgc2hvcnRoYW5kTWFwLCAoKSk7Ci0gICAg
aWYgKHNob3J0aGFuZE1hcC5pc0VtcHR5KCkpCi0gICAgICAgIGluaXRTaG9ydGhhbmRNYXAoc2hv
cnRoYW5kTWFwKTsKLQotICAgIHJldHVybiBzaG9ydGhhbmRNYXAuZ2V0KHByb3BlcnR5SUQpOwor
ICAgIHN3aXRjaCAocHJvcGVydHlJRCkgeworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
OgorICAgICAgICByZXR1cm4gYmFja2dyb3VuZExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIGJhY2tncm91bmRQb3NpdGlv
bkxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQ6CisgICAg
ICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5Qm9yZGVyOgorICAgICAgICByZXR1cm4gYm9yZGVyTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tOgorICAgICAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3I6CisgICAgICAgIHJldHVybiBi
b3JkZXJDb2xvckxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckltYWdlOgor
ICAgICAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0OgorICAgICAgICByZXR1cm4gYm9yZGVyTGVmdExvbmdoYW5kKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJhZGl1czoKKyAgICAgICAgcmV0dXJuIGJvcmRlclJhZGl1
c0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0OgorICAgICAgICBy
ZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJT
cGFjaW5nOgorICAgICAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlclN0eWxlOgorICAgICAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25n
aGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJUb3A6CisgICAgICAgIHJldHVybiBi
b3JkZXJUb3BMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKKyAg
ICAgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
TGlzdFN0eWxlOgorICAgICAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hhbmQoKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Rm9udDoKKyAgICAgICAgcmV0dXJuIGZvbnRMb25naGFuZCgpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlNYXJnaW46CisgICAgICAgIHJldHVybiBtYXJnaW5Mb25naGFuZCgpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgorICAgICAgICByZXR1cm4gb3V0bGluZUxvbmdo
YW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93OgorICAgICAgICByZXR1cm4gb3Zl
cmZsb3dMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgorICAgICAgICBy
ZXR1cm4gcGFkZGluZ0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyOgorICAgICAgICByZXR1cm4gd2Via2l0Qm9y
ZGVyQWZ0ZXJMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJCZWZv
cmU6CisgICAgICAgIHJldHVybiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6CisgICAgICAgIHJldHVybiB3ZWJraXRCb3Jk
ZXJFbmRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoK
KyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzOgorICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVz
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uczoKKyAgICAgICAg
cmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4gd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93OgorICAgICAgICByZXR1cm4gd2Vi
a2l0RmxleEZsb3dMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5D
b2xsYXBzZToKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZToKKyAgICAgICAgcmV0dXJuIHdlYmtp
dE1hcnF1ZWVMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrOgorICAg
ICAgICByZXR1cm4gd2Via2l0TWFza0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tQb3NpdGlvbjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdo
YW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXQ6CisgICAgICAgIHJl
dHVybiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dEVtcGhhc2lzOgorICAgICAgICByZXR1cm4gd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0
dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUcmFuc2l0aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCk7
CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjoKKyAgICAgICAgcmV0
dXJuIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFdyYXA6CisgICAgICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hhbmQoKTsKKyAgICBk
ZWZhdWx0OiB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFu
ZCwgZGVmYXVsdExvbmdoYW5kLCAoKSk7CisgICAgICAgIHJldHVybiBkZWZhdWx0TG9uZ2hhbmQ7
CisgICAgfQorICAgIH0KIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaAppbmRleCA5NjMzYzAyNWFiZmRhYTJjN2Q5Yzhm
MzRlNDIyNmNhMWQxM2IxZDQzLi45MWQ2ODc0OGMwMGZiYzVkOTA1OWNlNjU0ZDk3ODk3YTMyOGQx
ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKQEAgLTQ1LDgg
KzQ1LDQ3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9sZW5ndGg7CiB9OwogCitjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJCb3R0b21Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyQ29sb3JMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVySW1h
Z2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdo
YW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSYWRpdXNMb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmlnaHRMb25naGFuZCgpOworY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBib3JkZXJUb3BMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVyV2lkdGhMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
bGlzdFN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRMb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbWFyZ2luTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG91dGxpbmVMb25naGFuZCgpOworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgcGFkZGluZ0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJr
aXRBbmltYXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyQWZ0ZXJMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtp
dEJvcmRlckVuZExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRC
b3JkZXJTdGFydExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRD
b2x1bW5zTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVt
blJ1bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0RmxleEZs
b3dMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2luQ29s
bGFwc2VMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVl
ZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdo
YW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdo
YW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zaXRpb25Mb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9u
Z2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFdyYXBMb25naGFuZCgp
OworCiAvLyBSZXR1cm5zIGFuIGVtcHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNo
b3J0aGFuZAotQ1NTUHJvcGVydHlMb25naGFuZCBsb25naGFuZEZvclByb3BlcnR5KGludCk7Citj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZEZvclByb3BlcnR5KGludCk7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133261</attachid>
            <date>2012-03-22 07:39:50 -0700</date>
            <delta_ts>2012-03-22 08:43:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81587-20120322113931.patch</filename>
            <type>text/plain</type>
            <size>51612</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uYjgyYTQyOTBjMmI1N2Q3ZTcwNzMwYTA4OGE4MzM3
ZTI1MDQ2M2MyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uOTI5ZWZiMTgxYTc4ODNmMzAx
ZWMxOTIwYjI1YzRhZDYxMDhjYzU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3Miw5
ICsyMjY3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBpZiAo
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0
aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCiAg
ICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRo
ZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQp
OwpAQCAtMjI4NCwxMDMgKzIyNzcsNDQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUn
IHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHBy
b3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBib3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRo
JyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlclJpZ2h0TG9uZ2hh
bmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAg
ICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29s
b3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwK
LSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQp
OwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9y
ZGVyU3RhcnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8g
WyAnb3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0g
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9y
dGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRs
aW5lTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBi
b3JkZXJDb2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCkucHJvcGVydGll
cygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAg
ICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3Jk
ZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBp
bXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1h
cmdpbkxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVz
LCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQs
IHBhZGRpbmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9u
dC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWln
aHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVu
dSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBA
IC0yMzkwLDI0ICsyMzI0LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRh
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAg
cmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ1LDggQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRp
ZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0
RW1waGFzaXNMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNT
dHlsZShpbXBvcnRhbnQpOwpAQCAtMjQ2NywxMCArMjM4OCw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5
V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
V3JhcExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwxOSArMjY3NCwxMSBAQCB2b2lk
IENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9y
dGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsg
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUg
fTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVy
dGllcyk7Ci0KKyAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IHdlYmtpdEFuaW1hdGlvbkxv
bmdoYW5kKCkubGVuZ3RoKCk7CiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb24pOwogCi0gICAgYm9vbCBwYXJzZWRQcm9wZXJ0eVtudW1Qcm9w
ZXJ0aWVzXSA9IHsgZmFsc2UgfTsgLy8gY29tcGlsZXIgd2lsbCByZXBlYXQgZmFsc2UgYXMgbmVj
ZXNzYXJ5Ci0gICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbbnVtUHJvcGVydGllc107CisgICAg
Ym9vbCBwYXJzZWRQcm9wZXJ0eVtdID0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSB9OworICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVzWzddOwogCiAg
ICAgaW50IGk7CiAgICAgaW50IGluaXRpYWxQYXJzZWRQcm9wZXJ0eUluZGV4ID0gMDsKQEAgLTI3
OTAsNyArMjcwMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChi
b29sIGltcG9ydGFudCkKICAgICAgICAgZm9yIChpID0gaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5k
ZXg7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAgICAgICBpZiAo
IXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWw7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkocHJvcGVydGll
c1tpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlvblByb3BlcnR5
KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWwpKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgICAgICBpbml0aWFsUGFyc2VkUHJvcGVydHlJbmRleCA9IDE7CiAgICAgICAgICAg
ICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgdmFsLnJlbGVhc2UoKSk7CkBA
IC0yODEyLDIzICsyNzIzLDE5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNob3J0
aGFuZChib29sIGltcG9ydGFudCkKIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0
aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0g
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCku
cHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhh
bmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5nRnVu
Y3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uRGVsYXkgfTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllcyk7CisgICAgY29uc3QgaW50IG51bVByb3BlcnRpZXMgPSB3ZWJr
aXRUcmFuc2l0aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKIAogICAgIFNob3J0aGFuZFNjb3BlIHNj
b3BlKHRoaXMsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbik7CiAKLSAgICBib29sIHBhcnNl
ZFByb3BlcnR5W251bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJl
cGVhdCBmYWxzZSBhcyBuZWNlc3NhcnkKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tudW1Q
cm9wZXJ0aWVzXTsKKyAgICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlIH07CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbNF07CiAKICAgICBp
bnQgaTsKICAgICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewpAQCAtMjg0OSw3ICsy
NzU2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGlt
cG9ydGFudCkKICAgICAgICAgZm9yIChpID0gMDsgIWZvdW5kICYmIGkgPCBudW1Qcm9wZXJ0aWVz
OyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VB
bmltYXRpb25Qcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWwpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJv
cGVydGllcygpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5
W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25WYWx1
ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI4NzAs
MTIgKzI3NzcsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChi
b29sIGltcG9ydGFudCkKIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdl
IGZvdW5kLgogICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFu
dCk7CisgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3Bl
cnRpZXMoKVtpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwg
Y29uc3QgaW50ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQp
Citib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIC8vIFdlIHRy
eSB0byBtYXRjaCBhcyBtYW55IHByb3BlcnRpZXMgYXMgcG9zc2libGUKICAgICAvLyBXZSBzZXQg
dXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBm
b3VuZCwKQEAgLTI4ODgsOCArMjc5NSw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0aGFu
ZChpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0CiAKICAg
ICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBmb3VuZCA9IGZhbHNl
OwotICAgICAgICBmb3IgKGludCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwg
bnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghZm5kW3Byb3BJ
bmRleF0gJiYgcGFyc2VWYWx1ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpIHsK
KyAgICAgICAgZm9yIChpbnQgcHJvcEluZGV4ID0gMDsgIWZvdW5kICYmIHByb3BJbmRleCA8IGxv
bmdoYW5kLmxlbmd0aCgpOyArK3Byb3BJbmRleCkgeworICAgICAgICAgICAgaWYgKCFmbmRbcHJv
cEluZGV4XSAmJiBwYXJzZVZhbHVlKGxvbmdoYW5kLnByb3BlcnRpZXMoKVtwcm9wSW5kZXhdLCBp
bXBvcnRhbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgIGZuZFtwcm9wSW5kZXhdID0gZm91bmQg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzUGFyc2VkKys7CiAgICAgICAg
ICAgICB9CkBAIC0yOTAxLDE0ICsyODA4LDE0IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNob3J0
aGFuZChpbnQgcHJvcElkLCBjb25zdCBpbnQgKnByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXNQYXJz
ZWQgPT0gbnVtUHJvcGVydGllcykKKyAgICBpZiAocHJvcGVydGllc1BhcnNlZCA9PSBsb25naGFu
ZC5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBGaWxsIGluIGFueSBy
ZW1haW5pbmcgcHJvcGVydGllcyB3aXRoIHRoZSBpbml0aWFsIHZhbHVlLgogICAgIEltcGxpY2l0
U2NvcGUgaW1wbGljaXRTY29wZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7ICsraSkgeworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICBpZiAoIWZuZFtpXSkKLSAgICAg
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJ
bXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQpOworICAgICAgICAgICAgYWRkUHJvcGVy
dHkobG9uZ2hhbmQucHJvcGVydGllcygpW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGlj
aXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA0NWM1YTQ0MjU1NzNlZDI4NDAxMTdiZWE2ZDcyMDkw
ZGIzMTY0ZWMxLi5hNWEyMzhjMWQxOThkZGIwM2YxNzgxNmZjMWIyNWE0NWU2YjFlNzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFs
dWU7CitjbGFzcyBDU1NQcm9wZXJ0eUxvbmdoYW5kOwogY2xhc3MgQ1NTVmFsdWVQb29sOwogY2xh
c3MgQ1NTUHJvcGVydHk7CiBjbGFzcyBDU1NSdWxlOwpAQCAtODcsNyArODgsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2VkUHJvcGVy
dGllcy5pc0VtcHR5KCk7IH0KIAogICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBp
bnQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CisgICAg
Ym9vbCBwYXJzZVNob3J0aGFuZChpbnQsIGNvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmLCBib29s
KTsKICAgICBib29sIHBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBpbnQqIHByb3BlcnRp
ZXMsIGJvb2wgaW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQ29udGVudChpbnQgcHJvcElkLCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZVF1b3RlcyhpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25n
aGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKaW5k
ZXggMGQwM2IyMGJmZDQ1MTZmY2M3ZjljNTMxMTIxNzMxYjc1ODAwYzFkYy4uMWI5NzEyMWZkYjE2
OWVkMDg5ZTVhZmZkNjc2ODA3MjAzNDQ2Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eUxvbmdoYW5kLmNwcApAQCAtMjIsNTAgKzIyLDcxIEBACiAjaW5jbHVkZSAiQ1NTUHJv
cGVydHlMb25naGFuZC5oIgogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxpbnQsIENTU1Byb3BlcnR5TG9uZ2hh
bmQ+IFNob3J0aGFuZE1hcDsKKy8vIEZJWE1FOiBBZGQgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kU2l6
ZSB0byB0aGUgc2hvcnRoYW5kLgorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3Vu
ZExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJhY2tncm91bmRQcm9wZXJ0aWVz
W10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEF0dGFjaG1lbnQsCisgICAgICAg
IENTU1Byb3BlcnR5QmFja2dyb3VuZENsaXAsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRJbWFnZSwKKyAgICAgICAgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kT3JpZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQ
b3NpdGlvblgsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSwKKyAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WCwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WQorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCBiYWNrZ3JvdW5kTG9uZ2hhbmQsIChiYWNrZ3JvdW5kUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dy
b3VuZExvbmdoYW5kOworfQogCi1zdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFu
ZE1hcCYgc2hvcnRoYW5kTWFwKQorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3Vu
ZFBvc2l0aW9uTG9uZ2hhbmQoKQogewotICAgICNkZWZpbmUgU0VUX1NIT1JUSEFORF9NQVBfRU5U
UlkobWFwLCBwcm9wSUQsIGFycmF5KSBcCi0gICAgICAgIG1hcC5zZXQocHJvcElELCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kKGFycmF5LCBXVEZfQVJSQVlfTEVOR1RIKGFycmF5KSkpCisgICAgc3RhdGlj
IGNvbnN0IGludCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBiYWNrZ3JvdW5kUG9z
aXRpb25Mb25naGFuZCwgKGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYmFja2dy
b3VuZFBvc2l0aW9uTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRQcm9w
ZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5Rm9udEZhbWlseSwKLSAgICAgICAgQ1NT
UHJvcGVydHlGb250U2l6ZSwKLSAgICAgICAgQ1NTUHJvcGVydHlGb250U3R5bGUsCi0gICAgICAg
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwK
LSAgICAgICAgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0Ci0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Rm9udCwgZm9udFByb3BlcnRpZXMp
OwotCi0gICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3Vy
IHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRoZXIuCi0gICAgc3RhdGljIGNvbnN0IGlu
dCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0gewotICAgICAgICB7IENTU1Byb3BlcnR5Qm9yZGVy
VG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9w
V2lkdGggfSwKLSAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoIH0sCi0gICAg
ICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21TdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCB9LAotICAgICAgICB7IENTU1By
b3BlcnR5Qm9yZGVyTGVmdENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0V2lkdGggfQotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlclRvcCwgYm9yZGVyUHJvcGVydGllc1sw
XSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eUJvcmRlclJpZ2h0LCBib3JkZXJQcm9wZXJ0aWVzWzFdKTsKLSAgICBTRVRfU0hPUlRIQU5EX01B
UF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLCBib3JkZXJQcm9w
ZXJ0aWVzWzJdKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5Qm9yZGVyTGVmdCwgYm9yZGVyUHJvcGVydGllc1szXSk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBj
b25zdCBpbnQgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUmVwZWF0WCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0WSB9OworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZFJlcGVhdExvbmdo
YW5kLCAoYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dy
b3VuZFJlcGVhdFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25n
aGFuZDsKK30KIAotICAgIHNob3J0aGFuZE1hcC5zZXQoQ1NTUHJvcGVydHlCb3JkZXIsIENTU1By
b3BlcnR5TG9uZ2hhbmQoYm9yZGVyUHJvcGVydGllc1swXSwgc2l6ZW9mKGJvcmRlclByb3BlcnRp
ZXMpIC8gc2l6ZW9mKGJvcmRlclByb3BlcnRpZXNbMF1bMF0pKSk7CisvLyBEbyBub3QgY2hhbmdl
IHRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGZvdXIgc2hvcnRoYW5kcywgYW5kIGtlZXAgdGhl
bSB0b2dldGhlci4KK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxvbmdoYW5kKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJD
b2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9y
ZGVyTG9uZ2hhbmQsIChib3JkZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kOworfQogCitjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJCb3R0b21Mb25naGFuZCgpCit7CisgICAgc3RhdGljIGNv
bnN0IGludCBib3JkZXJCb3R0b21Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVy
Qm90dG9tQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hh
bmQsIGJvcmRlckJvdHRvbUxvbmdoYW5kLCAoYm9yZGVyQm90dG9tUHJvcGVydGllcywgV1RGX0FS
UkFZX0xFTkdUSChib3JkZXJCb3R0b21Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJC
b3R0b21Mb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyQ29s
b3JMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJDb2xvclByb3BlcnRp
ZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvciwKICAgICAgICAgQ1NT
UHJvcGVydHlCb3JkZXJSaWdodENvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRDb2xvcgogICAgIH07Ci0gICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckNv
bG9yLCBib3JkZXJDb2xvclByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NT
UHJvcGVydHlMb25naGFuZCwgYm9yZGVyQ29sb3JMb25naGFuZCwgKGJvcmRlckNvbG9yUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJDb2xvclByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlckltYWdlTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVySW1h
Z2VQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTb3VyY2Us
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VTbGljZSwKQEAgLTczLDEzMCArOTQsMjMy
IEBAIHN0YXRpYyB2b2lkIGluaXRTaG9ydGhhbmRNYXAoU2hvcnRoYW5kTWFwJiBzaG9ydGhhbmRN
YXApCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VPdXRzZXQsCiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJJbWFnZSwgYm9yZGVySW1hZ2VQcm9w
ZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJv
cmRlckltYWdlTG9uZ2hhbmQsIChib3JkZXJJbWFnZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgoYm9yZGVySW1hZ2VQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdo
YW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hhbmQo
KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyTGVmdFByb3BlcnRpZXNbXSA9IHsgQ1NT
UHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLCBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgYm9yZGVyTGVmdExvbmdoYW5kLCAoYm9yZGVyTGVmdFByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyTGVmdFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJv
cmRlckxlZnRMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
UmFkaXVzTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmFkaXVzUHJv
cGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFJpZ2h0UmFkaXVzLAor
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcExlZnRSYWRpdXMsCisgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyQm90dG9tTGVmdFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21SaWdodFJhZGl1cworICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0
eUxvbmdoYW5kLCBib3JkZXJSYWRpdXNMb25naGFuZCwgKGJvcmRlclJhZGl1c1Byb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUmFkaXVzUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
Ym9yZGVyUmFkaXVzTG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJv
cmRlclJpZ2h0TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyUmlnaHRQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclJpZ2h0TG9uZ2hhbmQs
IChib3JkZXJSaWdodFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyUmlnaHRQcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJSaWdodExvbmdoYW5kOworfQorCitjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKQoreworICAgIHN0YXRp
YyBjb25zdCBpbnQgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNh
bFNwYWNpbmcgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IGJvcmRlclNwYWNpbmdMb25naGFuZCwgKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJT
cGFjaW5nTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0
eWxlTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3R5bGVQcm9wZXJ0
aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5bGUsCiAgICAgICAgIENT
U1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0
b21TdHlsZSwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUKICAgICB9OwotICAg
IFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJT
dHlsZSwgYm9yZGVyU3R5bGVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclN0eWxlTG9uZ2hhbmQsIChib3JkZXJTdHlsZVByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzKSkpOworICAgIHJl
dHVybiBib3JkZXJTdHlsZUxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJUb3BMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJUb3BQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IgfTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlclRvcExvbmdoYW5kLCAoYm9yZGVy
VG9wUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJUb3BQcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiBib3JkZXJUb3BMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVyV2lkdGhMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBib3Jk
ZXJXaWR0aFByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BXaWR0
aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRoLAogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlckJvdHRvbVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0
aAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eUJvcmRlcldpZHRoLCBib3JkZXJXaWR0aFByb3BlcnRpZXMpOwotCi0gICAgc3RhdGlj
IGNvbnN0IGludCBiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
QmFja2dyb3VuZFBvc2l0aW9uWCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZIH07Ci0g
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvbiwgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0
aWMgY29uc3QgaW50IGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
QmFja2dyb3VuZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdCwgYmFja2dyb3VuZFJlcGVhdFByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0
IGludCBib3JkZXJTcGFjaW5nUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckhvcml6b250YWxTcGFjaW5nLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclZlcnRpY2FsU3BhY2lu
ZyB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlCb3JkZXJTcGFjaW5nLCBib3JkZXJTcGFjaW5nUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMg
Y29uc3QgaW50IGZsZXhGbG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhE
aXJlY3Rpb24sIENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3csIGZsZXhG
bG93UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBib3JkZXJXaWR0aExvbmdoYW5kLCAoYm9yZGVyV2lkdGhQcm9wZXJ0aWVzLCBXVEZfQVJS
QVlfTEVOR1RIKGJvcmRlcldpZHRoUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyV2lk
dGhMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbGlzdFN0eWxlTG9u
Z2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgbGlzdFN0eWxlUHJvcGVydGllc1tdID0g
ewotICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZUltYWdlLAorICAgICAgICBDU1NQcm9wZXJ0
eUxpc3RTdHlsZVR5cGUsCiAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb24sCi0g
ICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZQorICAgICAgICBDU1NQcm9wZXJ0eUxpc3RT
dHlsZUltYWdlCisgICAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGxpc3RTdHlsZUxvbmdoYW5kLCAobGlzdFN0eWxlUHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChsaXN0U3R5bGVQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBsaXN0U3R5bGVMb25n
aGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdoYW5kKCkKK3sK
KyAgICBzdGF0aWMgY29uc3QgaW50IGZvbnRQcm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1By
b3BlcnR5Rm9udEZhbWlseSwKKyAgICAgICAgQ1NTUHJvcGVydHlGb250U2l6ZSwKKyAgICAgICAg
Q1NTUHJvcGVydHlGb250U3R5bGUsCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFZhcmlhbnQsCisg
ICAgICAgIENTU1Byb3BlcnR5Rm9udFdlaWdodCwKKyAgICAgICAgQ1NTUHJvcGVydHlMaW5lSGVp
Z2h0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5TGlzdFN0eWxlLCBsaXN0U3R5bGVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGZvbnRMb25naGFuZCwgKGZvbnRQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZvbnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBmb250
TG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG1hcmdpbkxvbmdoYW5k
KCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IG1hcmdpblByb3BlcnRpZXNbXSA9IHsKICAgICAg
ICAgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsCiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQs
CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tLAogICAgICAgICBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1h
cCwgQ1NTUHJvcGVydHlNYXJnaW4sIG1hcmdpblByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNv
bnN0IGludCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRN
YXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNl
IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkNvbGxhcHNlLCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpOwotCi0gICAg
c3RhdGljIGNvbnN0IGludCBtYXJxdWVlUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdE1hcnF1ZWVEaXJlY3Rpb24sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFy
cXVlZUluY3JlbWVudCwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlUmVwZXRpdGlv
biwKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3R5bGUsCi0gICAgICAgIENTU1By
b3BlcnR5V2Via2l0TWFycXVlZVNwZWVkCi0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZSwgbWFycXVlZVByb3Bl
cnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgbWFy
Z2luTG9uZ2hhbmQsIChtYXJnaW5Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcmdpblBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5kOworfQogCitjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBvdXRsaW5lTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBp
bnQgb3V0bGluZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29s
b3IsCi0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldCwKKyAgICAgICAgQ1NTUHJvcGVy
dHlPdXRsaW5lV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVN0eWxlLAotICAgICAg
ICBDU1NQcm9wZXJ0eU91dGxpbmVXaWR0aAorICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xv
ciwKKyAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0CiAgICAgfTsKLSAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5T3V0bGluZSwgb3V0bGlu
ZVByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFu
ZCwgb3V0bGluZUxvbmdoYW5kLCAob3V0bGluZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
b3V0bGluZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIG91dGxpbmVMb25naGFuZDsKK30KKwor
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgb3ZlcmZsb3dMb25naGFuZCgpCit7CisgICAgc3Rh
dGljIGNvbnN0IGludCBvdmVyZmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlPdmVyZmxv
d1gsIENTU1Byb3BlcnR5T3ZlcmZsb3dZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBvdmVyZmxvd0xvbmdoYW5kLCAob3ZlcmZsb3dQcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKG92ZXJmbG93UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gb3ZlcmZs
b3dMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgcGFkZGluZ0xvbmdo
YW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IHBhZGRpbmdQcm9wZXJ0aWVzW10gPSB7CiAg
ICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ1RvcCwKICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5n
UmlnaHQsCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0JvdHRvbSwKICAgICAgICAgQ1NTUHJv
cGVydHlQYWRkaW5nTGVmdAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVBhZGRpbmcsIHBhZGRpbmdQcm9wZXJ0aWVzKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHBhZGRpbmdMb25naGFuZCwg
KHBhZGRpbmdQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHBhZGRpbmdQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiBwYWRkaW5nTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50
IHdlYmtpdFdyYXBQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3Jh
cEZsb3csCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKLSAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRXcmFwUGFkZGluZworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0QW5pbWF0aW9uTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9u
UHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUs
CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRHVyYXRpb24sCisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uVGltaW5nRnVuY3Rpb24sCisgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0QW5pbWF0aW9uRGVsYXksCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uSXRlcmF0aW9uQ291bnQsCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGly
ZWN0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCiAgICAg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
V2Via2l0V3JhcCwgd2Via2l0V3JhcFByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQsIChhbmltYXRp
b25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGlvblByb3BlcnRpZXMpKSk7Cisg
ICAgcmV0dXJuIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0
IGludCB0ZXh0U3Ryb2tlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VDb2xvciwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGggfTsKLSAgICBTRVRfU0hP
UlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZSwgdGV4dFN0cm9rZVByb3BlcnRpZXMpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyQWZ0ZXJMb25naGFuZCgpCit7CisgICAgY29uc3QgaW50IGJvcmRlckFmdGVyUHJv
cGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJD
b2xvciAgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdl
YmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQsIChib3JkZXJBZnRlclByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRCb3Jk
ZXJBZnRlckxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUHJv
cGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAot
ICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAotICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvciwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCi0gICAg
ICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNr
Z3JvdW5kUG9zaXRpb25YLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblks
Ci0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCi0gICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFJlcGVhdFkKLSAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCBiYWNrZ3JvdW5kUHJvcGVydGll
cyk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJCZWZvcmVMb25naGFu
ZCgpCit7CisgICAgY29uc3QgaW50IGJvcmRlckJlZm9yZVByb3BlcnRpZXNbM10gPSB7IENTU1By
b3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVm
b3JlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQmVmb3JlQ29sb3IgIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJCZWZvcmVM
b25naGFuZCwgKGJvcmRlckJlZm9yZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVy
QmVmb3JlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hh
bmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckVuZExvbmdo
YW5kKCkKK3sKKyAgICBjb25zdCBpbnQgYm9yZGVyRW5kUHJvcGVydGllc1szXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRTdHls
ZSwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQsIChib3Jk
ZXJFbmRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckVuZFByb3BlcnRpZXMpKSk7
CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCkKK3sKKyAgICBjb25zdCBp
bnQgYm9yZGVyU3RhcnRQcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJTdGFydENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kLCAoYm9yZGVyU3RhcnRQcm9w
ZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0YXJ0UHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0Q29sdW1uc0xvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50
IGNvbHVtbnNQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1ucywgY29sdW1uc1Byb3BlcnRp
ZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0
Q29sdW1uc0xvbmdoYW5kLCAoY29sdW1uc1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoY29s
dW1uc1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdENvbHVtbnNMb25naGFuZDsKK30K
IAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kKCkK
K3sKICAgICBzdGF0aWMgY29uc3QgaW50IGNvbHVtblJ1bGVQcm9wZXJ0aWVzW10gPSB7Ci0gICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLAorICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGVXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlU3R5bGUsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoCisgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yLAogICAgIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1
bGUsIGNvbHVtblJ1bGVQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZs
b3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJm
bG93WSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlPdmVyZmxvdywgb3ZlcmZsb3dQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCwgKGNvbHVt
blJ1bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtblJ1bGVQcm9wZXJ0aWVzKSkp
OworICAgIHJldHVybiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVy
dHlCb3JkZXJUb3BSaWdodFJhZGl1cywKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0
UmFkaXVzLAotICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRpdXMsCi0gICAg
ICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKLSAgICB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXMs
IGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNo
b3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXMsIGJvcmRlclJhZGl1c1By
b3BlcnRpZXMpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0RmxleEZsb3dMb25n
aGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFw
IH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRG
bGV4Rmxvd0xvbmdoYW5kLCAoZmxleEZsb3dQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGZs
ZXhGbG93UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0RmxleEZsb3dMb25naGFuZDsK
K30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0
aW9uWSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb24sIG1hc2tQb3NpdGlvblByb3BlcnRpZXMpOworY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpCit7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXJnaW5CZWZvcmVDb2xsYXBzZSwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5B
ZnRlckNvbGxhcHNlIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kLCAobWFyZ2luQ29sbGFwc2VQcm9wZXJ0
aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25z
dCBpbnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVw
ZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OwotICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0LCBtYXNr
UmVwZWF0UHJvcGVydGllcyk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJx
dWVlTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFycXVlZVByb3BlcnRpZXNb
XSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0aW9uLAorICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCisgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZVN0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVlZAorICAgIH07Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXJxdWVl
TG9uZ2hhbmQsIChtYXJxdWVlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJxdWVlUHJv
cGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFycXVlZUxvbmdoYW5kOworfQogCitjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrTG9uZ2hhbmQoKQorewogICAgIHN0YXRp
YyBjb25zdCBpbnQgbWFza1Byb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRNYXNrQXR0YWNobWVudCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrQ2xpcCwKQEAg
LTIwNyw1MCArMzMwLDE2MSBAQCBzdGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFu
ZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRY
LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZCiAgICAgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFzaywg
bWFza1Byb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgd2Via2l0TWFza0xvbmdoYW5kLCAobWFza1Byb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgobWFza1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tMb25naGFuZDsKK30K
IAotICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0aW9uUHJvcGVydGllc1tdID0gewotICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbk5hbWUsCi0gICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0QW5pbWF0aW9uRHVyYXRpb24sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGVsYXks
Ci0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQsCi0gICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRGlyZWN0aW9uLAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvbkZpbGxNb2RlCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBtYXNr
UG9zaXRpb25Qcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWCwg
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25ZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrUG9zaXRpb25Mb25naGFuZCwgKG1hc2tQ
b3NpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1Bvc2l0aW9uUHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQ7Cit9CisKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpCit7CisgICAg
c3RhdGljIGNvbnN0IGludCBtYXNrUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdE1hc2tSZXBlYXRYLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tSZXBlYXRZIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRNYXNrUmVwZWF0TG9u
Z2hhbmQsIChtYXNrUmVwZWF0UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXNrUmVwZWF0
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0TWFza1JlcGVhdExvbmdoYW5kOworfQor
Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgp
Cit7CisgICAgc3RhdGljIGNvbnN0IGludCB0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzW10gPSB7Cisg
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsCisgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb24sIGFuaW1h
dGlvblByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQsICh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHRleHRFbXBoYXNpc1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQg
dGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lk
dGgsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yIH07CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQsICh0
ZXh0U3Ryb2tlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0U3Ryb2tlUHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kOworfQogCitjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKQorewogICAgIHN0
YXRpYyBjb25zdCBpbnQgdHJhbnNpdGlvblByb3BlcnRpZXNbXSA9IHsKICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uLAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb25U
aW1pbmdGdW5jdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkK
ICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJv
cGVydHlXZWJraXRUcmFuc2l0aW9uLCB0cmFuc2l0aW9uUHJvcGVydGllcyk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hh
bmQsICh0cmFuc2l0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2l0aW9uUHJv
cGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kOworfQogCitj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgp
Cit7CiAgICAgc3RhdGljIGNvbnN0IGludCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWCwKICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2lu
LCB0cmFuc2Zvcm1PcmlnaW5Qcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFRyYW5zZm9ybU9yaWdpbkxvbmdoYW5kLCAodHJhbnNm
b3JtT3JpZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSCh0cmFuc2Zvcm1PcmlnaW5Qcm9w
ZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZDsKK30K
IAotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewotICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yLAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRXcmFwTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgd2Via2l0V3JhcFBy
b3BlcnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdywKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRXcmFwTWFyZ2luLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXBQYWRkaW5nCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzLCB0ZXh0RW1waGFzaXNQcm9wZXJ0
aWVzKTsKLQotICAgICN1bmRlZiBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWQorICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0V3JhcExvbmdoYW5kLCAod2Vi
a2l0V3JhcFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgod2Via2l0V3JhcFByb3BlcnRpZXMp
KSk7CisgICAgcmV0dXJuIHdlYmtpdFdyYXBMb25naGFuZDsKIH0KIAotQ1NTUHJvcGVydHlMb25n
aGFuZCBsb25naGFuZEZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorLy8gUmV0dXJucyBhbiBl
bXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBub3QgYSBzaG9ydGhhbmQKK2NvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiB7Ci0g
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTaG9ydGhhbmRNYXAsIHNob3J0aGFuZE1hcCwgKCkpOwot
ICAgIGlmIChzaG9ydGhhbmRNYXAuaXNFbXB0eSgpKQotICAgICAgICBpbml0U2hvcnRoYW5kTWFw
KHNob3J0aGFuZE1hcCk7Ci0KLSAgICByZXR1cm4gc2hvcnRoYW5kTWFwLmdldChwcm9wZXJ0eUlE
KTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZDoKKyAgICAgICAgcmV0dXJuIGJhY2tncm91bmRMb25naGFuZCgpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb246CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kUG9z
aXRpb25Mb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0Ogor
ICAgICAgICByZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlcjoKKyAgICAgICAgcmV0dXJuIGJvcmRlckxvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbToKKyAgICAgICAgcmV0dXJuIGJvcmRlckJvdHRvbUxv
bmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckNvbG9yOgorICAgICAgICByZXR1
cm4gYm9yZGVyQ29sb3JMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJJbWFn
ZToKKyAgICAgICAgcmV0dXJuIGJvcmRlckltYWdlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyTGVmdDoKKyAgICAgICAgcmV0dXJuIGJvcmRlckxlZnRMb25naGFuZCgpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSYWRpdXM6CisgICAgICAgIHJldHVybiBib3JkZXJS
YWRpdXNMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKKyAgICAg
ICAgcmV0dXJuIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyU3BhY2luZzoKKyAgICAgICAgcmV0dXJuIGJvcmRlclNwYWNpbmdMb25naGFuZCgpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKKyAgICAgICAgcmV0dXJuIGJvcmRlclN0eWxl
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyVG9wOgorICAgICAgICByZXR1
cm4gYm9yZGVyVG9wTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyV2lkdGg6
CisgICAgICAgIHJldHVybiBib3JkZXJXaWR0aExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZToKKyAgICAgICAgcmV0dXJuIGxpc3RTdHlsZUxvbmdoYW5kKCk7CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eUZvbnQ6CisgICAgICAgIHJldHVybiBmb250TG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TWFyZ2luOgorICAgICAgICByZXR1cm4gbWFyZ2luTG9uZ2hhbmQo
KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKKyAgICAgICAgcmV0dXJuIG91dGxpbmVM
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlPdmVyZmxvdzoKKyAgICAgICAgcmV0dXJu
IG92ZXJmbG93TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZzoKKyAgICAg
ICAgcmV0dXJuIHBhZGRpbmdMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRBbmltYXRpb25Mb25naGFuZCgpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcjoKKyAgICAgICAgcmV0dXJuIHdlYmtp
dEJvcmRlckFmdGVyTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVy
QmVmb3JlOgorICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kOgorICAgICAgICByZXR1cm4gd2Via2l0
Qm9yZGVyRW5kTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3Rh
cnQ6CisgICAgICAgIHJldHVybiB3ZWJraXRCb3JkZXJTdGFydExvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclJhZGl1czoKKyAgICAgICAgcmV0dXJuIGJvcmRlclJh
ZGl1c0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAg
ICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0Q29sdW1uUnVsZToKKyAgICAgICAgcmV0dXJuIHdlYmtpdENvbHVtblJ1bGVMb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGbGV4RmxvdzoKKyAgICAgICAgcmV0dXJu
IHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFy
Z2luQ29sbGFwc2U6CisgICAgICAgIHJldHVybiB3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5k
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWU6CisgICAgICAgIHJldHVybiB3
ZWJraXRNYXJxdWVlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFzazoK
KyAgICAgICAgcmV0dXJuIHdlYmtpdE1hc2tMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRNYXNrUG9zaXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRNYXNrUG9zaXRpb25M
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0OgorICAgICAg
ICByZXR1cm4gd2Via2l0TWFza1JlcGVhdExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpczoKKyAgICAgICAgcmV0dXJuIHdlYmtpdFRleHRFbXBoYXNpc0xv
bmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6CisgICAgICAg
IHJldHVybiB3ZWJraXRUZXh0U3Ryb2tlTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbjoKKyAgICAgICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25Mb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46CisgICAgICAg
IHJldHVybiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRXcmFwOgorICAgICAgICByZXR1cm4gd2Via2l0V3JhcExvbmdoYW5kKCk7Cisg
ICAgZGVmYXVsdDogeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIGRlZmF1bHRMb25naGFuZCwgKCkpOworICAgICAgICByZXR1cm4gZGVmYXVsdExvbmdo
YW5kOworICAgIH0KKyAgICB9CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgKaW5kZXggOTYzM2MwMjVhYmZkYWEyYzdk
OWM4ZjM0ZTQyMjZjYTFkMTNiMWQ0My4uOTFkNjg3NDhjMDBmYmM1ZDkwNTljZTY1NGQ5Nzg5N2Ez
MjhkMWQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hh
bmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCkBAIC00
NSw4ICs0NSw0NyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogfTsKIAorY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZExvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCk7Citjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgYm9yZGVyQm90dG9tTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlckNvbG9yTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRl
ckltYWdlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckxlZnRM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyUmFkaXVzTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJpZ2h0TG9uZ2hhbmQoKTsK
K2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclNwYWNpbmdMb25naGFuZCgpOworY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyU3R5bGVMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgYm9yZGVyVG9wTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIGJvcmRlcldpZHRoTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIGxpc3RTdHlsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBmb250
TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG1hcmdpbkxvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBvdXRsaW5lTG9uZ2hhbmQoKTsKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIHBhZGRpbmdMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRD
b2x1bW5SdWxlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZs
ZXhGbG93TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcmdp
bkNvbGxhcHNlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1h
cnF1ZWVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xv
bmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUG9zaXRpb25M
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1JlcGVhdExv
bmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUZXh0RW1waGFzaXNM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dFN0cm9rZUxv
bmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2l0aW9uTG9u
Z2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdp
bkxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRXcmFwTG9uZ2hh
bmQoKTsKKwogLy8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0eSBpcyBub3Qg
YSBzaG9ydGhhbmQKLUNTU1Byb3BlcnR5TG9uZ2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQp
OworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133273</attachid>
            <date>2012-03-22 08:43:28 -0700</date>
            <delta_ts>2012-03-22 10:10:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81587-20120322124311.patch</filename>
            <type>text/plain</type>
            <size>52234</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uYjgyYTQyOTBjMmI1N2Q3ZTcwNzMwYTA4OGE4MzM3
ZTI1MDQ2M2MyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uYTE3ZGZkMGJmMzRhMjBkMmI4
ZWI3NWIxODE5Y2U1MWNmMDgzODBhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3Miw5
ICsyMjY3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBpZiAo
cGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJMb25naGFuZCgpLCBpbXBvcnRhbnQpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3JvdW5kcyBzcGVjaWZpY2F0
aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWltYWdlLiBJdCdzIGFzCiAg
ICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBzcGVjaWZpZWQgZm9yIHRo
ZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2Us
IGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1ZSgpLCBpbXBvcnRhbnQp
OwpAQCAtMjI4NCwxMDMgKzIyNzcsNDQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8ICdib3JkZXItc3R5bGUn
IHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHBy
b3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBib3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9yZGVyLXJpZ2h0LXdpZHRo
JyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAg
ICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlclJpZ2h0TG9uZ2hh
bmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgogICAg
ICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29s
b3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21T
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwg
cHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNo
b3J0aGFuZChwcm9wSWQsIGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsgJ2JvcmRlci1sZWZ0LXdp
ZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAg
ICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lk
dGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsKLSAgICAgICAgcmV0dXJu
IHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9
CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckxlZnRMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydDoK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRTdHlsZSwK
LSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQp
OwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9y
ZGVyU3RhcnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJFbmQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJF
bmRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdl
YmtpdEJvcmRlckVuZExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRCb3Jk
ZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBw
cm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0gICAgewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJBZnRlcldp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0gICAgICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGluZToKICAgICAgICAgLy8g
WyAnb3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdvdXRsaW5lLXdpZHRoJyBd
IHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yIH07Ci0g
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9y
dGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBvdXRs
aW5lTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29s
b3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yLCBDU1NQ
cm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRD
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywg
aW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBi
b3JkZXJDb2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRlci13aWR0aD57MSw0fSB8
IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAgICByZXR1cm4gcGFyc2U0
VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdoYW5kKCkucHJvcGVydGll
cygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZToKICAgICAg
ICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHls
ZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3Jk
ZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlNYXJnaW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+ezEsNH0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9IHsgQ1NTUHJvcGVydHlN
YXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVzLCBp
bXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQsIG1h
cmdpbkxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57MSw0fSB8IGluaGVyaXQK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eVBh
ZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRp
bmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBwcm9wZXJ0aWVz
LCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZhbHVlcyhwcm9wSWQs
IHBhZGRpbmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24sIENTU1Byb3BlcnR5V2Vi
a2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBj
YXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250LXN0eWxlJyB8fCAnZm9u
dC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUnIFsgLyAnbGluZS1oZWln
aHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRpb24gfCBpY29uIHwgbWVu
dSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1iYXIgfCBpbmhlcml0CkBA
IC0yMzkwLDI0ICsyMzI0LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9udChpbXBvcnRh
bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlOgotICAg
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5TGlzdFN0
eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1hZ2UgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uV2lkdGgsIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRoLCBDU1NQcm9wZXJ0eVdl
YmtpdENvbHVtblJ1bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJz
ZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAgICAgIGNvbnN0IGludCBw
cm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCwgQ1NTUHJv
cGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdoYW5kKCksIGltcG9ydGFu
dCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6CisgICAgICAgIHJldHVybiBw
YXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFuZCgpLCBpbXBvcnRhbnQp
OworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgorICAgICAgICByZXR1cm4g
cGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKSwgaW1wb3J0
YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZToKKyAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbjoKICAgICAgICAg
cmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ1LDggQEAgYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBD
U1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdyaXRpbmcgc3VwcG9ydAot
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsKLSAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZSwg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFy
c2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRp
ZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVt
cGhhc2lzOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRUZXh0
RW1waGFzaXNMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFyc2VUZXh0RW1waGFzaXNT
dHlsZShpbXBvcnRhbnQpOwpAQCAtMjQ2NywxMCArMjM4OCw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoIWlkICYmIHZh
bGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0KSk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csIENTU1Byb3BlcnR5
V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZyB9OwotICAgICAg
ICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0
V3JhcExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckJv
dHRvbVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToKICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwyMiArMjY3NCwxNCBAQCB2b2lk
IENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9y
dGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsg
IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5j
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRB
bmltYXRpb25EZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uRmlsbE1vZGUg
fTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVy
dGllcyk7Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVzID0gd2Via2l0QW5pbWF0
aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbik7CiAKLSAgICBib29sIHBhcnNlZFByb3BlcnR5W251
bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxsIHJlcGVhdCBmYWxzZSBh
cyBuZWNlc3NhcnkKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tudW1Qcm9wZXJ0aWVzXTsK
KyAgICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07CisgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZXNbN107
CiAKLSAgICBpbnQgaTsKLSAgICBpbnQgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXggPSAwOwor
ICAgIHVuc2lnbmVkIGk7CisgICAgdW5zaWduZWQgaW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXgg
PSAwOwogICAgIHdoaWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CiAgICAgICAgIENTU1Bh
cnNlclZhbHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgICAgICBpZiAodmFs
LT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWwtPmlWYWx1ZSA9PSAnLCcp
IHsKQEAgLTI3OTAsNyArMjcwMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblNo
b3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgZm9yIChpID0gaW5pdGlhbFBhcnNlZFBy
b3BlcnR5SW5kZXg7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CiAgICAgICAg
ICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWw7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHko
cHJvcGVydGllc1tpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFuaW1hdGlv
blByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWwp
KSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICBpbml0aWFsUGFyc2VkUHJvcGVydHlJbmRleCA9IDE7CiAg
ICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVlc1tpXSwgdmFsLnJlbGVh
c2UoKSk7CkBAIC0yODEyLDI1ICsyNzIzLDIxIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1h
dGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRo
ZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVz
OyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxl
YXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxv
bmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFzZSgpLCBpbXBvcnRhbnQp
OwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRp
b25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHByb3BlcnRpZXNb
XSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9
IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7CisgICAgY29uc3QgdW5zaWduZWQgbnVtUHJv
cGVydGllcyA9IHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLmxlbmd0aCgpOwogCiAgICAgU2hv
cnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uKTsKIAot
ICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbbnVtUHJvcGVydGllc10gPSB7IGZhbHNlIH07IC8vIGNv
bXBpbGVyIHdpbGwgcmVwZWF0IGZhbHNlIGFzIG5lY2Vzc2FyeQotICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWVzW251bVByb3BlcnRpZXNdOworICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbXSA9IHsg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgfTsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
c1s0XTsKIAotICAgIGludCBpOworICAgIHVuc2lnbmVkIGk7CiAgICAgd2hpbGUgKG1fdmFsdWVM
aXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbCA9IG1fdmFsdWVM
aXN0LT5jdXJyZW50KCk7CiAgICAgICAgIGlmICh2YWwtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6
Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcsJykgewpAQCAtMjg0OSw3ICsyNzU2LDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkK
ICAgICAgICAgZm9yIChpID0gMDsgIWZvdW5kICYmIGkgPCBudW1Qcm9wZXJ0aWVzOyArK2kpIHsK
ICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VBbmltYXRpb25Q
cm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWwpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNl
QW5pbWF0aW9uUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygp
W2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91
bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRpb25WYWx1ZSh2YWx1ZXNb
aV0sIHZhbC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTI4NzAsMTIgKzI3Nzcs
MTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9y
dGFudCkKIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgog
ICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3Bl
cnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAg
ICAgIGFkZFByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLnByb3BlcnRpZXMoKVtp
XSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50
ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpCitib29sIENT
U1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIC8vIFdlIHRyeSB0byBtYXRj
aCBhcyBtYW55IHByb3BlcnRpZXMgYXMgcG9zc2libGUKICAgICAvLyBXZSBzZXQgdXAgYW4gYXJy
YXkgb2YgYm9vbGVhbnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMgYmVlbiBmb3VuZCwKQEAg
LTI4ODMsMTMgKzI3OTAsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnQKICAgICBTaG9ydGhh
bmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogCiAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwot
ICAgIGludCBwcm9wZXJ0aWVzUGFyc2VkID0gMDsKKyAgICB1bnNpZ25lZCBwcm9wZXJ0aWVzUGFy
c2VkID0gMDsKICAgICBib29sIGZuZFs2XT0geyBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlIH07IC8vIDYgaXMgZW5vdWdoIHNpemUuCiAKICAgICB3aGlsZSAobV92YWx1
ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3Ig
KGludCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbnVtUHJvcGVydGllczsg
Kytwcm9wSW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghZm5kW3Byb3BJbmRleF0gJiYgcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpIHsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwgbG9uZ2hhbmQubGVu
Z3RoKCk7ICsrcHJvcEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWZuZFtwcm9wSW5kZXhdICYm
IHBhcnNlVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpW3Byb3BJbmRleF0sIGltcG9ydGFudCkp
IHsKICAgICAgICAgICAgICAgICAgICAgZm5kW3Byb3BJbmRleF0gPSBmb3VuZCA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNQYXJzZWQrKzsKICAgICAgICAgICAgIH0KQEAg
LTI5MDEsMTQgKzI4MDgsMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3BlcnQKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGllc1BhcnNlZCA9PSBudW1Q
cm9wZXJ0aWVzKQorICAgIGlmIChwcm9wZXJ0aWVzUGFyc2VkID09IGxvbmdoYW5kLmxlbmd0aCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZpbGwgaW4gYW55IHJlbWFpbmluZyBw
cm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgSW1wbGljaXRTY29wZSBpbXBs
aWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxv
bmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKCFmbmRbaV0pCi0gICAgICAgICAg
ICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCBjc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSW1wbGlj
aXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAgIGFkZFByb3BlcnR5KGxv
bmdoYW5kLnByb3BlcnRpZXMoKVtpXSwgY3NzVmFsdWVQb29sKCktPmNyZWF0ZUltcGxpY2l0SW5p
dGlhbFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKaW5kZXggNDVjNWE0NDI1NTczZWQyODQwMTE3YmVhNmQ3MjA5MGRiMzE2
NGVjMS4uYTVhMjM4YzFkMTk4ZGRiMDNmMTc4MTZmYzFiMjVhNDVlNmIxZTc0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwor
Y2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1ZhbHVlUG9vbDsKIGNsYXNzIENT
U1Byb3BlcnR5OwogY2xhc3MgQ1NTUnVsZTsKQEAgLTg3LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMu
aXNFbXB0eSgpOyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpOwotICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgaW50KiBw
cm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wg
cGFyc2VTaG9ydGhhbmQoaW50LCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiwgYm9vbCk7CiAg
ICAgYm9vbCBwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBi
b29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuY3BwCmluZGV4IDBk
MDNiMjBiZmQ0NTE2ZmNjN2Y5YzUzMTEyMTczMWI3NTgwMGMxZGMuLjFiOTcxMjFmZGIxNjllZDA4
OWU1YWZmZDY3NjgwNzIwMzQ0NmI4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlMb25naGFuZC5jcHAKQEAgLTIyLDUwICsyMiw3MSBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
TG9uZ2hhbmQuaCIKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8aW50LCBDU1NQcm9wZXJ0eUxvbmdoYW5kPiBT
aG9ydGhhbmRNYXA7CisvLyBGSVhNRTogQWRkIENTU1Byb3BlcnR5QmFja2dyb3VuZFNpemUgdG8g
dGhlIHNob3J0aGFuZC4KK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25n
aGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUHJvcGVydGllc1tdID0g
eworICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50LAorICAgICAgICBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDbGlwLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
ciwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCisgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZE9yaWdpbiwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b25YLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblksCisgICAgICAgIENT
U1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFkKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFja2dyb3VuZFByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJhY2tncm91bmRM
b25naGFuZDsKK30KIAotc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAm
IHNob3J0aGFuZE1hcCkKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRQb3Np
dGlvbkxvbmdoYW5kKCkKIHsKLSAgICAjZGVmaW5lIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKG1h
cCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHByb3BJRCwgQ1NTUHJvcGVydHlM
b25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkpKQorICAgIHN0YXRpYyBjb25z
dCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZFBvc2l0aW9u
TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJhY2tncm91bmRQ
b3NpdGlvbkxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCBmb250UHJvcGVydGll
c1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCi0gICAgICAgIENTU1Byb3Bl
cnR5Rm9udFNpemUsCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFN0eWxlLAotICAgICAgICBDU1NQ
cm9wZXJ0eUZvbnRWYXJpYW50LAotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCi0gICAg
ICAgIENTU1Byb3BlcnR5TGluZUhlaWdodAotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRQcm9wZXJ0aWVzKTsKLQot
ICAgIC8vIERvIG5vdCBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgZm91ciBzaG9y
dGhhbmRzLCBhbmQga2VlcCB0aGVtIHRvZ2V0aGVyLgotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9y
ZGVyUHJvcGVydGllc1s0XVszXSA9IHsKLSAgICAgICAgeyBDU1NQcm9wZXJ0eUJvcmRlclRvcENv
bG9yLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRo
IH0sCi0gICAgICAgIHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yLCBDU1NQcm9wZXJ0eUJv
cmRlclJpZ2h0U3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCB9LAotICAgICAgICB7
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGggfSwKLSAgICAgICAgeyBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1Byb3BlcnR5
Qm9yZGVyTGVmdFdpZHRoIH0KLSAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNo
b3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIGJvcmRlclByb3BlcnRpZXNbMF0pOwot
ICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3Jk
ZXJSaWdodCwgYm9yZGVyUHJvcGVydGllc1sxXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgYm9yZGVyUHJvcGVydGll
c1syXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnQsIGJvcmRlclByb3BlcnRpZXNbM10pOworY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFJlcGVhdFgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFkgfTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCwg
KGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRS
ZXBlYXRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQ7
Cit9CiAKLSAgICBzaG9ydGhhbmRNYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0
eUxvbmdoYW5kKGJvcmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAv
IHNpemVvZihib3JkZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOworLy8gRG8gbm90IGNoYW5nZSB0aGUg
b3JkZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9n
ZXRoZXIuCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMb25naGFuZCgpCit7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9y
ZGVyV2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3Ig
fTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckxv
bmdoYW5kLCAoYm9yZGVyUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJQcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBib3JkZXJMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgYm9yZGVyQm90dG9tTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBp
bnQgYm9yZGVyQm90dG9tUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdp
ZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRv
bUNvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBi
b3JkZXJCb3R0b21Mb25naGFuZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgoYm9yZGVyQm90dG9tUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyQm90dG9t
TG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckNvbG9yTG9u
Z2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzW10g
PSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsCiAgICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyUmlnaHRDb2xvciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xv
ciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IKICAgICB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwg
Ym9yZGVyQ29sb3JQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3Bl
cnR5TG9uZ2hhbmQsIGJvcmRlckNvbG9yTG9uZ2hhbmQsIChib3JkZXJDb2xvclByb3BlcnRpZXMs
IFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQ29sb3JQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBi
b3JkZXJDb2xvckxvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJJbWFnZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJv
cGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU2xpY2UsCkBAIC03MywxMzAgKzk0LDIzMiBAQCBz
dGF0aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQog
ICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlT3V0c2V0LAogICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckltYWdlUmVwZWF0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlUHJvcGVydGll
cyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJJ
bWFnZUxvbmdoYW5kLCAoYm9yZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJv
cmRlckltYWdlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFuZDsK
K30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kKCkKK3sK
KyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3Bl
cnR5Qm9yZGVyTGVmdFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0Q29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5
TG9uZ2hhbmQsIGJvcmRlckxlZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlckxlZnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJM
ZWZ0TG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1
c0xvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3BlcnRp
ZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywKKyAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BMZWZ0UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbUxlZnRSYWRpdXMsCisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmln
aHRSYWRpdXMKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgYm9yZGVyUmFkaXVzTG9uZ2hhbmQsIChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzLCBXVEZf
QVJSQVlfTEVOR1RIKGJvcmRlclJhZGl1c1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRl
clJhZGl1c0xvbmdoYW5kOworfQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJS
aWdodExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJpZ2h0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVy
UmlnaHRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yIH07CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJSaWdodExvbmdoYW5kLCAoYm9y
ZGVyUmlnaHRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0UHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gYm9yZGVyUmlnaHRMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyU3BhY2luZ0xvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29u
c3QgaW50IGJvcmRlclNwYWNpbmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVySG9yaXpvbnRhbFNwYWNpbmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFj
aW5nIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3Jk
ZXJTcGFjaW5nTG9uZ2hhbmQsIChib3JkZXJTcGFjaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJTcGFjaW5nUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyU3BhY2lu
Z0xvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxv
bmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclN0eWxlUHJvcGVydGllc1td
ID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLAogICAgICAgICBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5
bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlCiAgICAgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUs
IGJvcmRlclN0eWxlUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBib3JkZXJTdHlsZUxvbmdoYW5kLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
Ym9yZGVyU3R5bGVMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyVG9wTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyVG9wUHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclRvcENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJUb3BMb25naGFuZCwgKGJvcmRlclRvcFBy
b3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyVG9wUHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gYm9yZGVyVG9wTG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlcldpZHRoTG9uZ2hhbmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lk
dGhQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsCiAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21XaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgKICAg
ICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlCb3JkZXJXaWR0aCwgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25z
dCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwotICAgIFNF
VF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
UG9zaXRpb24sIGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNv
bnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07Ci0gICAgU0VUX1NI
T1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXQsIGJhY2tncm91bmRSZXBlYXRQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQg
Ym9yZGVyU3BhY2luZ1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jp
em9udGFsU3BhY2luZywgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsK
LSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9y
ZGVyU3BhY2luZywgYm9yZGVyU3BhY2luZ1Byb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0
IGludCBmbGV4Rmxvd1Byb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0
aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhXcmFwIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBmbGV4Rmxvd1By
b3BlcnRpZXMpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
Ym9yZGVyV2lkdGhMb25naGFuZCwgKGJvcmRlcldpZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSChib3JkZXJXaWR0aFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9u
Z2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxpc3RTdHlsZUxvbmdoYW5k
KCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IGxpc3RTdHlsZVByb3BlcnRpZXNbXSA9IHsKLSAg
ICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZSwKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0
U3R5bGVUeXBlLAogICAgICAgICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAotICAgICAg
ICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJ
bWFnZQorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBsaXN0U3R5bGVMb25naGFuZCwgKGxpc3RTdHlsZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gbGlzdFN0eWxlTG9uZ2hhbmQ7
Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRMb25naGFuZCgpCit7CisgICAg
c3RhdGljIGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0
eUZvbnRGYW1pbHksCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFNpemUsCisgICAgICAgIENTU1By
b3BlcnR5Rm9udFN0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LAorICAgICAg
ICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCisgICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdodAog
ICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9w
ZXJ0eUxpc3RTdHlsZSwgbGlzdFN0eWxlUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBmb250TG9uZ2hhbmQsIChmb250UHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChmb250UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gZm9udExvbmdo
YW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCit7
CiAgICAgc3RhdGljIGNvbnN0IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENT
U1Byb3BlcnR5TWFyZ2luVG9wLAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAogICAg
ICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5M
ZWZ0CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5TWFyZ2luLCBtYXJnaW5Qcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBp
bnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9Owot
ICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJr
aXRNYXJnaW5Db2xsYXBzZSwgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRp
YyBjb25zdCBpbnQgbWFycXVlZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRNYXJxdWVlRGlyZWN0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJ
bmNyZW1lbnQsCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCi0g
ICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVTcGVlZAotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVz
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG1hcmdpbkxv
bmdoYW5kLCAobWFyZ2luUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Qcm9wZXJ0
aWVzKSkpOworICAgIHJldHVybiBtYXJnaW5Mb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgb3V0bGluZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IG91
dGxpbmVQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLAot
ICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQsCisgICAgICAgIENTU1Byb3BlcnR5T3V0
bGluZVdpZHRoLAogICAgICAgICBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgQ1NT
UHJvcGVydHlPdXRsaW5lV2lkdGgKKyAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCisg
ICAgICAgIENTU1Byb3BlcnR5T3V0bGluZU9mZnNldAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9w
ZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG91
dGxpbmVMb25naGFuZCwgKG91dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxp
bmVQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmQ7Cit9CisKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIG92ZXJmbG93TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBj
b25zdCBpbnQgb3ZlcmZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBD
U1NQcm9wZXJ0eU92ZXJmbG93WSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVy
dHlMb25naGFuZCwgb3ZlcmZsb3dMb25naGFuZCwgKG92ZXJmbG93UHJvcGVydGllcywgV1RGX0FS
UkFZX0xFTkdUSChvdmVyZmxvd1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIG92ZXJmbG93TG9u
Z2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHBhZGRpbmdMb25naGFuZCgp
Cit7CiAgICAgc3RhdGljIGNvbnN0IGludCBwYWRkaW5nUHJvcGVydGllc1tdID0gewogICAgICAg
ICBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0
LAogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRpbmdCb3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5
UGFkZGluZ0xlZnQKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFu
ZE1hcCwgQ1NTUHJvcGVydHlQYWRkaW5nLCBwYWRkaW5nUHJvcGVydGllcyk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQsIChwYWRk
aW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKKyAg
ICByZXR1cm4gcGFkZGluZ0xvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJr
aXRXcmFwUHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93
LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0V3JhcFBhZGRpbmcKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFu
aW1hdGlvbkxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3Bl
cnRpZXNbXSA9IHsKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkR1cmF0aW9uLAorICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkRlbGF5LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0
ZXJhdGlvbkNvdW50LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlv
biwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQogICAgIH07Ci0g
ICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtp
dFdyYXAsIHdlYmtpdFdyYXBQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENT
U1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kLCAoYW5pbWF0aW9uUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJl
dHVybiB3ZWJraXRBbmltYXRpb25Mb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQg
dGV4dFN0cm9rZVByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29s
b3IsIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIHRl
eHRTdHJva2VQcm9wZXJ0aWVzKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJv
cmRlckFmdGVyTG9uZ2hhbmQoKQoreworICAgIGNvbnN0IGludCBib3JkZXJBZnRlclByb3BlcnRp
ZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlX
ZWJraXRCb3JkZXJBZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3Ig
IH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRC
b3JkZXJBZnRlckxvbmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKGJvcmRlckFmdGVyUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyQWZ0
ZXJMb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFByb3BlcnRp
ZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAg
ICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IsCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAgICAgICBD
U1NQcm9wZXJ0eUJhY2tncm91bmRPcmlnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3Vu
ZFBvc2l0aW9uWCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAotICAg
ICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLAotICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRSZXBlYXRZCi0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9y
dGhhbmRNYXAsIENTU1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dyb3VuZFByb3BlcnRpZXMpOwor
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQor
eworICAgIGNvbnN0IGludCBib3JkZXJCZWZvcmVQcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0
eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0
eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hh
bmQsIChib3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJlZm9y
ZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kOwor
fQorCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgp
Cit7CisgICAgY29uc3QgaW50IGJvcmRlckVuZFByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kLCAoYm9yZGVyRW5k
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJFbmRQcm9wZXJ0aWVzKSkpOworICAg
IHJldHVybiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCit7CisgICAgY29uc3QgaW50IGJv
cmRlclN0YXJ0UHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJTdGFydFdp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
Qm9yZGVyU3RhcnRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlM
b25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIHdlYmtpdENvbHVtbnNMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGludCBjb2x1
bW5zUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBDU1NQcm9w
ZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hv
cnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0aWVzKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdENvbHVt
bnNMb25naGFuZCwgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNvbHVtbnNQ
cm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQ7Cit9CiAKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgpCit7CiAg
ICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewotICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRDb2x1bW5SdWxlV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVN0
eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aAorICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwKICAgICB9OwotICAgIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlLCBj
b2x1bW5SdWxlUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IG92ZXJmbG93UHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVyZmxvd1kg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
T3ZlcmZsb3csIG92ZXJmbG93UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
U1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQsIChjb2x1bW5SdWxl
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJvcGVydGllcykpKTsKKyAg
ICByZXR1cm4gd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0
IGludCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3BlcnR5Qm9y
ZGVyVG9wUmlnaHRSYWRpdXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVmdFJhZGl1
cywKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLAotICAgICAgICBD
U1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzCi0gICAgfTsKLSAgICBTRVRfU0hPUlRI
QU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzLCBib3Jk
ZXJSYWRpdXNQcm9wZXJ0aWVzKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhh
bmRNYXAsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQcm9wZXJ0
aWVzKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQo
KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3JhcCB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0RmxleEZs
b3dMb25naGFuZCwgKGZsZXhGbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChmbGV4Rmxv
d1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQ7Cit9CiAK
LSAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsgQ1NTUHJv
cGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblkg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
V2Via2l0TWFza1Bvc2l0aW9uLCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKTsKK2NvbnN0IENTU1By
b3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKQoreworICAgIHN0
YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJD
b2xsYXBzZSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwg
d2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCwgKG1hcmdpbkNvbGxhcHNlUHJvcGVydGllcywg
V1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJu
IHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50
IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFgs
IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwgbWFza1JlcGVh
dFByb3BlcnRpZXMpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFycXVlZUxv
bmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1hcnF1ZWVQcm9wZXJ0aWVzW10gPSB7
CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKKyAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dE1hcnF1ZWVSZXBldGl0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTdHls
ZSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKyAgICB9OworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFycXVlZUxvbmdo
YW5kLCAobWFycXVlZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFycXVlZVByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcnF1ZWVMb25naGFuZDsKK30KIAorY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29u
c3QgaW50IG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFz
a0F0dGFjaG1lbnQsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsCkBAIC0yMDcs
NTAgKzMzMCwxNjEgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhhbmRNYXAm
IHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WCwKICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WQogICAgIH07Ci0gICAgU0VUX1NIT1JU
SEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2ssIG1hc2tQ
cm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdE1hc2tMb25naGFuZCwgKG1hc2tQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1h
c2tQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmQ7Cit9CiAKLSAg
ICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFu
aW1hdGlvbkR1cmF0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWlu
Z0Z1bmN0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5LAotICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAotICAgICAgICBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25GaWxsTW9kZQorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFza1Bvc2l0
aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgsIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NT
UHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQsIChtYXNrUG9zaXRp
b25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQb3NpdGlvblByb3BlcnRpZXMpKSk7
CisgICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kOworfQorCitjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQoreworICAgIHN0YXRp
YyBjb25zdCBpbnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1JlcGVhdExvbmdoYW5k
LCAobWFza1JlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1JlcGVhdFByb3Bl
cnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZDsKK30KKworY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0geworICAgICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9F
TlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uLCBhbmltYXRpb25Q
cm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kLCAodGV4dEVtcGhhc2lzUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSCh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJr
aXRUZXh0RW1waGFzaXNMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHRleHRT
dHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLCBD
U1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kLCAodGV4dFN0
cm9rZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dFN0cm9rZVByb3BlcnRpZXMpKSk7
CisgICAgcmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMg
Y29uc3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
aXRpb25EdXJhdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uVGltaW5n
RnVuY3Rpb24sCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5CiAgICAg
fTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5
V2Via2l0VHJhbnNpdGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kLCAo
dHJhbnNpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNpdGlvblByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZDsKK30KIAorY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKQorewog
ICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCiAgICAgICAgIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBf
RU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbiwgdHJh
bnNmb3JtT3JpZ2luUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5zZm9ybU9y
aWdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQ7Cit9CiAKLSAg
ICBzdGF0aWMgY29uc3QgaW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKLSAgICAgICAg
Q1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwKLSAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RW1waGFzaXNTdHlsZQorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
V3JhcExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHdlYmtpdFdyYXBQcm9wZXJ0
aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCisgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRXcmFw
UGFkZGluZwogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgdGV4dEVtcGhhc2lzUHJvcGVydGllcyk7
Ci0KLSAgICAjdW5kZWYgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFdyYXBMb25naGFuZCwgKHdlYmtpdFdy
YXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hhbmQ7CiB9CiAKLUNTU1Byb3BlcnR5TG9uZ2hhbmQg
bG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKKy8vIFJldHVybnMgYW4gZW1wdHkg
bGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kCitjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBsb25naGFuZEZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQogewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kTWFwLCBzaG9ydGhhbmRNYXAsICgpKTsKLSAgICBp
ZiAoc2hvcnRoYW5kTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgaW5pdFNob3J0aGFuZE1hcChzaG9y
dGhhbmRNYXApOwotCi0gICAgcmV0dXJuIHNob3J0aGFuZE1hcC5nZXQocHJvcGVydHlJRCk7Cisg
ICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6
CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5QmFja2dyb3VuZFBvc2l0aW9uOgorICAgICAgICByZXR1cm4gYmFja2dyb3VuZFBvc2l0aW9u
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoKKyAgICAg
ICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlCb3JkZXI6CisgICAgICAgIHJldHVybiBib3JkZXJMb25naGFuZCgpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXJCb3R0b206CisgICAgICAgIHJldHVybiBib3JkZXJCb3R0b21Mb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKKyAgICAgICAgcmV0dXJuIGJv
cmRlckNvbG9yTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1hZ2U6Cisg
ICAgICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlckxlZnQ6CisgICAgICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQoKTsKKyAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgorICAgICAgICByZXR1cm4gYm9yZGVyUmFkaXVz
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAgICAgIHJl
dHVybiBib3JkZXJSaWdodExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclNw
YWNpbmc6CisgICAgICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CisgICAgICAgIHJldHVybiBib3JkZXJTdHlsZUxvbmdo
YW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKKyAgICAgICAgcmV0dXJuIGJv
cmRlclRvcExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRoOgorICAg
ICAgICByZXR1cm4gYm9yZGVyV2lkdGhMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlM
aXN0U3R5bGU6CisgICAgICAgIHJldHVybiBsaXN0U3R5bGVMb25naGFuZCgpOworICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250OgorICAgICAgICByZXR1cm4gZm9udExvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICAgICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5kKCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6CisgICAgICAgIHJldHVybiBvdXRsaW5lTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CisgICAgICAgIHJldHVybiBvdmVy
Zmxvd0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgICAgIHJl
dHVybiBwYWRkaW5nTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0
aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKTsKKyAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6CisgICAgICAgIHJldHVybiB3ZWJraXRCb3Jk
ZXJBZnRlckxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9y
ZToKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKCk7CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRl
ckVuZExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0Ogor
ICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6CisgICAgICAgIHJldHVybiBib3JkZXJSYWRpdXNM
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOgorICAgICAgICBy
ZXR1cm4gd2Via2l0Q29sdW1uc0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dENvbHVtblJ1bGU6CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6CisgICAgICAgIHJldHVybiB3ZWJr
aXRGbGV4Rmxvd0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNv
bGxhcHNlOgorICAgICAgICByZXR1cm4gd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpOwor
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAgICAgICByZXR1cm4gd2Via2l0
TWFycXVlZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6CisgICAg
ICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0TWFza1Bvc2l0aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDoKKyAgICAgICAgcmV0
dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RW1waGFzaXM6CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgorICAgICAgICByZXR1
cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgorICAgICAgICByZXR1
cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdFdyYXBMb25naGFuZCgpOworICAgIGRl
ZmF1bHQ6IHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5k
LCBkZWZhdWx0TG9uZ2hhbmQsICgpKTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRMb25naGFuZDsK
KyAgICB9CisgICAgfQogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmluZGV4IDk2MzNjMDI1YWJmZGFhMmM3ZDljOGYz
NGU0MjI2Y2ExZDEzYjFkNDMuLjkxZDY4NzQ4YzAwZmJjNWQ5MDU5Y2U2NTRkOTc4OTdhMzI4ZDFk
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAtNDUsOCAr
NDUsNDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVy
dHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJvcmRlckJvdHRvbUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJDb2xvckxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFn
ZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0TG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExvbmdoYW5kKCk7Citjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3Bl
cnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBs
aXN0U3R5bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9udExvbmdo
YW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpOworY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgb3V0bGluZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBwYWRkaW5nTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtp
dEFuaW1hdGlvbkxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRC
b3JkZXJBZnRlckxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRC
b3JkZXJCZWZvcmVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Qm9yZGVyRW5kTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJv
cmRlclN0YXJ0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENv
bHVtbnNMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0Q29sdW1u
UnVsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRGbGV4Rmxv
d0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJnaW5Db2xs
YXBzZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJxdWVl
TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hh
bmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VMb25naGFu
ZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25n
aGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0V3JhcExvbmdoYW5kKCk7
CisKIC8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hv
cnRoYW5kCi1DU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50KTsKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50KTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133287</attachid>
            <date>2012-03-22 10:10:15 -0700</date>
            <delta_ts>2012-03-22 10:55:08 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-81587-20120322140957.patch</filename>
            <type>text/plain</type>
            <size>52183</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzY2YTU4Y2MzOGVjOWQ2
ODBjNDlhN2JmY2Y1Y2Y0ZDZiNmNiMzI3OS4uYjgyYTQyOTBjMmI1N2Q3ZTcwNzMwYTA4OGE4MzM3
ZTI1MDQ2M2MyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTIyICBBbGV4
aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIEluY3Jl
YXNlIGNvZGUgc2hhcmluZyBiZXR3ZWVuIENTU1BhcnNlciBhbmQgQ1NTUHJvcGVydHlMb25naGFu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNTg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgRXhwb3Nl
IHRoZSBsb25naGFuZHMgZGVjbGFyYXRpb24gZm9yIGEgZ2l2ZW4gc2hvcnRoYW5kIGluIENTU1By
b3BlcnR5TG9uZ2hhbmQgYW5kCisgICAgICAgIG1ha2UgQ1NTUGFyc2VyIHVzZSB0aGVtLiBJdCB3
aWxsIG1ha2UgdGhlIGRlY2xhcmF0aW9uIG9mIGxvbmdoYW5kcyBpbiBvbmUgcGxhY2Ugb25seS4K
KyAgICAgICAgUmVtb3ZlIHRoZSBtYXAgb2YgQ1NTUHJvcGVydHlMb25naGFuZCBhbmQgcmVwbGFj
ZSBpdCBieSBhIHJlZ3VsYXIgc3dpdGNoL2Nhc2UuCisgICAgICAgIFRoZSBtYXAgZG9lc24ndCBi
cmluZyBtdWNoIGhlcmUgYW5kIGl0J3MgY2xlYW5lciBhbmQgZmFzdGVyIHRvIHVzZSB0aGUgc3dp
dGNoLgorICAgICAgICBJdCBhbHNvIHNob3dzIGEgbGl0dGxlIHBlcmZvcm1hbmNlIGltcHJvdmVt
ZW50IGluIENTUy9DU1NQcm9wZXJ0eVNldHRlckdldHRlci5odG1sLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyA6IG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIE1vZGlmeSB0aGUg
cHJvdG90eXBlIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGlyZWN0bHkgdXNlIHRoZSBDU1NQcm9wZXJ0
eUxvbmdoYW5kLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlMb25naGFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhY2tncm91bmRM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUG9zaXRpb25Mb25naGFuZCk6
CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6Ym9yZGVyTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQm90dG9t
TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Ym9yZGVyQ29sb3JMb25naGFuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpib3JkZXJJbWFnZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJv
cmRlckxlZnRMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSYWRpdXNMb25naGFu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJSaWdodExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OmJvcmRlclNwYWNpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpib3JkZXJT
dHlsZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OmJvcmRlclRvcExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJvcmRlcldpZHRoTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6
bGlzdFN0eWxlTG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Zm9udExvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1hcmdpbkxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6Om91dGxp
bmVMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0xvbmdoYW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhZGRpbmdMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRB
bmltYXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OndlYmtpdEJvcmRlckVuZExvbmdoYW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OndlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQpOgorICAgICAgICAoV2ViQ29yZTo6d2Vi
a2l0Q29sdW1uc0xvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtpdENvbHVtblJ1bGVM
b25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OndlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQpOgorICAgICAgICAo
V2ViQ29yZTo6d2Via2l0TWFycXVlZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dE1hc2tMb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUG9zaXRpb25Mb25n
aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6d2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6d2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OndlYmtp
dFRyYW5zaXRpb25Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5Mb25naGFuZCk6CisgICAgICAgIChXZWJDb3JlOjp3ZWJraXRXcmFwTG9uZ2hhbmQpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9uZ2hhbmRGb3JQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5TG9uZ2hhbmQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTAzLTIxICBN
YXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZWFscGhhYmV0
aXplIGFib3V0IHdlYmF1ZGlvIG1vdmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggOWI2
NmJiY2JmOTJlMmE0ZjhlYzg2NjZkOTg0ZWQ0ZDEwMDZlOWIzYi4uM2VmNWNiOThlMzBiNTk5MjYz
Y2UwYWNmNDgwN2U4M2ZhYzFjZjRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ1
LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJDU1NQYWdlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKKyNpbmNsdWRlICJDU1NQcm9w
ZXJ0eUxvbmdoYW5kLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5U291cmNlRGF0YS5oIgogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgpA
QCAtMjAwMSwxMiArMjAwMiw4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVl
ZTogewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s1XSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRNYXJxdWVlRGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVSZXBldGl0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRNYXJxdWVlU3R5bGUsIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVNwZWVkIH07
Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDUsIGlt
cG9ydGFudCk7Ci0gICAgfQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRNYXJxdWVlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZUluY3JlbWVu
dDoKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlU21hbGwgfHwgaWQgPT0gQ1NTVmFsdWVMYXJn
ZSB8fCBpZCA9PSBDU1NWYWx1ZU1lZGl1bSkKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
dHJ1ZTsKQEAgLTIxMjYsMTkgKzIxMjMsMTcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkNvbGxhcHNlOiB7Ci0gICAgICAgIGNvbnN0IGlu
dCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpbkJlZm9yZUNvbGxhcHNl
LAotICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5BZnRlckNvbGxhcHNlIH07CiAg
ICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUo
dGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSk7Ci0gICAgICAgICAgICBpZiAo
IXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKKyAgICAgICAgICAgIGlmICgh
cGFyc2VWYWx1ZSh3ZWJraXRNYXJnaW5Db2xsYXBzZUxvbmdoYW5kKCkucHJvcGVydGllcygpWzBd
LCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKLSAg
ICAgICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMV0sIHZhbHVlLCBpbXBvcnRhbnQpOwor
ICAgICAgICAgICAgYWRkUHJvcGVydHkod2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCgpLnBy
b3BlcnRpZXMoKVsxXSwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChudW0gPT0gMikgewogICAgICAgICAgICAg
U2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBz
ZSk7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50
KSB8fCAhcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzFdLCBpbXBvcnRhbnQpKQorICAgICAgICAgICAg
aWYgKCFwYXJzZVZhbHVlKHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKS5wcm9wZXJ0aWVz
KClbMF0sIGltcG9ydGFudCkgfHwgIXBhcnNlVmFsdWUod2Via2l0TWFyZ2luQ29sbGFwc2VMb25n
aGFuZCgpLnByb3BlcnRpZXMoKVsxXSwgaW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMjI3Miw5
ICsyMjY3LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcjoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0CiAgICAg
ewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJX
aWR0aCwgQ1NTUHJvcGVydHlCb3JkZXJTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQ29sb3IgfTsKLSAgICAgICAgaWYgKHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KSkgeworICAgICAgICBjb25z
dCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciB9OworICAgICAgICBpZiAocGFy
c2VTaG9ydGhhbmQocHJvcElkLCBDU1NQcm9wZXJ0eUxvbmdoYW5kKHByb3BlcnRpZXMsIDMpLCBp
bXBvcnRhbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUgQ1NTMyBCb3JkZXJzIGFuZCBCYWNrZ3Jv
dW5kcyBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCBib3JkZXIgYWxzbyByZXNldHMgYm9yZGVyLWlt
YWdlLiBJdCdzIGFzCiAgICAgICAgICAgICAvLyB0aG91Z2ggYSB2YWx1ZSBvZiBub25lIHdhcyBz
cGVjaWZpZWQgZm9yIHRoZSBpbWFnZS4KICAgICAgICAgICAgIGFkZFByb3BlcnR5KENTU1Byb3Bl
cnR5Qm9yZGVySW1hZ2UsIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVJbXBsaWNpdEluaXRpYWxWYWx1
ZSgpLCBpbXBvcnRhbnQpOwpAQCAtMjI4NCwxMDMgKzIyNzgsNDQgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgfQogICAgIGNhc2Ug
Q1NTUHJvcGVydHlCb3JkZXJUb3A6CiAgICAgICAgIC8vIFsgJ2JvcmRlci10b3Atd2lkdGgnIHx8
ICdib3JkZXItc3R5bGUnIHx8IDxjb2xvcj4gXSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ1NTUHJvcGVydHlCb3JkZXJUb3BDb2xvcn07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICBy
ZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBib3JkZXJUb3BMb25naGFuZCgpLCBpbXBvcnRh
bnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodDoKICAgICAgICAgLy8gWyAnYm9y
ZGVyLXJpZ2h0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0
Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJv
cmRlclJpZ2h0TG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9y
ZGVyQm90dG9tOgogICAgICAgICAvLyBbICdib3JkZXItYm90dG9tLXdpZHRoJyB8fCAnYm9yZGVy
LXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQg
cHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwgQ1NTUHJvcGVy
dHlCb3JkZXJCb3R0b21TdHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hv
cnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAg
IHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJvcmRlckJvdHRvbUxvbmdoYW5kKCksIGlt
cG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlckxlZnQ6CiAgICAgICAgIC8vIFsg
J2JvcmRlci1sZWZ0LXdpZHRoJyB8fCAnYm9yZGVyLXN0eWxlJyB8fCA8Y29sb3I+IF0gfCBpbmhl
cml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVy
dHlCb3JkZXJMZWZ0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3IgfTsK
LSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1w
b3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGJv
cmRlckxlZnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJTdGFydDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzNdID0g
eyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0V2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyU3RhcnRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyU3RhcnRD
b2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVz
LCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHBy
b3BJZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmQ6Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJv
cGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJFbmRXaWR0aCwgQ1NTUHJvcGVy
dHlXZWJraXRCb3JkZXJFbmRTdHlsZSwKLSAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Qm9y
ZGVyRW5kQ29sb3IgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJv
cGVydGllcywgMywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0
aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZToKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGludCBwcm9wZXJ0aWVzWzNdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVdpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLAotICAgICAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRCb3JkZXJCZWZvcmVDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9y
dGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCAzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQo
KSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6Ci0g
ICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlXZWJr
aXRCb3JkZXJBZnRlcldpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyU3R5bGUsCi0g
ICAgICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgfTsKLSAgICAgICAg
cmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMywgaW1wb3J0YW50KTsK
LSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEJvcmRl
ckFmdGVyTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5T3V0bGlu
ZToKICAgICAgICAgLy8gWyAnb3V0bGluZS1jb2xvcicgfHwgJ291dGxpbmUtc3R5bGUnIHx8ICdv
dXRsaW5lLXdpZHRoJyBdIHwgaW5oZXJpdAotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3Bl
cnRpZXNbM10gPSB7IENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLCBDU1NQcm9wZXJ0eU91dGxpbmVT
dHlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5T3V0
bGluZUNvbG9yIH07Ci0gICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3Bl
cnRpZXMsIDMsIGltcG9ydGFudCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhh
bmQocHJvcElkLCBvdXRsaW5lTG9uZ2hhbmQoKSwgaW1wb3J0YW50KTsKICAgICBjYXNlIENTU1By
b3BlcnR5Qm9yZGVyQ29sb3I6CiAgICAgICAgIC8vIDxjb2xvcj57MSw0fSB8IGluaGVyaXQKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRl
clRvcENvbG9yLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yLCBDU1NQcm9w
ZXJ0eUJvcmRlckxlZnRDb2xvciB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJ
ZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRW
YWx1ZXMocHJvcElkLCBib3JkZXJDb2xvckxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRh
bnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aDoKICAgICAgICAgLy8gPGJvcmRl
ci13aWR0aD57MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0
aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclJp
Z2h0V2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRXaWR0aCB9OwotICAgICAg
ICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwgcHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAg
ICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElkLCBib3JkZXJXaWR0aExvbmdo
YW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3Jk
ZXJTdHlsZToKICAgICAgICAgLy8gPGJvcmRlci1zdHlsZT57MSw0fSB8IGluaGVyaXQKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0geyBDU1NQcm9wZXJ0eUJvcmRlclRv
cFN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5bGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlckxlZnRTdHlsZSB9OwotICAgICAgICByZXR1cm4gcGFyc2U0VmFsdWVzKHByb3BJZCwg
cHJvcGVydGllcywgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJldHVybiBwYXJzZTRWYWx1
ZXMocHJvcElkLCBib3JkZXJTdHlsZUxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQp
OwogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXJnaW46CiAgICAgICAgIC8vIDxtYXJnaW4td2lkdGg+
ezEsNH0gfCBpbmhlcml0Ci0gICAgewotICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1s0XSA9
IHsgQ1NTUHJvcGVydHlNYXJnaW5Ub3AsIENTU1Byb3BlcnR5TWFyZ2luUmlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpbkJvdHRvbSwgQ1NT
UHJvcGVydHlNYXJnaW5MZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJvcElk
LCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNlNFZh
bHVlcyhwcm9wSWQsIG1hcmdpbkxvbmdoYW5kKCkucHJvcGVydGllcygpLCBpbXBvcnRhbnQpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nOgogICAgICAgICAvLyA8cGFkZGluZy13aWR0aD57
MSw0fSB8IGluaGVyaXQKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzRdID0g
eyBDU1NQcm9wZXJ0eVBhZGRpbmdUb3AsIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBD
U1NQcm9wZXJ0eVBhZGRpbmdMZWZ0IH07Ci0gICAgICAgIHJldHVybiBwYXJzZTRWYWx1ZXMocHJv
cElkLCBwcm9wZXJ0aWVzLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHBhcnNl
NFZhbHVlcyhwcm9wSWQsIHBhZGRpbmdMb25naGFuZCgpLnByb3BlcnRpZXMoKSwgaW1wb3J0YW50
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6Ci0gICAgewotICAgICAgICBj
b25zdCBpbnQgcHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhEaXJlY3Rpb24s
IENTU1Byb3BlcnR5V2Via2l0RmxleFdyYXAgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRo
YW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAgICB9CisgICAgICAgIHJl
dHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQoKSwgaW1w
b3J0YW50KTsKICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udDoKICAgICAgICAgLy8gWyBbICdmb250
LXN0eWxlJyB8fCAnZm9udC12YXJpYW50JyB8fCAnZm9udC13ZWlnaHQnIF0/ICdmb250LXNpemUn
IFsgLyAnbGluZS1oZWlnaHQnIF0/CiAgICAgICAgIC8vICdmb250LWZhbWlseScgXSB8IGNhcHRp
b24gfCBpY29uIHwgbWVudSB8IG1lc3NhZ2UtYm94IHwgc21hbGwtY2FwdGlvbiB8IHN0YXR1cy1i
YXIgfCBpbmhlcml0CkBAIC0yMzkwLDI0ICsyMzI1LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAgICAgcmV0dXJuIHBh
cnNlRm9udChpbXBvcnRhbnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5
TGlzdFN0eWxlOgotICAgIHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENT
U1Byb3BlcnR5TGlzdFN0eWxlVHlwZSwgQ1NTUHJvcGVydHlMaXN0U3R5bGVQb3NpdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5TGlzdFN0eWxlSW1h
Z2UgfTsKLSAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywg
MywgaW1wb3J0YW50KTsKLSAgICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6
IHsKLSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbMl0gPSB7IENTU1Byb3BlcnR5V2Via2l0
Q29sdW1uV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uQ291bnQgfTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAg
ICB9Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGU6IHsKLSAgICAgICAgY29u
c3QgaW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZVdpZHRo
LCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVTdHlsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1uUnVsZUNvbG9yIH07Ci0gICAg
ICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHByb3BlcnRpZXMsIDMsIGltcG9ydGFu
dCk7Ci0gICAgfQotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOiB7Ci0gICAg
ICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzWzJdID0geyBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IgfTsKLSAgICAgICAgcmV0
dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgcHJvcGVydGllcywgMiwgaW1wb3J0YW50KTsKLSAg
ICB9CisgICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIGxpc3RTdHlsZUxvbmdo
YW5kKCksIGltcG9ydGFudCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnM6Cisg
ICAgICAgIHJldHVybiBwYXJzZVNob3J0aGFuZChwcm9wSWQsIHdlYmtpdENvbHVtbnNMb25naGFu
ZCgpLCBpbXBvcnRhbnQpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlOgor
ICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCB3ZWJraXRDb2x1bW5SdWxlTG9u
Z2hhbmQoKSwgaW1wb3J0YW50KTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9r
ZToKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5kKHByb3BJZCwgd2Via2l0VGV4dFN0cm9r
ZUxvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1h
dGlvbjoKICAgICAgICAgcmV0dXJuIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGltcG9ydGFudCk7
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CkBAIC0yNDIyLDEwICsyMzQ2
LDggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmU6CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAvLyBDU1MgVGV4dCBMYXlvdXQgTW9kdWxlIExldmVsIDM6IFZlcnRpY2FsIHdy
aXRpbmcgc3VwcG9ydAotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXM6IHsK
LSAgICAgICAgY29uc3QgaW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNTdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciB9OwotICAg
ICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVzLCBXVEZfQVJSQVlf
TEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGV4dEVtcGhhc2lzOgorICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJv
cElkLCB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZCgpLCBpbXBvcnRhbnQpOwogCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlOgogICAgICAgICByZXR1cm4gcGFy
c2VUZXh0RW1waGFzaXNTdHlsZShpbXBvcnRhbnQpOwpAQCAtMjQ2NywxMCArMjM4OSw4IEBAIGJv
b2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFkZGluZzoKICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSAoIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcsIG1fc3RyaWN0
KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwOiB7Ci0g
ICAgICAgIGNvbnN0IGludCBwcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0V3JhcEZs
b3csIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwgQ1NTUHJvcGVydHlXZWJraXRXcmFwUGFk
ZGluZyB9OwotICAgICAgICByZXR1cm4gcGFyc2VTaG9ydGhhbmQocHJvcElkLCBwcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpLCBpbXBvcnRhbnQpOwotICAgIH0KKyAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHBhcnNlU2hvcnRoYW5k
KHByb3BJZCwgd2Via2l0V3JhcExvbmdoYW5kKCksIGltcG9ydGFudCk7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckJvdHRvbVN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xs
YXBzZToKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdFN0eWxlOgpAQCAtMjc1NSwyMiAr
MjY3NSwxNCBAQCB2b2lkIENTU1BhcnNlcjo6YWRkQW5pbWF0aW9uVmFsdWUoUmVmUHRyPENTU1Zh
bHVlPiYgbHZhbCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcgogCiBib29sIENTU1BhcnNlcjo6cGFy
c2VBbmltYXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3QgaW50IHBy
b3BlcnRpZXNbXSA9IHsgIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uTmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EdXJhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmlt
YXRpb25UaW1pbmdGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NT
UHJvcGVydHlXZWJraXRBbmltYXRpb25EZWxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25EaXJlY3Rp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0QW5p
bWF0aW9uRmlsbE1vZGUgfTsKLSAgICBjb25zdCBpbnQgbnVtUHJvcGVydGllcyA9IFdURl9BUlJB
WV9MRU5HVEgocHJvcGVydGllcyk7Ci0KKyAgICBjb25zdCB1bnNpZ25lZCBudW1Qcm9wZXJ0aWVz
ID0gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKS5sZW5ndGgoKTsKICAgICBTaG9ydGhhbmRTY29w
ZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbik7CiAKLSAgICBib29sIHBh
cnNlZFByb3BlcnR5W251bVByb3BlcnRpZXNdID0geyBmYWxzZSB9OyAvLyBjb21waWxlciB3aWxs
IHJlcGVhdCBmYWxzZSBhcyBuZWNlc3NhcnkKLSAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlc1tu
dW1Qcm9wZXJ0aWVzXTsKKyAgICBib29sIHBhcnNlZFByb3BlcnR5W10gPSB7IGZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07CisgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZXNbN107CiAKLSAgICBpbnQgaTsKLSAgICBpbnQgaW5pdGlhbFBhcnNlZFByb3Bl
cnR5SW5kZXggPSAwOworICAgIHVuc2lnbmVkIGk7CisgICAgdW5zaWduZWQgaW5pdGlhbFBhcnNl
ZFByb3BlcnR5SW5kZXggPSAwOwogICAgIHdoaWxlIChtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7
CiAgICAgICAgIENTU1BhcnNlclZhbHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwog
ICAgICAgICBpZiAodmFsLT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWwt
PmlWYWx1ZSA9PSAnLCcpIHsKQEAgLTI3OTAsNyArMjcwMiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKICAgICAgICAgZm9yIChpID0g
aW5pdGlhbFBhcnNlZFByb3BlcnR5SW5kZXg7ICFmb3VuZCAmJiBpIDwgbnVtUHJvcGVydGllczsg
KytpKSB7CiAgICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWw7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnNlQW5p
bWF0aW9uUHJvcGVydHkocHJvcGVydGllc1tpXSwgdmFsKSkgeworICAgICAgICAgICAgICAgIGlm
IChwYXJzZUFuaW1hdGlvblByb3BlcnR5KHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVy
dGllcygpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFByb3BlcnR5W2ld
ID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBpbml0aWFsUGFyc2VkUHJvcGVy
dHlJbmRleCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGFkZEFuaW1hdGlvblZhbHVlKHZhbHVl
c1tpXSwgdmFsLnJlbGVhc2UoKSk7CkBAIC0yODEyLDI1ICsyNzI0LDIxIEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUFuaW1hdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCkKIAogICAgIC8vIE5v
dyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9IDA7IGkg
PCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0gICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0s
IHZhbHVlc1tpXS5yZWxlYXNlKCksIGltcG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHdl
YmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkucHJvcGVydGllcygpW2ldLCB2YWx1ZXNbaV0ucmVsZWFz
ZSgpLCBpbXBvcnRhbnQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVRyYW5zaXRpb25TaG9ydGhhbmQoYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0
aW9uRHVyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRGVsYXkgfTsKLSAgICBjb25zdCBpbnQg
bnVtUHJvcGVydGllcyA9IFdURl9BUlJBWV9MRU5HVEgocHJvcGVydGllcyk7CisgICAgY29uc3Qg
dW5zaWduZWQgbnVtUHJvcGVydGllcyA9IHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgpLmxlbmd0
aCgpOwogCiAgICAgU2hvcnRoYW5kU2NvcGUgc2NvcGUodGhpcywgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2l0aW9uKTsKIAotICAgIGJvb2wgcGFyc2VkUHJvcGVydHlbbnVtUHJvcGVydGllc10gPSB7
IGZhbHNlIH07IC8vIGNvbXBpbGVyIHdpbGwgcmVwZWF0IGZhbHNlIGFzIG5lY2Vzc2FyeQotICAg
IFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWVzW251bVByb3BlcnRpZXNdOworICAgIGJvb2wgcGFyc2Vk
UHJvcGVydHlbXSA9IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UgfTsKKyAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlc1s0XTsKIAotICAgIGludCBpOworICAgIHVuc2lnbmVkIGk7CiAgICAg
d2hpbGUgKG1fdmFsdWVMaXN0LT5jdXJyZW50KCkpIHsKICAgICAgICAgQ1NTUGFyc2VyVmFsdWUq
IHZhbCA9IG1fdmFsdWVMaXN0LT5jdXJyZW50KCk7CiAgICAgICAgIGlmICh2YWwtPnVuaXQgPT0g
Q1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yICYmIHZhbC0+aVZhbHVlID09ICcsJykgewpAQCAtMjg0
OSw3ICsyNzU3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChi
b29sIGltcG9ydGFudCkKICAgICAgICAgZm9yIChpID0gMDsgIWZvdW5kICYmIGkgPCBudW1Qcm9w
ZXJ0aWVzOyArK2kpIHsKICAgICAgICAgICAgIGlmICghcGFyc2VkUHJvcGVydHlbaV0pIHsKICAg
ICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDsKLSAgICAgICAgICAgICAgICBpZiAo
cGFyc2VBbmltYXRpb25Qcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCB2YWwpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHBhcnNlQW5pbWF0aW9uUHJvcGVydHkod2Via2l0VHJhbnNpdGlvbkxvbmdoYW5k
KCkucHJvcGVydGllcygpW2ldLCB2YWwpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFBy
b3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICBhZGRBbmltYXRp
b25WYWx1ZSh2YWx1ZXNbaV0sIHZhbC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgICAgIH0KQEAg
LTI4NzAsMTIgKzI3NzgsMTIgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0
aGFuZChib29sIGltcG9ydGFudCkKIAogICAgIC8vIE5vdyBhZGQgYWxsIG9mIHRoZSBwcm9wZXJ0
aWVzIHdlIGZvdW5kLgogICAgIGZvciAoaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspCi0g
ICAgICAgIGFkZFByb3BlcnR5KHByb3BlcnRpZXNbaV0sIHZhbHVlc1tpXS5yZWxlYXNlKCksIGlt
cG9ydGFudCk7CisgICAgICAgIGFkZFByb3BlcnR5KHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZCgp
LnByb3BlcnRpZXMoKVtpXSwgdmFsdWVzW2ldLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKIAogICAg
IHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHBy
b3BJZCwgY29uc3QgaW50ICpwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBv
cnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgbG9uZ2hhbmQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIC8v
IFdlIHRyeSB0byBtYXRjaCBhcyBtYW55IHByb3BlcnRpZXMgYXMgcG9zc2libGUKICAgICAvLyBX
ZSBzZXQgdXAgYW4gYXJyYXkgb2YgYm9vbGVhbnMgdG8gbWFyayB3aGljaCBwcm9wZXJ0eSBoYXMg
YmVlbiBmb3VuZCwKQEAgLTI4ODMsMTMgKzI3OTEsMTMgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3Bl
cnQKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9wSWQpOwogCiAgICAgYm9vbCBm
b3VuZCA9IGZhbHNlOwotICAgIGludCBwcm9wZXJ0aWVzUGFyc2VkID0gMDsKKyAgICB1bnNpZ25l
ZCBwcm9wZXJ0aWVzUGFyc2VkID0gMDsKICAgICBib29sIGZuZFs2XT0geyBmYWxzZSwgZmFsc2Us
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlIH07IC8vIDYgaXMgZW5vdWdoIHNpemUuCiAKICAg
ICB3aGlsZSAobV92YWx1ZUxpc3QtPmN1cnJlbnQoKSkgewogICAgICAgICBmb3VuZCA9IGZhbHNl
OwotICAgICAgICBmb3IgKGludCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4IDwg
bnVtUHJvcGVydGllczsgKytwcm9wSW5kZXgpIHsKLSAgICAgICAgICAgIGlmICghZm5kW3Byb3BJ
bmRleF0gJiYgcGFyc2VWYWx1ZShwcm9wZXJ0aWVzW3Byb3BJbmRleF0sIGltcG9ydGFudCkpIHsK
KyAgICAgICAgZm9yICh1bnNpZ25lZCBwcm9wSW5kZXggPSAwOyAhZm91bmQgJiYgcHJvcEluZGV4
IDwgbG9uZ2hhbmQubGVuZ3RoKCk7ICsrcHJvcEluZGV4KSB7CisgICAgICAgICAgICBpZiAoIWZu
ZFtwcm9wSW5kZXhdICYmIHBhcnNlVmFsdWUobG9uZ2hhbmQucHJvcGVydGllcygpW3Byb3BJbmRl
eF0sIGltcG9ydGFudCkpIHsKICAgICAgICAgICAgICAgICAgICAgZm5kW3Byb3BJbmRleF0gPSBm
b3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNQYXJzZWQrKzsKICAg
ICAgICAgICAgIH0KQEAgLTI5MDEsMTQgKzI4MDksMTQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNl
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgaW50IG51bVByb3Bl
cnQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGll
c1BhcnNlZCA9PSBudW1Qcm9wZXJ0aWVzKQorICAgIGlmIChwcm9wZXJ0aWVzUGFyc2VkID09IGxv
bmdoYW5kLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIEZpbGwgaW4g
YW55IHJlbWFpbmluZyBwcm9wZXJ0aWVzIHdpdGggdGhlIGluaXRpYWwgdmFsdWUuCiAgICAgSW1w
bGljaXRTY29wZSBpbXBsaWNpdFNjb3BlKHRoaXMsIFByb3BlcnR5SW1wbGljaXQpOwotICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKSB7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGxvbmdoYW5kLmxlbmd0aCgpOyArK2kpIHsKICAgICAgICAgaWYgKCFmbmRb
aV0pCi0gICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzW2ldLCBjc3NWYWx1ZVBvb2wo
KS0+Y3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUoKSwgaW1wb3J0YW50KTsKKyAgICAgICAgICAg
IGFkZFByb3BlcnR5KGxvbmdoYW5kLnByb3BlcnRpZXMoKVtpXSwgY3NzVmFsdWVQb29sKCktPmNy
ZWF0ZUltcGxpY2l0SW5pdGlhbFZhbHVlKCksIGltcG9ydGFudCk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggNDVjNWE0NDI1NTczZWQyODQwMTE3
YmVhNmQ3MjA5MGRiMzE2NGVjMS4uYTVhMjM4YzFkMTk4ZGRiMDNmMTc4MTZmYzFiMjVhNDVlNmIx
ZTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTsKIGNsYXNzIENTU1By
aW1pdGl2ZVZhbHVlOworY2xhc3MgQ1NTUHJvcGVydHlMb25naGFuZDsKIGNsYXNzIENTU1ZhbHVl
UG9vbDsKIGNsYXNzIENTU1Byb3BlcnR5OwogY2xhc3MgQ1NTUnVsZTsKQEAgLTg3LDcgKzg4LDcg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuICFtX3Bh
cnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAKICAgICBib29sIHBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50IHByb3BJ
ZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoaW50LCBjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiwgYm9vbCk7CiAgICAgYm9vbCBwYXJzZTRWYWx1ZXMoaW50IHByb3BJZCwgY29uc3QgaW50
KiBwcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5TG9uZ2hhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hh
bmQuY3BwCmluZGV4IDBkMDNiMjBiZmQ0NTE2ZmNjN2Y5YzUzMTEyMTczMWI3NTgwMGMxZGMuLmJm
NzNhMzg1MzQ5YzIzODk4MjdlMTI5NDdkNTM1M2VmNTU2NjJkOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5jcHAKQEAgLTIyLDI4ICsyMiw0NCBAQAogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TG9uZ2hhbmQuaCIKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8aW50LCBDU1NQcm9w
ZXJ0eUxvbmdoYW5kPiBTaG9ydGhhbmRNYXA7CisvLyBGSVhNRTogQWRkIENTU1Byb3BlcnR5QmFj
a2dyb3VuZFNpemUgdG8gdGhlIHNob3J0aGFuZC4KK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJhY2tncm91bmRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5k
UHJvcGVydGllc1tdID0geworICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRBdHRhY2htZW50
LAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRDbGlwLAorICAgICAgICBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kSW1hZ2UsCisg
ICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZE9yaWdpbiwKKyAgICAgICAgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kUG9zaXRpb25YLAorICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlv
blksCisgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdFgsCisgICAgICAgIENTU1By
b3BlcnR5QmFja2dyb3VuZFJlcGVhdFkKKyAgICB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Q1NTUHJvcGVydHlMb25naGFuZCwgYmFja2dyb3VuZExvbmdoYW5kLCAoYmFja2dyb3VuZFByb3Bl
cnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYmFja2dyb3VuZFByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIGJhY2tncm91bmRMb25naGFuZDsKK30KIAotc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1h
cChTaG9ydGhhbmRNYXAmIHNob3J0aGFuZE1hcCkKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kKCkKIHsKLSAgICAjZGVmaW5lIFNFVF9TSE9SVEhB
TkRfTUFQX0VOVFJZKG1hcCwgcHJvcElELCBhcnJheSkgXAotICAgICAgICBtYXAuc2V0KHByb3BJ
RCwgQ1NTUHJvcGVydHlMb25naGFuZChhcnJheSwgV1RGX0FSUkFZX0xFTkdUSChhcnJheSkpKQor
ICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBvc2l0aW9uUHJvcGVydGllc1tdID0geyBD
U1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0
aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYmFj
a2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQsIChiYWNrZ3JvdW5kUG9zaXRpb25Qcm9wZXJ0aWVzLCBX
VEZfQVJSQVlfTEVOR1RIKGJhY2tncm91bmRQb3NpdGlvblByb3BlcnRpZXMpKSk7CisgICAgcmV0
dXJuIGJhY2tncm91bmRQb3NpdGlvbkxvbmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGlu
dCBmb250UHJvcGVydGllc1tdID0gewotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCi0g
ICAgICAgIENTU1Byb3BlcnR5Rm9udFNpemUsCi0gICAgICAgIENTU1Byb3BlcnR5Rm9udFN0eWxl
LAotICAgICAgICBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50LAotICAgICAgICBDU1NQcm9wZXJ0eUZv
bnRXZWlnaHQsCi0gICAgICAgIENTU1Byb3BlcnR5TGluZUhlaWdodAotICAgIH07Ci0gICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUZvbnQsIGZvbnRQ
cm9wZXJ0aWVzKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRM
b25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5kUmVwZWF0UHJvcGVy
dGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQcm9wZXJ0eUJhY2tn
cm91bmRSZXBlYXRZIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdo
YW5kLCBiYWNrZ3JvdW5kUmVwZWF0TG9uZ2hhbmQsIChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSChiYWNrZ3JvdW5kUmVwZWF0UHJvcGVydGllcykpKTsKKyAgICBy
ZXR1cm4gYmFja2dyb3VuZFJlcGVhdExvbmdoYW5kOworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxv
bmdoYW5kJiBib3JkZXJMb25naGFuZCgpCit7CiAgICAgLy8gRG8gbm90IGNoYW5nZSB0aGUgb3Jk
ZXIgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHNob3J0aGFuZHMsIGFuZCBrZWVwIHRoZW0gdG9nZXRo
ZXIuCiAgICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJQcm9wZXJ0aWVzWzRdWzNdID0gewogICAg
ICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyVG9wQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyVG9wU3R5
bGUsIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGggfSwKQEAgLTUxLDIxICs2NywzMSBAQCBzdGF0
aWMgdm9pZCBpbml0U2hvcnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAg
ICAgICB7IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tQ29sb3IsIENTU1Byb3BlcnR5Qm9yZGVyQm90
dG9tU3R5bGUsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tV2lkdGggfSwKICAgICAgICAgeyBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnRDb2xvciwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0U3R5bGUsIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFdpZHRoIH0KICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJUb3AsIGJvcmRlclByb3BlcnRpZXNb
MF0pOwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVy
dHlCb3JkZXJSaWdodCwgYm9yZGVyUHJvcGVydGllc1sxXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwgYm9yZGVyUHJv
cGVydGllc1syXSk7Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBD
U1NQcm9wZXJ0eUJvcmRlckxlZnQsIGJvcmRlclByb3BlcnRpZXNbM10pOworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyTG9uZ2hhbmQsIChib3JkZXJQ
cm9wZXJ0aWVzWzBdLCBzaXplb2YoYm9yZGVyUHJvcGVydGllcykgLyBzaXplb2YoYm9yZGVyUHJv
cGVydGllc1swXVswXSkpKTsKKyAgICByZXR1cm4gYm9yZGVyTG9uZ2hhbmQ7Cit9CiAKLSAgICBz
aG9ydGhhbmRNYXAuc2V0KENTU1Byb3BlcnR5Qm9yZGVyLCBDU1NQcm9wZXJ0eUxvbmdoYW5kKGJv
cmRlclByb3BlcnRpZXNbMF0sIHNpemVvZihib3JkZXJQcm9wZXJ0aWVzKSAvIHNpemVvZihib3Jk
ZXJQcm9wZXJ0aWVzWzBdWzBdKSkpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVy
Qm90dG9tTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQm90dG9tUHJv
cGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVdpZHRoLCBDU1NQcm9wZXJ0eUJv
cmRlckJvdHRvbVN0eWxlLCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUNvbG9yIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJCb3R0b21Mb25naGFu
ZCwgKGJvcmRlckJvdHRvbVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgoYm9yZGVyQm90dG9t
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyQm90dG9tTG9uZ2hhbmQ7Cit9CiAKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlckNvbG9yTG9uZ2hhbmQoKQorewogICAgIHN0
YXRpYyBjb25zdCBpbnQgYm9yZGVyQ29sb3JQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyVG9wQ29sb3IsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRDb2xv
ciwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21Db2xvciwKICAgICAgICAgQ1NTUHJv
cGVydHlCb3JkZXJMZWZ0Q29sb3IKICAgICB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZ
KHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJDb2xvciwgYm9yZGVyQ29sb3JQcm9wZXJ0
aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRl
ckNvbG9yTG9uZ2hhbmQsIChib3JkZXJDb2xvclByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgo
Ym9yZGVyQ29sb3JQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJDb2xvckxvbmdoYW5k
OworfQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJJbWFnZUxvbmdoYW5kKCkK
K3sKICAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlckltYWdlUHJvcGVydGllc1tdID0gewogICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlU291cmNlLAogICAgICAgICBDU1NQcm9wZXJ0eUJv
cmRlckltYWdlU2xpY2UsCkBAIC03MywxMzAgKzk5LDIzMiBAQCBzdGF0aWMgdm9pZCBpbml0U2hv
cnRoYW5kTWFwKFNob3J0aGFuZE1hcCYgc2hvcnRoYW5kTWFwKQogICAgICAgICBDU1NQcm9wZXJ0
eUJvcmRlckltYWdlT3V0c2V0LAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckltYWdlUmVwZWF0
CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5Qm9yZGVySW1hZ2UsIGJvcmRlckltYWdlUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJJbWFnZUxvbmdoYW5kLCAoYm9y
ZGVySW1hZ2VQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckltYWdlUHJvcGVydGll
cykpKTsKKyAgICByZXR1cm4gYm9yZGVySW1hZ2VMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgYm9yZGVyTGVmdExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3Qg
aW50IGJvcmRlckxlZnRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyTGVmdFdpZHRo
LCBDU1NQcm9wZXJ0eUJvcmRlckxlZnRTdHlsZSwgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3Ig
fTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIGJvcmRlckxl
ZnRMb25naGFuZCwgKGJvcmRlckxlZnRQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
ckxlZnRQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQ7Cit9CisK
K2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdoYW5kKCkKK3sKKyAg
ICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJhZGl1c1Byb3BlcnRpZXNbXSA9IHsKKyAgICAgICAg
Q1NTUHJvcGVydHlCb3JkZXJUb3BSaWdodFJhZGl1cywKKyAgICAgICAgQ1NTUHJvcGVydHlCb3Jk
ZXJUb3BMZWZ0UmFkaXVzLAorICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbUxlZnRSYWRp
dXMsCisgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMKKyAgICB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyUmFkaXVz
TG9uZ2hhbmQsIChib3JkZXJSYWRpdXNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRl
clJhZGl1c1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlclJhZGl1c0xvbmdoYW5kOwor
fQogCitjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExvbmdoYW5kKCkKK3sK
KyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclJpZ2h0UHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlclJpZ2h0V2lkdGgsIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHRTdHlsZSwgQ1NTUHJv
cGVydHlCb3JkZXJSaWdodENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBib3JkZXJSaWdodExvbmdoYW5kLCAoYm9yZGVyUmlnaHRQcm9wZXJ0aWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlclJpZ2h0UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4g
Ym9yZGVyUmlnaHRMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9y
ZGVyU3BhY2luZ0xvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGJvcmRlclNwYWNp
bmdQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0Qm9yZGVySG9yaXpvbnRhbFNwYWNp
bmcsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyVmVydGljYWxTcGFjaW5nIH07CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3JkZXJTcGFjaW5nTG9uZ2hhbmQs
IChib3JkZXJTcGFjaW5nUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTcGFjaW5n
UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyU3BhY2luZ0xvbmdoYW5kOworfQorCitj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTdHlsZUxvbmdoYW5kKCkKK3sKICAgICBz
dGF0aWMgY29uc3QgaW50IGJvcmRlclN0eWxlUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQ
cm9wZXJ0eUJvcmRlclRvcFN0eWxlLAogICAgICAgICBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0U3R5
bGUsCiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGUsCiAgICAgICAgIENTU1By
b3BlcnR5Qm9yZGVyTGVmdFN0eWxlCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRS
WShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGUsIGJvcmRlclN0eWxlUHJvcGVy
dGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCBib3Jk
ZXJTdHlsZUxvbmdoYW5kLCAoYm9yZGVyU3R5bGVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RI
KGJvcmRlclN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyU3R5bGVMb25naGFu
ZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgYm9yZGVyVG9wTG9uZ2hhbmQoKQor
eworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyVG9wUHJvcGVydGllc1tdID0geyBDU1NQcm9w
ZXJ0eUJvcmRlclRvcFdpZHRoLCBDU1NQcm9wZXJ0eUJvcmRlclRvcFN0eWxlLCBDU1NQcm9wZXJ0
eUJvcmRlclRvcENvbG9yIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCBib3JkZXJUb3BMb25naGFuZCwgKGJvcmRlclRvcFByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgoYm9yZGVyVG9wUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gYm9yZGVyVG9wTG9u
Z2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlcldpZHRoTG9uZ2hh
bmQoKQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyV2lkdGhQcm9wZXJ0aWVzW10gPSB7
CiAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRXaWR0aCwKICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21XaWR0aCwK
ICAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0V2lkdGgKICAgICB9OwotICAgIFNFVF9TSE9S
VEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCb3JkZXJXaWR0aCwgYm9y
ZGVyV2lkdGhQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFBv
c2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvblgsIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWSB9OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VO
VFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb24sIGJhY2tncm91
bmRQb3NpdGlvblByb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBiYWNrZ3JvdW5k
UmVwZWF0UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXRYLCBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRSZXBlYXRZIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlko
c2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBlYXQsIGJhY2tncm91bmRSZXBl
YXRQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyU3BhY2luZ1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJIb3Jpem9udGFsU3BhY2luZywgQ1NT
UHJvcGVydHlXZWJraXRCb3JkZXJWZXJ0aWNhbFNwYWNpbmcgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZywgYm9yZGVy
U3BhY2luZ1Byb3BlcnRpZXMpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBmbGV4Rmxvd1Byb3Bl
cnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRGbGV4RGlyZWN0aW9uLCBDU1NQcm9wZXJ0eVdl
YmtpdEZsZXhXcmFwIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFw
LCBDU1NQcm9wZXJ0eVdlYmtpdEZsZXhGbG93LCBmbGV4Rmxvd1Byb3BlcnRpZXMpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgYm9yZGVyV2lkdGhMb25naGFu
ZCwgKGJvcmRlcldpZHRoUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJXaWR0aFBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIGJvcmRlcldpZHRoTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxpc3RTdHlsZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMg
Y29uc3QgaW50IGxpc3RTdHlsZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlM
aXN0U3R5bGVJbWFnZSwKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlLAogICAgICAg
ICBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBvc2l0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eUxpc3RT
dHlsZVR5cGUKKyAgICAgICAgQ1NTUHJvcGVydHlMaXN0U3R5bGVJbWFnZQogICAgIH07Ci0gICAg
U0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eUxpc3RTdHls
ZSwgbGlzdFN0eWxlUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9w
ZXJ0eUxvbmdoYW5kLCBsaXN0U3R5bGVMb25naGFuZCwgKGxpc3RTdHlsZVByb3BlcnRpZXMsIFdU
Rl9BUlJBWV9MRU5HVEgobGlzdFN0eWxlUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gbGlzdFN0
eWxlTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGZvbnRMb25naGFu
ZCgpCit7CisgICAgc3RhdGljIGNvbnN0IGludCBmb250UHJvcGVydGllc1tdID0geworICAgICAg
ICBDU1NQcm9wZXJ0eUZvbnRGYW1pbHksCisgICAgICAgIENTU1Byb3BlcnR5Rm9udFNpemUsCisg
ICAgICAgIENTU1Byb3BlcnR5Rm9udFN0eWxlLAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRWYXJp
YW50LAorICAgICAgICBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsCisgICAgICAgIENTU1Byb3BlcnR5
TGluZUhlaWdodAorICAgIH07CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCBmb250TG9uZ2hhbmQsIChmb250UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChm
b250UHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gZm9udExvbmdoYW5kOworfQorCitjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0
IGludCBtYXJnaW5Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5TWFyZ2luVG9w
LAogICAgICAgICBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LAogICAgICAgICBDU1NQcm9wZXJ0eU1h
cmdpbkJvdHRvbSwKICAgICAgICAgQ1NTUHJvcGVydHlNYXJnaW5MZWZ0CiAgICAgfTsKLSAgICBT
RVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5TWFyZ2luLCBt
YXJnaW5Qcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENT
U1Byb3BlcnR5V2Via2l0TWFyZ2luQWZ0ZXJDb2xsYXBzZSB9OwotICAgIFNFVF9TSE9SVEhBTkRf
TUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5Db2xsYXBzZSwg
bWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzKTsKLQotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFycXVl
ZVByb3BlcnRpZXNbXSA9IHsKLSAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlRGlyZWN0
aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVJbmNyZW1lbnQsCi0gICAgICAg
IENTU1Byb3BlcnR5V2Via2l0TWFycXVlZVJlcGV0aXRpb24sCi0gICAgICAgIENTU1Byb3BlcnR5
V2Via2l0TWFycXVlZVN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1ZWVTcGVl
ZAotICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQ
cm9wZXJ0eVdlYmtpdE1hcnF1ZWUsIG1hcnF1ZWVQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG1hcmdpbkxvbmdoYW5kLCAobWFyZ2luUHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biBtYXJnaW5Mb25naGFuZDsKK30KIAorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgb3V0bGlu
ZUxvbmdoYW5kKCkKK3sKICAgICBzdGF0aWMgY29uc3QgaW50IG91dGxpbmVQcm9wZXJ0aWVzW10g
PSB7Ci0gICAgICAgIENTU1Byb3BlcnR5T3V0bGluZUNvbG9yLAotICAgICAgICBDU1NQcm9wZXJ0
eU91dGxpbmVPZmZzZXQsCisgICAgICAgIENTU1Byb3BlcnR5T3V0bGluZVdpZHRoLAogICAgICAg
ICBDU1NQcm9wZXJ0eU91dGxpbmVTdHlsZSwKLSAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lV2lk
dGgKKyAgICAgICAgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3IsCisgICAgICAgIENTU1Byb3BlcnR5
T3V0bGluZU9mZnNldAogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eU91dGxpbmUsIG91dGxpbmVQcm9wZXJ0aWVzKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIG91dGxpbmVMb25naGFuZCwgKG91
dGxpbmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG91dGxpbmVQcm9wZXJ0aWVzKSkpOwor
ICAgIHJldHVybiBvdXRsaW5lTG9uZ2hhbmQ7Cit9CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hh
bmQmIG92ZXJmbG93TG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgb3ZlcmZsb3dQ
cm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBDU1NQcm9wZXJ0eU92ZXJmbG93
WSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgb3ZlcmZs
b3dMb25naGFuZCwgKG92ZXJmbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChvdmVyZmxv
d1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIG92ZXJmbG93TG9uZ2hhbmQ7Cit9CisKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHBhZGRpbmdMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNv
bnN0IGludCBwYWRkaW5nUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eVBhZGRp
bmdUb3AsCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0LAogICAgICAgICBDU1NQcm9w
ZXJ0eVBhZGRpbmdCb3R0b20sCiAgICAgICAgIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQKICAgICB9
OwotICAgIFNFVF9TSE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlQ
YWRkaW5nLCBwYWRkaW5nUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQ
cm9wZXJ0eUxvbmdoYW5kLCBwYWRkaW5nTG9uZ2hhbmQsIChwYWRkaW5nUHJvcGVydGllcywgV1RG
X0FSUkFZX0xFTkdUSChwYWRkaW5nUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gcGFkZGluZ0xv
bmdoYW5kOworfQogCi0gICAgc3RhdGljIGNvbnN0IGludCB3ZWJraXRXcmFwUHJvcGVydGllc1td
ID0gewotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93LAotICAgICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFdyYXBNYXJnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcFBhZGRp
bmcKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCkK
K3sKKyAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAorICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5
LAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKKyAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9N
QVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFdyYXAsIHdlYmtpdFdyYXBQ
cm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQs
IHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kLCAoYW5pbWF0aW9uUHJvcGVydGllcywgV1RGX0FSUkFZ
X0xFTkdUSChhbmltYXRpb25Qcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRBbmltYXRp
b25Mb25naGFuZDsKK30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dFN0cm9rZVByb3BlcnRp
ZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IsIENTU1Byb3BlcnR5V2Vi
a2l0VGV4dFN0cm9rZVdpZHRoIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2UsIHRleHRTdHJva2VQcm9wZXJ0aWVz
KTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEJvcmRlckFmdGVyTG9uZ2hhbmQo
KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzW10gPSB7IENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXJXaWR0aCwgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJB
ZnRlclN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckFmdGVyQ29sb3IgIH07CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRCb3JkZXJBZnRlckxv
bmdoYW5kLCAoYm9yZGVyQWZ0ZXJQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckFm
dGVyUHJvcGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0Qm9yZGVyQWZ0ZXJMb25naGFuZDsK
K30KIAotICAgIHN0YXRpYyBjb25zdCBpbnQgYmFja2dyb3VuZFByb3BlcnRpZXNbXSA9IHsKLSAg
ICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQXR0YWNobWVudCwKLSAgICAgICAgQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ2xpcCwKLSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IsCi0g
ICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZEltYWdlLAotICAgICAgICBDU1NQcm9wZXJ0eUJh
Y2tncm91bmRPcmlnaW4sCi0gICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uWCwK
LSAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRpb25ZLAotICAgICAgICBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRSZXBlYXRYLAotICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmRSZXBl
YXRZCi0gICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENT
U1Byb3BlcnR5QmFja2dyb3VuZCwgYmFja2dyb3VuZFByb3BlcnRpZXMpOworY29uc3QgQ1NTUHJv
cGVydHlMb25naGFuZCYgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQoKQoreworICAgIHN0YXRp
YyBjb25zdCBpbnQgYm9yZGVyQmVmb3JlUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtp
dEJvcmRlckJlZm9yZVdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZVN0eWxlLCBD
U1NQcm9wZXJ0eVdlYmtpdEJvcmRlckJlZm9yZUNvbG9yICB9OworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyQmVmb3JlTG9uZ2hhbmQsIChi
b3JkZXJCZWZvcmVQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGJvcmRlckJlZm9yZVByb3Bl
cnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kOworfQogCitj
b25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZCgpCit7Cisg
ICAgc3RhdGljIGNvbnN0IGludCBib3JkZXJFbmRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyRW5kV2lkdGgsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kU3R5bGUsIENT
U1Byb3BlcnR5V2Via2l0Qm9yZGVyRW5kQ29sb3IgfTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdEJvcmRlckVuZExvbmdoYW5kLCAoYm9yZGVyRW5k
UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJFbmRQcm9wZXJ0aWVzKSkpOworICAg
IHJldHVybiB3ZWJraXRCb3JkZXJFbmRMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlM
b25naGFuZCYgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpCit7CisgICAgc3RhdGljIGNvbnN0
IGludCBib3JkZXJTdGFydFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJT
dGFydFdpZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0YXJ0U3R5bGUsIENTU1Byb3BlcnR5
V2Via2l0Qm9yZGVyU3RhcnRDb2xvciB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJv
cGVydHlMb25naGFuZCwgd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCwgKGJvcmRlclN0YXJ0UHJv
cGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChib3JkZXJTdGFydFByb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIHdlYmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQ7Cit9CisKK2NvbnN0IENTU1Byb3BlcnR5
TG9uZ2hhbmQmIHdlYmtpdENvbHVtbnNMb25naGFuZCgpCit7CiAgICAgc3RhdGljIGNvbnN0IGlu
dCBjb2x1bW5zUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbldpZHRoLCBD
U1NQcm9wZXJ0eVdlYmtpdENvbHVtbkNvdW50IH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5U
Ulkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtbnMsIGNvbHVtbnNQcm9wZXJ0
aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtp
dENvbHVtbnNMb25naGFuZCwgKGNvbHVtbnNQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKGNv
bHVtbnNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRDb2x1bW5zTG9uZ2hhbmQ7Cit9
CiAKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdENvbHVtblJ1bGVMb25naGFuZCgp
Cit7CiAgICAgc3RhdGljIGNvbnN0IGludCBjb2x1bW5SdWxlUHJvcGVydGllc1tdID0gewotICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwKKyAgICAgICAgQ1NTUHJvcGVy
dHlXZWJraXRDb2x1bW5SdWxlV2lkdGgsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0Q29sdW1u
UnVsZVN0eWxlLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVXaWR0aAorICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdENvbHVtblJ1bGVDb2xvciwKICAgICB9OwotICAgIFNFVF9T
SE9SVEhBTkRfTUFQX0VOVFJZKHNob3J0aGFuZE1hcCwgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5S
dWxlLCBjb2x1bW5SdWxlUHJvcGVydGllcyk7Ci0KLSAgICBzdGF0aWMgY29uc3QgaW50IG92ZXJm
bG93UHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eU92ZXJmbG93WCwgQ1NTUHJvcGVydHlPdmVy
Zmxvd1kgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5T3ZlcmZsb3csIG92ZXJmbG93UHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChDU1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hhbmQsIChjb2x1
bW5SdWxlUHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChjb2x1bW5SdWxlUHJvcGVydGllcykp
KTsKKyAgICByZXR1cm4gd2Via2l0Q29sdW1uUnVsZUxvbmdoYW5kOworfQogCi0gICAgc3RhdGlj
IGNvbnN0IGludCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzW10gPSB7Ci0gICAgICAgIENTU1Byb3Bl
cnR5Qm9yZGVyVG9wUmlnaHRSYWRpdXMsCi0gICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyVG9wTGVm
dFJhZGl1cywKLSAgICAgICAgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21MZWZ0UmFkaXVzLAotICAg
ICAgICBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzCi0gICAgfTsKLSAgICBTRVRf
U0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVz
LCBib3JkZXJSYWRpdXNQcm9wZXJ0aWVzKTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShz
aG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyUmFkaXVzLCBib3JkZXJSYWRpdXNQ
cm9wZXJ0aWVzKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdEZsZXhGbG93TG9u
Z2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgZmxleEZsb3dQcm9wZXJ0aWVzW10gPSB7
IENTU1Byb3BlcnR5V2Via2l0RmxleERpcmVjdGlvbiwgQ1NTUHJvcGVydHlXZWJraXRGbGV4V3Jh
cCB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0
RmxleEZsb3dMb25naGFuZCwgKGZsZXhGbG93UHJvcGVydGllcywgV1RGX0FSUkFZX0xFTkdUSChm
bGV4Rmxvd1Byb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdEZsZXhGbG93TG9uZ2hhbmQ7
Cit9CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IG1hc2tQb3NpdGlvblByb3BlcnRpZXNbXSA9IHsg
Q1NTUHJvcGVydHlXZWJraXRNYXNrUG9zaXRpb25YLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3Np
dGlvblkgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uLCBtYXNrUG9zaXRpb25Qcm9wZXJ0aWVzKTsKK2NvbnN0
IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQoKQorewor
ICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luQ29sbGFwc2VQcm9wZXJ0aWVzW10gPSB7IENTU1By
b3BlcnR5V2Via2l0TWFyZ2luQmVmb3JlQ29sbGFwc2UsIENTU1Byb3BlcnR5V2Via2l0TWFyZ2lu
QWZ0ZXJDb2xsYXBzZSB9OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25n
aGFuZCwgd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFuZCwgKG1hcmdpbkNvbGxhcHNlUHJvcGVy
dGllcywgV1RGX0FSUkFZX0xFTkdUSChtYXJnaW5Db2xsYXBzZVByb3BlcnRpZXMpKSk7CisgICAg
cmV0dXJuIHdlYmtpdE1hcmdpbkNvbGxhcHNlTG9uZ2hhbmQ7Cit9CiAKLSAgICBzdGF0aWMgY29u
c3QgaW50IG1hc2tSZXBlYXRQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0TWFza1Jl
cGVhdFgsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFkgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCwgbWFz
a1JlcGVhdFByb3BlcnRpZXMpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFy
cXVlZUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IG1hcnF1ZWVQcm9wZXJ0aWVz
W10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFycXVlZURpcmVjdGlvbiwKKyAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlSW5jcmVtZW50LAorICAgICAgICBDU1NQcm9wZXJ0
eVdlYmtpdE1hcnF1ZWVSZXBldGl0aW9uLAorICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdE1hcnF1
ZWVTdHlsZSwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQKKyAgICB9Owor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFycXVl
ZUxvbmdoYW5kLCAobWFycXVlZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFycXVlZVBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hcnF1ZWVMb25naGFuZDsKK30KIAorY29u
c3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza0xvbmdoYW5kKCkKK3sKICAgICBzdGF0
aWMgY29uc3QgaW50IG1hc2tQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3BlcnR5V2Vi
a2l0TWFza0F0dGFjaG1lbnQsCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0TWFza0NsaXAsCkBA
IC0yMDcsNTAgKzMzNSwxNjEgQEAgc3RhdGljIHZvaWQgaW5pdFNob3J0aGFuZE1hcChTaG9ydGhh
bmRNYXAmIHNob3J0aGFuZE1hcCkKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0
WCwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WQogICAgIH07Ci0gICAgU0VU
X1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdE1hc2ss
IG1hc2tQcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHdlYmtpdE1hc2tMb25naGFuZCwgKG1hc2tQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVO
R1RIKG1hc2tQcm9wZXJ0aWVzKSkpOworICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmQ7Cit9
CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IGFuaW1hdGlvblByb3BlcnRpZXNbXSA9IHsKLSAgICAg
ICAgQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25OYW1lLAotICAgICAgICBDU1NQcm9wZXJ0eVdl
YmtpdEFuaW1hdGlvbkR1cmF0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlv
blRpbWluZ0Z1bmN0aW9uLAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRlbGF5
LAotICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50LAotICAg
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvbkRpcmVjdGlvbiwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25GaWxsTW9kZQorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQoKQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgbWFz
a1Bvc2l0aW9uUHJvcGVydGllc1tdID0geyBDU1NQcm9wZXJ0eVdlYmtpdE1hc2tQb3NpdGlvblgs
IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uWSB9OworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1Bvc2l0aW9uTG9uZ2hhbmQsIChtYXNr
UG9zaXRpb25Qcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKG1hc2tQb3NpdGlvblByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tQb3NpdGlvbkxvbmdoYW5kOworfQorCitjb25z
dCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXNrUmVwZWF0TG9uZ2hhbmQoKQoreworICAg
IHN0YXRpYyBjb25zdCBpbnQgbWFza1JlcGVhdFByb3BlcnRpZXNbXSA9IHsgQ1NTUHJvcGVydHlX
ZWJraXRNYXNrUmVwZWF0WCwgQ1NTUHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WSB9OworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0TWFza1JlcGVhdExv
bmdoYW5kLCAobWFza1JlcGVhdFByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgobWFza1JlcGVh
dFByb3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZDsKK30K
KworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lzTG9uZ2hhbmQo
KQoreworICAgIHN0YXRpYyBjb25zdCBpbnQgdGV4dEVtcGhhc2lzUHJvcGVydGllc1tdID0gewor
ICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc1N0eWxlLAorICAgICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yCiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5E
X01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9uLCBhbmlt
YXRpb25Qcm9wZXJ0aWVzKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9u
Z2hhbmQsIHdlYmtpdFRleHRFbXBoYXNpc0xvbmdoYW5kLCAodGV4dEVtcGhhc2lzUHJvcGVydGll
cywgV1RGX0FSUkFZX0xFTkdUSCh0ZXh0RW1waGFzaXNQcm9wZXJ0aWVzKSkpOworICAgIHJldHVy
biB3ZWJraXRUZXh0RW1waGFzaXNMb25naGFuZDsKK30KKworY29uc3QgQ1NTUHJvcGVydHlMb25n
aGFuZCYgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50
IHRleHRTdHJva2VQcm9wZXJ0aWVzW10gPSB7IENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdp
ZHRoLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciB9OworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kLCAo
dGV4dFN0cm9rZVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dFN0cm9rZVByb3BlcnRp
ZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRleHRTdHJva2VMb25naGFuZDsKK30KIAorY29uc3Qg
Q1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxvbmdoYW5kKCkKK3sKICAgICBz
dGF0aWMgY29uc3QgaW50IHRyYW5zaXRpb25Qcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvblByb3BlcnR5LAogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtp
dFRyYW5zaXRpb25EdXJhdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9u
VGltaW5nRnVuY3Rpb24sCiAgICAgICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNpdGlvbkRlbGF5
CiAgICAgfTsKLSAgICBTRVRfU0hPUlRIQU5EX01BUF9FTlRSWShzaG9ydGhhbmRNYXAsIENTU1By
b3BlcnR5V2Via2l0VHJhbnNpdGlvbiwgdHJhbnNpdGlvblByb3BlcnRpZXMpOworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoQ1NTUHJvcGVydHlMb25naGFuZCwgd2Via2l0VHJhbnNpdGlvbkxvbmdo
YW5kLCAodHJhbnNpdGlvblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNpdGlvblBy
b3BlcnRpZXMpKSk7CisgICAgcmV0dXJuIHdlYmtpdFRyYW5zaXRpb25Mb25naGFuZDsKK30KIAor
Y29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQo
KQorewogICAgIHN0YXRpYyBjb25zdCBpbnQgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllc1tdID0g
ewogICAgICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCiAgICAgICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWQogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFO
RF9NQVBfRU5UUlkoc2hvcnRoYW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdp
biwgdHJhbnNmb3JtT3JpZ2luUHJvcGVydGllcyk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChD
U1NQcm9wZXJ0eUxvbmdoYW5kLCB3ZWJraXRUcmFuc2Zvcm1PcmlnaW5Mb25naGFuZCwgKHRyYW5z
Zm9ybU9yaWdpblByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodHJhbnNmb3JtT3JpZ2luUHJv
cGVydGllcykpKTsKKyAgICByZXR1cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQ7Cit9
CiAKLSAgICBzdGF0aWMgY29uc3QgaW50IHRleHRFbXBoYXNpc1Byb3BlcnRpZXNbXSA9IHsKLSAg
ICAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwKLSAgICAgICAgQ1NTUHJv
cGVydHlXZWJraXRUZXh0RW1waGFzaXNTdHlsZQorY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0V3JhcExvbmdoYW5kKCkKK3sKKyAgICBzdGF0aWMgY29uc3QgaW50IHdlYmtpdFdyYXBQ
cm9wZXJ0aWVzW10gPSB7CisgICAgICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3csCisgICAg
ICAgIENTU1Byb3BlcnR5V2Via2l0V3JhcE1hcmdpbiwKKyAgICAgICAgQ1NTUHJvcGVydHlXZWJr
aXRXcmFwUGFkZGluZwogICAgIH07Ci0gICAgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkoc2hvcnRo
YW5kTWFwLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpcywgdGV4dEVtcGhhc2lzUHJvcGVy
dGllcyk7Ci0KLSAgICAjdW5kZWYgU0VUX1NIT1JUSEFORF9NQVBfRU5UUlkKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKENTU1Byb3BlcnR5TG9uZ2hhbmQsIHdlYmtpdFdyYXBMb25naGFuZCwgKHdl
YmtpdFdyYXBQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHdlYmtpdFdyYXBQcm9wZXJ0aWVz
KSkpOworICAgIHJldHVybiB3ZWJraXRXcmFwTG9uZ2hhbmQ7CiB9CiAKLUNTU1Byb3BlcnR5TG9u
Z2hhbmQgbG9uZ2hhbmRGb3JQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKKy8vIFJldHVybnMgYW4g
ZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kCitjb25zdCBDU1NQ
cm9wZXJ0eUxvbmdoYW5kJiBsb25naGFuZEZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQogewot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2hvcnRoYW5kTWFwLCBzaG9ydGhhbmRNYXAsICgpKTsK
LSAgICBpZiAoc2hvcnRoYW5kTWFwLmlzRW1wdHkoKSkKLSAgICAgICAgaW5pdFNob3J0aGFuZE1h
cChzaG9ydGhhbmRNYXApOwotCi0gICAgcmV0dXJuIHNob3J0aGFuZE1hcC5nZXQocHJvcGVydHlJ
RCk7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tn
cm91bmQ6CisgICAgICAgIHJldHVybiBiYWNrZ3JvdW5kTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uOgorICAgICAgICByZXR1cm4gYmFja2dyb3VuZFBv
c2l0aW9uTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZFJlcGVhdDoK
KyAgICAgICAgcmV0dXJuIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXI6CisgICAgICAgIHJldHVybiBib3JkZXJMb25naGFuZCgpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b206CisgICAgICAgIHJldHVybiBib3JkZXJCb3R0b21M
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xvcjoKKyAgICAgICAgcmV0
dXJuIGJvcmRlckNvbG9yTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVySW1h
Z2U6CisgICAgICAgIHJldHVybiBib3JkZXJJbWFnZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eUJvcmRlckxlZnQ6CisgICAgICAgIHJldHVybiBib3JkZXJMZWZ0TG9uZ2hhbmQoKTsK
KyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmFkaXVzOgorICAgICAgICByZXR1cm4gYm9yZGVy
UmFkaXVzTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQ6CisgICAg
ICAgIHJldHVybiBib3JkZXJSaWdodExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlclNwYWNpbmc6CisgICAgICAgIHJldHVybiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3R5bGU6CisgICAgICAgIHJldHVybiBib3JkZXJTdHls
ZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclRvcDoKKyAgICAgICAgcmV0
dXJuIGJvcmRlclRvcExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlcldpZHRo
OgorICAgICAgICByZXR1cm4gYm9yZGVyV2lkdGhMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlMaXN0U3R5bGU6CisgICAgICAgIHJldHVybiBsaXN0U3R5bGVMb25naGFuZCgpOworICAg
IGNhc2UgQ1NTUHJvcGVydHlGb250OgorICAgICAgICByZXR1cm4gZm9udExvbmdoYW5kKCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eU1hcmdpbjoKKyAgICAgICAgcmV0dXJuIG1hcmdpbkxvbmdoYW5k
KCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmU6CisgICAgICAgIHJldHVybiBvdXRsaW5l
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3c6CisgICAgICAgIHJldHVy
biBvdmVyZmxvd0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAg
ICAgIHJldHVybiBwYWRkaW5nTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
QW5pbWF0aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0QW5pbWF0aW9uTG9uZ2hhbmQoKTsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm9yZGVyQWZ0ZXI6CisgICAgICAgIHJldHVybiB3ZWJr
aXRCb3JkZXJBZnRlckxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRl
ckJlZm9yZToKKyAgICAgICAgcmV0dXJuIHdlYmtpdEJvcmRlckJlZm9yZUxvbmdoYW5kKCk7Cisg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlckVuZDoKKyAgICAgICAgcmV0dXJuIHdlYmtp
dEJvcmRlckVuZExvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJvcmRlclN0
YXJ0OgorICAgICAgICByZXR1cm4gd2Via2l0Qm9yZGVyU3RhcnRMb25naGFuZCgpOworICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRCb3JkZXJSYWRpdXM6CisgICAgICAgIHJldHVybiBib3JkZXJS
YWRpdXNMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5zOgorICAg
ICAgICByZXR1cm4gd2Via2l0Q29sdW1uc0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbHVtblJ1bGU6CisgICAgICAgIHJldHVybiB3ZWJraXRDb2x1bW5SdWxlTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0RmxleEZsb3c6CisgICAgICAgIHJldHVy
biB3ZWJraXRGbGV4Rmxvd0xvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1h
cmdpbkNvbGxhcHNlOgorICAgICAgICByZXR1cm4gd2Via2l0TWFyZ2luQ29sbGFwc2VMb25naGFu
ZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlOgorICAgICAgICByZXR1cm4g
d2Via2l0TWFycXVlZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hc2s6
CisgICAgICAgIHJldHVybiB3ZWJraXRNYXNrTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWFza1Bvc2l0aW9uOgorICAgICAgICByZXR1cm4gd2Via2l0TWFza1Bvc2l0aW9u
TG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdDoKKyAgICAg
ICAgcmV0dXJuIHdlYmtpdE1hc2tSZXBlYXRMb25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RW1waGFzaXM6CisgICAgICAgIHJldHVybiB3ZWJraXRUZXh0RW1waGFzaXNM
b25naGFuZCgpOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlOgorICAgICAg
ICByZXR1cm4gd2Via2l0VGV4dFN0cm9rZUxvbmdoYW5kKCk7CisgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zaXRpb246CisgICAgICAgIHJldHVybiB3ZWJraXRUcmFuc2l0aW9uTG9uZ2hh
bmQoKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgorICAgICAg
ICByZXR1cm4gd2Via2l0VHJhbnNmb3JtT3JpZ2luTG9uZ2hhbmQoKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0V3JhcDoKKyAgICAgICAgcmV0dXJuIHdlYmtpdFdyYXBMb25naGFuZCgpOwor
ICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NQcm9wZXJ0eUxv
bmdoYW5kLCBkZWZhdWx0TG9uZ2hhbmQsICgpKTsKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRMb25n
aGFuZDsKKyAgICB9CisgICAgfQogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdoYW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlMb25naGFuZC5oCmluZGV4IDk2MzNjMDI1YWJmZGFhMmM3
ZDljOGYzNGU0MjI2Y2ExZDEzYjFkNDMuLjkxZDY4NzQ4YzAwZmJjNWQ5MDU5Y2U2NTRkOTc4OTdh
MzI4ZDFkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eUxvbmdo
YW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TG9uZ2hhbmQuaApAQCAt
NDUsOCArNDUsNDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xlbmd0aDsKIH07CiAKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgYmFja2dyb3VuZFBvc2l0aW9uTG9uZ2hhbmQoKTsKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJhY2tncm91bmRSZXBlYXRMb25naGFuZCgpOworY29uc3QgQ1NT
UHJvcGVydHlMb25naGFuZCYgYm9yZGVyTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9u
Z2hhbmQmIGJvcmRlckJvdHRvbUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5k
JiBib3JkZXJDb2xvckxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3Jk
ZXJJbWFnZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJMZWZ0
TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclJhZGl1c0xvbmdo
YW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJSaWdodExvbmdoYW5kKCk7
Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBib3JkZXJTcGFjaW5nTG9uZ2hhbmQoKTsKK2Nv
bnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclN0eWxlTG9uZ2hhbmQoKTsKK2NvbnN0IENT
U1Byb3BlcnR5TG9uZ2hhbmQmIGJvcmRlclRvcExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBib3JkZXJXaWR0aExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdo
YW5kJiBsaXN0U3R5bGVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgZm9u
dExvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiBtYXJnaW5Mb25naGFuZCgp
OworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgb3V0bGluZUxvbmdoYW5kKCk7Citjb25zdCBD
U1NQcm9wZXJ0eUxvbmdoYW5kJiBvdmVyZmxvd0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0
eUxvbmdoYW5kJiBwYWRkaW5nTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQm
IHdlYmtpdEFuaW1hdGlvbkxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRCb3JkZXJBZnRlckxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3
ZWJraXRCb3JkZXJCZWZvcmVMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYg
d2Via2l0Qm9yZGVyRW5kTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdEJvcmRlclN0YXJ0TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdl
YmtpdENvbHVtbnNMb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0
Q29sdW1uUnVsZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRG
bGV4Rmxvd0xvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRNYXJn
aW5Db2xsYXBzZUxvbmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRN
YXJxdWVlTG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0TWFza1Bvc2l0aW9u
TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdE1hc2tSZXBlYXRM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VGV4dEVtcGhhc2lz
TG9uZ2hhbmQoKTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIHdlYmtpdFRleHRTdHJva2VM
b25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0VHJhbnNpdGlvbkxv
bmdoYW5kKCk7Citjb25zdCBDU1NQcm9wZXJ0eUxvbmdoYW5kJiB3ZWJraXRUcmFuc2Zvcm1Pcmln
aW5Mb25naGFuZCgpOworY29uc3QgQ1NTUHJvcGVydHlMb25naGFuZCYgd2Via2l0V3JhcExvbmdo
YW5kKCk7CisKIC8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90
IGEgc2hvcnRoYW5kCi1DU1NQcm9wZXJ0eUxvbmdoYW5kIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50
KTsKK2NvbnN0IENTU1Byb3BlcnR5TG9uZ2hhbmQmIGxvbmdoYW5kRm9yUHJvcGVydHkoaW50KTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>