<?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>230033</bug_id>
          
          <creation_ts>2021-09-07 19:29:11 -0700</creation_ts>
          <short_desc>[JSC] Implement Temporal.PlainDate</short_desc>
          <delta_ts>2022-02-21 12:32:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>223166</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>philip.chimento</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1791333</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-07 19:29:11 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793580</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-14 19:30:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83127747&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802505</commentid>
    <comment_count>2</comment_count>
      <attachid>440747</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-10-10 17:39:58 -0700</bug_when>
    <thetext>Created attachment 440747
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841036</commentid>
    <comment_count>3</comment_count>
      <attachid>451827</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-13 11:09:12 -0800</bug_when>
    <thetext>Created attachment 451827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841061</commentid>
    <comment_count>4</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-13 12:28:25 -0800</bug_when>
    <thetext>It seems the non-Apple bots are not generating the lut.h file, but I don&apos;t understand why not. DerivedSources.make has been updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841062</commentid>
    <comment_count>5</comment_count>
      <attachid>451837</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-13 12:30:40 -0800</bug_when>
    <thetext>Created attachment 451837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841065</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-13 13:13:09 -0800</bug_when>
    <thetext>This is not intended to implement all of the API, but provide enough to easily add the rest. Yusuke&apos;s original patch is a more complete implementation - so I intend to merge bits from that as I go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841765</commentid>
    <comment_count>7</comment_count>
      <attachid>452041</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-15 09:44:20 -0800</bug_when>
    <thetext>Created attachment 452041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843688</commentid>
    <comment_count>8</comment_count>
      <attachid>452041</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-18 16:03:34 -0800</bug_when>
    <thetext>Comment on attachment 452041
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843773</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-18 20:17:30 -0800</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 452041 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843863</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2022-02-19 09:43:51 -0800</bug_when>
    <thetext>Committed r290209 (247537@trunk): &lt;https://commits.webkit.org/247537@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843874</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-19 11:03:07 -0800</bug_when>
    <thetext>I&apos;ll extract my old patch&apos;s parsing code and upload it separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844316</commentid>
    <comment_count>12</comment_count>
      <attachid>452041</attachid>
    <who name="Philip Chimento">philip.chimento</who>
    <bug_when>2022-02-21 12:16:40 -0800</bug_when>
    <thetext>Comment on attachment 452041
Patch

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

Thanks! Although I&apos;m not a WebKit reviewer I&apos;ve taken a quick look at this from the Temporal perspective and noted some things that could be covered in one of your follow-ups :-)

What would be a good way to keep track of what parts of PlainDate are done and what still needs doing?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:992
&gt; +    return makeString(pad(&apos;0&apos;, 4, plainDate.year()), &apos;-&apos;, pad(&apos;0&apos;, 2, plainDate.month()), &apos;-&apos;, pad(&apos;0&apos;, 2, plainDate.day()));

Just a note for future improvements: this should be able to output 6-digit extended years if the year is outside the range 1000-9999.

&gt; Source/JavaScriptCore/runtime/TemporalPlainDate.cpp:87
&gt; +static ISO8601::PlainDate toPlainDate(JSGlobalObject* globalObject, ISO8601::Duration&amp;&amp; duration)

Nothing wrong with this usage of ISO8601::Duration as a &quot;bag of ISO units&quot; but maybe we should rename it to something like ISO8601::Units, or create ISO8601::Units as a separate type without the other Duration-like methods from Duration?

&gt; Source/JavaScriptCore/runtime/TemporalPlainDate.cpp:120
&gt; +

There&apos;s a step missing here (a call to ISODateTimeWithinLimits, https://tc39.es/proposal-temporal/#_ref_222) although I don&apos;t know if it belongs in this method or in toPlainDate() or create().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844325</commentid>
    <comment_count>13</comment_count>
      <attachid>452041</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-02-21 12:32:09 -0800</bug_when>
    <thetext>Comment on attachment 452041
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/TemporalPlainDate.cpp:120
&gt;&gt; +
&gt; 
&gt; There&apos;s a step missing here (a call to ISODateTimeWithinLimits, https://tc39.es/proposal-temporal/#_ref_222) although I don&apos;t know if it belongs in this method or in toPlainDate() or create().

This is done in https://bugs.webkit.org/show_bug.cgi?id=236936</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440747</attachid>
            <date>2021-10-10 17:39:58 -0700</date>
            <delta_ts>2021-10-10 17:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230033-20211010173957.patch</filename>
            <type>text/plain</type>
            <size>97816</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgzODgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YTIxYTMwY2M0YTNjMDUwNTUwZjczNGFjNWRmZWRlMWExNzExODk0Li40YmQzOTIxMDNlNWMzODcx
MGYzN2RiYzgyODQyNzJmZTQwOTcyOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAyMS0xMC0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpbkRhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDAzMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmNhbkJl
Q2FsZW5kYXIpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpjYW5CZVRpbWVab25lKToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24pOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpwYXJzZUNhbGVuZGFyKToKKyAgICAgICAgKEpTQzo6SVNPODYw
MTo6cGFyc2VDYWxlbmRhckRhdGVUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0lTTzg2MDEuaDoK
KyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjpQbGFpbkRhdGUpOgorICAgICAgICAo
SlNDOjpJU084NjAxOjpQbGFpbkRhdGU6OnJhdyBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OlBsYWluRGF0ZTo6ZnJvbVJhdyk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpwbGFpbkRh
dGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjpjcmVhdGVQbGFpbkRhdGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGlt
ZS9UZW1wb3JhbFBsYWluRGF0ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluRGF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGU6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlOjpUZW1wb3JhbFBs
YWluRGF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlOjp2aXNpdENoaWxkcmVuSW1wbCk6
CisgICAgICAgIChKU0M6OnRvUGxhaW5EYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFp
bkRhdGU6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpub25OZWdhdGl2ZU1vZHVs
byk6CisgICAgICAgIChKU0M6OmJhbGFuY2VUaW1lKToKKyAgICAgICAgKEpTQzo6cm91bmRUaW1l
KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGU6OnJvdW5kIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6cHJvcGVydHlOYW1lKToKKyAgICAgICAgKEpTQzo6dG9UZW1wb3JhbFRpbWVSZWNvcmQpOgor
ICAgICAgICAoSlNDOjp0b1BhcnRpYWxUaW1lKToKKyAgICAgICAgKEpTQzo6Y29uc3RyYWludFRp
bWUpOgorICAgICAgICAoSlNDOjpyZWd1bGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBv
cmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVsdCk6CisgICAgICAgIChKU0M6OmdldFRlbXBvcmFsQ2Fs
ZW5kYXJXaXRoSVNPRGVmYXVsdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlOjpm
cm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGU6OmNvbXBhcmUpOgorICAgICAg
ICAoSlNDOjp0b0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uKToKKyAgICAgICAgKEpTQzo6YWRkVGlt
ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlOjphZGQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6c3VidHJhY3QgY29uc3QpOgorICAgICAgICAoSlND
OjpUZW1wb3JhbFBsYWluRGF0ZTo6d2l0aCBjb25zdCk6CisgICAgICAgIChKU0M6OmRpZmZlcmVu
Y2VUaW1lKToKKyAgICAgICAgKEpTQzo6ZXh0cmFjdERpZmZlcmVuY2VPcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGU6OnVudGlsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxQbGFpbkRhdGU6OnNpbmNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBv
cmFsUGxhaW5EYXRlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpbkRh
dGVDb25zdHJ1Y3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0
ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWlu
RGF0ZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxh
aW5EYXRlUHJvdG90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvVk0uaDoKKwogMjAyMS0xMC0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFJlZmluZSBSZWdFeHAjY29tcGlsZSBiYXNl
ZCBvbiByZWdleHAtbGVnYWN5LWZlYXR1cmVzIHByb3Bvc2FsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggMDAxODI3YmFjYjAyZDkwMmYzNDdjNmJkZmE3ZGFmZTM0N2QwZGI5
My4uNTEyODgxZGUzNGViZWNjMTNkOWVjZjc3MmUzZGQ0YzllMGRmYWJhMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0
Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5j
cHAKKyAgICBydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcAogICAgIHJ1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL1RlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRl
eCA3ODk3NTZmMTBmOGJkYjgwYzUyZjRiZTk4MGY1M2Y0OTJhMmQxZDRiLi43NDVhNmYxNTk1YzU1
NjI5MWFjN2NmNDBiOGE0MjBiNzI2NmZjNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQpAQCAtMTk3LDYgKzE5Nyw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9
IFwKICAgICBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbE5v
dy5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0LmggXAorICAgIFRlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3IubHV0LmggXAorICAgIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmx1
dC5oIFwKICAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBUZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzU4Yjg2YmU0
YTFmOTVkMzRlOWRjYTE5ODRhYmFmNjAzMGU5YjVlYi4uY2RlNDQwMTM0YzdiYzQyZDkxNTY5MzUy
YTc2ZDJiOGFkMjI0ZjE3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5NTIs
NiArMTk1Miw5IEBACiAJCUUzQzc5Q0FCMURCOUE0REMwMEQxRUNBNCAvKiBET01KSVRFZmZlY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQzc5Q0FB
MURCOUE0RDYwMEQxRUNBNCAvKiBET01KSVRFZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFM0M4RUQ0MzIzQTFEQkNCMDAxMzE5NTggLyog
SXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTNDOEVENDIyM0ExREJDNTAwMTMxOTU4IC8qIElzb0lubGluZWRIZWFw
Q2VsbFR5cGUuaCAqLzsgfTsKIAkJRTNDQTNBNEUyNTI3QUIyRjAwNDgwMkJGIC8qIEpJVE9wZXJh
dGlvbkxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzQ0EzQTRDMjUyN0FCMkYwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25MaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTNDRDVGMUYyNkU4NkEy
NDAwNTg3MTIwIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQ0Q1RjE5MjZFODZBMjMwMDU4NzEy
MCAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi87IH07CisJCUUzQ0Q1RjIwMjZF
ODZBMjQwMDU4NzEyMCAvKiBUZW1wb3JhbFBsYWluRGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNDRDVGMUEyNkU4NkEyMzAwNTg3MTIwIC8qIFRl
bXBvcmFsUGxhaW5EYXRlLmggKi87IH07CisJCUUzQ0Q1RjIxMjZFODZBMjQwMDU4NzEyMCAvKiBU
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTNDRDVGMUIyNkU4NkEyMzAwNTg3MTIwIC8qIFRlbXBvcmFsUGxh
aW5EYXRlUHJvdG90eXBlLmggKi87IH07CiAJCUUzRDIzOUM5MUI4MjlDMUMwMEJCRUY2NyAvKiBK
U01vZHVsZUVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFM0QyMzlDNzFCODI5QzFDMDBCQkVGNjcgLyogSlNNb2R1bGVFbnZpcm9ubWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUz
RDM1MTVGMjQxQjg5RDcwMDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRDM1MTVEMjQxQjg5Q0Uw
MDhEQzE2RSAvKiBNYXJrZWRKU1ZhbHVlUmVmQXJyYXkuaCAqLzsgfTsKIAkJRTNEODc3NzQxRTY1
QzBBMDAwQkU5NDVBIC8qIEJ5dGVjb2RlRHVtcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Q4Nzc3MjFFNjVDMDg5MDBCRTk0NUEgLyogQnl0ZWNv
ZGVEdW1wZXIuaCAqLzsgfTsKQEAgLTUyOTEsNiArNTI5NCwxMiBAQAogCQlFM0M4RUQ0MjIzQTFE
QkM1MDAxMzE5NTggLyogSXNvSW5saW5lZEhlYXBDZWxsVHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJc29JbmxpbmVkSGVhcENlbGxUeXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzQ0EzQTRCMjUyN0FCMkUwMDQ4MDJCRiAvKiBKSVRPcGVyYXRpb25M
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVE9wZXJhdGlv
bkxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0NBM0E0QzI1MjdBQjJG
MDA0ODAyQkYgLyogSklUT3BlcmF0aW9uTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRPcGVyYXRpb25MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUUzQ0Q1RjE4MjZFODZBMjIwMDU4NzEyMCAvKiBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQ0Q1RjE5MjZF
ODZBMjMwMDU4NzEyMCAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNDRDVGMUEyNkU4NkEyMzAwNTg3MTIwIC8q
IFRlbXBvcmFsUGxhaW5EYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
bXBvcmFsUGxhaW5EYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQ0Q1RjFC
MjZFODZBMjMwMDU4NzEyMCAvKiBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0NENUYxQzI2RTg2QTIzMDA1ODcxMjAgLyog
VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTNDRDVGMUQyNkU4NkEyNDAwNTg3MTIwIC8qIFRlbXBvcmFs
UGxhaW5EYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBv
cmFsUGxhaW5EYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjM5QzYx
QjgyOUMxQzAwQkJFRjY3IC8qIEpTTW9kdWxlRW52aXJvbm1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNb2R1bGVFbnZpcm9ubWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzRDIzOUM3MUI4MjlDMUMwMEJCRUY2NyAvKiBKU01vZHVs
ZUVudmlyb25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW9kdWxl
RW52aXJvbm1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNEMjY0MjYxRDM4
QzA0MjAwMEJFMTc0IC8qIEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjIsNiArODA3MSwxMiBAQAogCQkJ
CUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1
MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRjZGMTUw
MUEyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmggKi8sCisJCQkJRTNDRDVGMUQy
NkU4NkEyNDAwNTg3MTIwIC8qIFRlbXBvcmFsUGxhaW5EYXRlLmNwcCAqLywKKwkJCQlFM0NENUYx
QTI2RTg2QTIzMDA1ODcxMjAgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCAqLywKKwkJCQlFM0NENUYx
QzI2RTg2QTIzMDA1ODcxMjAgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgKi8s
CisJCQkJRTNDRDVGMTkyNkU4NkEyMzAwNTg3MTIwIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3Ry
dWN0b3IuaCAqLywKKwkJCQlFM0NENUYxODI2RTg2QTIyMDA1ODcxMjAgLyogVGVtcG9yYWxQbGFp
bkRhdGVQcm90b3R5cGUuY3BwICovLAorCQkJCUUzQ0Q1RjFCMjZFODZBMjMwMDU4NzEyMCAvKiBU
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCUUzODZGRDc3MjZFODY3QjcwMEU0
QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZS5jcHAgKi8sCiAJCQkJRTM4NkZENzgyNkU4NjdCODAw
RTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggKi8sCiAJCQkJRTM4NkZENzQyNkU4NjdCNzAw
RTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwICovLApAQCAtMTA3OTcs
NiArMTA4MTIsOSBAQAogCQkJCUEzQzdFREJBMjZCMERCMzgwMDRDMzRDNSAvKiBUZW1wb3JhbER1
cmF0aW9uQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUEzQzdFREI2MjZCMERCMzgw
MDRDMzRDNSAvKiBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFM0NENUYyMDI2RTg2QTI0MDA1ODcxMjAgLyogVGVtcG9yYWxQbGFpbkRh
dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzQ0Q1RjFGMjZFODZBMjQwMDU4NzEyMCAvKiBUZW1w
b3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlFM0NENUYyMTI2
RTg2QTI0MDA1ODcxMjAgLyogVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0IyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFs
UGxhaW5UaW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdGMjZFODY3
QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggZjA0NDUxZDAzOGRiMzBjNzUxZjQ2YTlh
NGQ3NDg2M2NiNmIyZDg1NS4uMDBhMTQ2NmZhNGE0MDAwOGNjM2M1M2VjZDk1NzI1ZmUwMTI0NmQx
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMTAyMCw2ICsxMDIwLDkgQEAgcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiBydW50aW1lL1RlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1w
b3JhbE9iamVjdC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwCitydW50aW1lL1Rl
bXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRl
UHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
U084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmlu
ZGV4IGU3MmJmNzI3N2IyMmYzNzY1Mjk2NGVmNDQzNjYxMGU5NjM0MzFkOWMuLjJmNDVkMmViYjZk
NGJhNTQwNWE5NGZlNGMwZDc4YjI2YjI1MTFiYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lTTzg2MDEuY3BwCkBAIC00MjksNiArNDI5LDQ0IEBAIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyBzdHJpbmcpCiAg
ICAgfSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgYm9v
bCBjYW5CZUNhbGVuZGFyKGNvbnN0IFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4m
IGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3By
b2QtQ2FsZW5kYXIKKyAgICAvLyBDYWxlbmRhciA6CisgICAgLy8gICAgIFt1LWNhPSBDYWxlbmRh
ck5hbWVdCisgICAgcmV0dXJuIGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA+PSA2ICYmIGJ1ZmZl
clswXSA9PSAnWycgJiYgYnVmZmVyWzFdID09ICd1JyAmJiBidWZmZXJbMl0gPT0gJy0nICYmIGJ1
ZmZlclszXSA9PSAnYycgJiYgYnVmZmVyWzRdID09ICdhJyAmJiBidWZmZXJbNV0gPT0gJz0nOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGJvb2wgY2FuQmVU
aW1lWm9uZShjb25zdCBTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIs
IENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQoreworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VUNo
YXI+KGNoYXJhY3RlcikpIHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6
JzoKKyAgICBjYXNlICdaJzoKKyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRT
aWduCisgICAgY2FzZSAnKyc6CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSBtaW51c1NpZ246Cisg
ICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAg
IGNhc2UgJ1snOiB7CisgICAgICAgIC8vIFdlIHNob3VsZCByZWplY3QgY2FsZW5kYXIgZXh0ZW5z
aW9uIGNhc2UuCisgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
cHJvZC1DYWxlbmRhcgorICAgICAgICAvLyBDYWxlbmRhciA6CisgICAgICAgIC8vICAgICBbdS1j
YT0gQ2FsZW5kYXJOYW1lXQorICAgICAgICBpZiAoY2FuQmVDYWxlbmRhcihidWZmZXIpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8VmVjdG9y
PExDaGFyPiwgaW50NjRfdD4+IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKQEAgLTQ0NCw2ICs0ODIs
OSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWYXJpYW50PFZlY3RvcjxMQ2hhcj4sIGludDY0X3Q+
PiBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ubwogICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWlu
aW5nKCkgPCAzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgaWYgKGNhbkJl
Q2FsZW5kYXIoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwogICAgIGlm
ICgqYnVmZmVyICE9ICdbJykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBidWZm
ZXIuYWR2YW5jZSgpOwpAQCAtNTgxLDM1ICs2MjIsNiBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxW
YXJpYW50PFZlY3RvcjxMQ2hhcj4sIGludDY0X3Q+PiBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5u
bwogICAgIH0KIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBi
b29sIGNhbkJlVGltZVpvbmUoY29uc3QgU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyLCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKLXsKLSAgICBzd2l0Y2ggKHN0YXRp
Y19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKSB7Ci0gICAgLy8gVVRDRGVzaWduYXRvcgotICAgIC8v
IGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1VVENEZXNpZ25hdG9yCi0g
ICAgY2FzZSAneic6Ci0gICAgY2FzZSAnWic6Ci0gICAgLy8gVGltZVpvbmVVVENPZmZzZXRTaWdu
Ci0gICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25l
VVRDT2Zmc2V0U2lnbgotICAgIGNhc2UgJysnOgotICAgIGNhc2UgJy0nOgotICAgIGNhc2UgbWlu
dXNTaWduOgotICAgIC8vIFRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgotICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90
YXRpb24KLSAgICBjYXNlICdbJzogewotICAgICAgICAvLyBXZSBzaG91bGQgcmVqZWN0IGNhbGVu
ZGFyIGV4dGVuc2lvbiBjYXNlLgotICAgICAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3Byb2QtQ2FsZW5kYXIKLSAgICAgICAgLy8gQ2FsZW5kYXIgOgotICAgICAgICAv
LyAgICAgW3UtY2E9IENhbGVuZGFyTmFtZV0KLSAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1h
aW5pbmcoKSA+PSA2ICYmIGJ1ZmZlclsxXSA9PSAndScgJiYgYnVmZmVyWzJdID09ICctJyAmJiBi
dWZmZXJbM10gPT0gJ2MnICYmIGJ1ZmZlcls0XSA9PSAnYScgJiYgYnVmZmVyWzVdID09ICc9JykK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJl
Y29yZD4gcGFyc2VUaW1lWm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBi
dWZmZXIpCiB7CkBAIC02NTgsNiArNjcwLDk3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lUmVjb3JkPiBwYXJzZVRpbWVab25lKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyCiAg
ICAgfQogfQogCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIHN0ZDo6
b3B0aW9uYWw8Q2FsZW5kYXJSZWNvcmQ+IHBhcnNlQ2FsZW5kYXIoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBD
YWxlbmRhciA6CisgICAgLy8gICAgIFt1LWNhPSBDYWxlbmRhck5hbWUgXQorICAgIC8vCisgICAg
Ly8gQ2FsZW5kYXJOYW1lIDoKKyAgICAvLyAgICAgQ2FsZW5kYXJOYW1lQ29tcG9uZW50CisgICAg
Ly8gICAgIENhbGVuZGFyTmFtZUNvbXBvbmVudCAtIENhbGVuZGFyTmFtZQorICAgIC8vCisgICAg
Ly8gQ2FsZW5kYXJOYW1lQ29tcG9uZW50IDoKKyAgICAvLyAgICAgQ2FsQ2hhciBDYWxDaGFyIENh
bENoYXIgQ2FsQ2hhcltvcHRdIENhbENoYXJbb3B0XSBDYWxDaGFyW29wdF0gQ2FsQ2hhcltvcHRd
IENhbENoYXJbb3B0XQorICAgIC8vCisgICAgLy8gQ2FsQ2hhciA6CisgICAgLy8gICAgIEFscGhh
CisgICAgLy8gICAgIERpZ2l0CisKKyAgICBpZiAoIWNhbkJlQ2FsZW5kYXIoYnVmZmVyKSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBidWZmZXIuYWR2YW5jZUJ5KDYpOworCisg
ICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHVuc2lnbmVkIG5hbWVMZW5ndGggPSAwOworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSAwOworICAgICAgICBmb3IgKDsgaW5kZXggPCBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCk7
ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gYnVmZmVyW2luZGV4XTsK
KyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJ10nKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSAmJiAhaXNBU0NJSURp
Z2l0KGNoYXJhY3RlcikgJiYgY2hhcmFjdGVyICE9ICctJykKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBuYW1lTGVuZ3RoID0gaW5kZXg7Cisg
ICAgfQorCisgICAgYXV0byBpc1ZhbGlkQ29tcG9uZW50ID0gWyZdKHVuc2lnbmVkIHN0YXJ0LCB1
bnNpZ25lZCBlbmQpIHsKKyAgICAgICAgdW5zaWduZWQgY29tcG9uZW50TGVuZ3RoID0gZW5kIC0g
c3RhcnQ7CisgICAgICAgIGlmIChjb21wb25lbnRMZW5ndGggPCAzKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBpZiAoY29tcG9uZW50TGVuZ3RoID4gOCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfTsKKworICAgIHVuc2ln
bmVkIGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCA9IDA7CisgICAgYm9vbCBpc0xlYWRp
bmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQgPSB0cnVlOworICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IG5hbWVMZW5ndGg7ICsraW5kZXgpIHsKKyAgICAgICAgYXV0byBjaGFy
YWN0ZXIgPSBidWZmZXJbaW5kZXhdOworICAgICAgICBpZiAoaXNMZWFkaW5nQ2hhcmFjdGVySW5O
YW1lQ29tcG9uZW50KSB7CisgICAgICAgICAgICBpZiAoIShpc0FTQ0lJQWxwaGEoY2hhcmFjdGVy
KSB8fCBpc0FTQ0lJRGlnaXQoY2hhcmFjdGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgICAgICAgICAgY3VycmVudE5hbWVDb21wb25lbnRTdGFydEluZGV4
ID0gaW5kZXg7CisgICAgICAgICAgICBpc0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSAnLScpIHsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZENvbXBvbmVudChj
dXJyZW50TmFtZUNvbXBvbmVudFN0YXJ0SW5kZXgsIGluZGV4KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgaXNMZWFkaW5nQ2hhcmFjdGVySW5OYW1l
Q29tcG9uZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCEoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikgfHwgaXNBU0NJSURpZ2l0KGNoYXJh
Y3RlcikpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgaWYg
KGlzTGVhZGluZ0NoYXJhY3RlckluTmFtZUNvbXBvbmVudCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICBpZiAoIWlzVmFsaWRDb21wb25lbnQoY3VycmVudE5hbWVDb21wb25lbnRT
dGFydEluZGV4LCBuYW1lTGVuZ3RoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIFZlY3RvcjxMQ2hhcj4gcmVzdWx0OworICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG5hbWVMZW5ndGgpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG5h
bWVMZW5ndGg7ICsraW5kZXgpCisgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoYnVmZmVy
W2luZGV4XSk7CisgICAgYnVmZmVyLmFkdmFuY2VCeShuYW1lTGVuZ3RoKTsKKworICAgIGlmIChi
dWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoKmJ1
ZmZlciAhPSAnXScpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgYnVmZmVyLmFk
dmFuY2UoKTsKKyAgICByZXR1cm4gQ2FsZW5kYXJSZWNvcmQgeyBXVEZNb3ZlKHJlc3VsdCkgfTsK
K30KKwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+
IHBhcnNlVGltZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCiB7
CkBAIC04NTcsNiArOTYwLDI5IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxh
aW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uCiAgICAgcmV0dXJu
IHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQgfTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4s
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+LCBzdGQ6Om9wdGlvbmFsPENhbGVuZGFyUmVj
b3JkPj4+IHBhcnNlQ2FsZW5kYXJEYXRlVGltZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNwcm9kLURhdGVUaW1lCisgICAgLy8gQ2FsZW5kYXJEYXRlVGltZSA6CisgICAgLy8gICAg
IERhdGVUaW1lIENhbGVuZGFyTmFtZVtvcHRdCisgICAgLy8KKyAgICBhdXRvIGRhdGVUaW1lID0g
cGFyc2VEYXRlVGltZShidWZmZXIpOworICAgIGlmICghZGF0ZVRpbWUpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvIFtwbGFpbkRhdGUsIHBsYWluVGltZU9wdGlvbmFs
LCB0aW1lWm9uZU9wdGlvbmFsXSA9IGRhdGVUaW1lLnZhbHVlKCk7CisKKyAgICBpZiAoIWJ1ZmZl
ci5hdEVuZCgpICYmIGNhbkJlQ2FsZW5kYXIoYnVmZmVyKSkgeworICAgICAgICBhdXRvIGNhbGVu
ZGFyID0gcGFyc2VDYWxlbmRhcihidWZmZXIpOworICAgICAgICBpZiAoIWNhbGVuZGFyKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUg
eyBwbGFpbkRhdGUsIHBsYWluVGltZU9wdGlvbmFsLCB0aW1lWm9uZU9wdGlvbmFsLCBjYWxlbmRh
ciB9OworICAgIH0KKworICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5EYXRlLCBwbGFpblRp
bWVPcHRpb25hbCwgdGltZVpvbmVPcHRpb25hbCwgc3RkOjpudWxsb3B0IH07Cit9CisKIHN0ZDo6
b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNv
cmQ+Pj4gcGFyc2VUaW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiByZWFkQ2hh
cmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiB7
CkBAIC04NzcsNiArMTAwMywxNiBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRl
LCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZQogICAgIH0pOwog
fQogCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBs
YWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+LCBzdGQ6Om9wdGlvbmFsPENh
bGVuZGFyUmVjb3JkPj4+IHBhcnNlQ2FsZW5kYXJEYXRlVGltZShTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBi
dWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9u
YWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4sIHN0ZDo6b3B0aW9u
YWw8Q2FsZW5kYXJSZWNvcmQ+Pj4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlQ2FsZW5k
YXJEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
KTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwtZm9ybWF0dGltZXpvbmVvZmZzZXRzdHJpbmcKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNl
dFN0cmluZyhpbnQ2NF90IG9mZnNldCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuaAppbmRleCBlOGZlMjgyMWVmODY3YjI5NjQ4YTJjNDIwYjQzMTA2YWYzNDE5Y2RjLi5k
MjA0ODA4M2FkNzRhY2JjYTE1NTBlNzhhODFhZjc2YTQyMzU3MDUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xMjgsNyArMTI4LDEzIEBAIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFBsYWluVGltZSkgPD0gc2l6ZW9mKHVpbnQ2NF90KSk7CiBjbGFzcyBQbGFpbkRh
dGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFBsYWluRGF0ZSk7CiBwdWJsaWM6Ci0g
ICAgY29uc3RleHByIFBsYWluRGF0ZSgpID0gZGVmYXVsdDsKKyAgICBjb25zdGV4cHIgUGxhaW5E
YXRlKCkKKyAgICAgICAgOiBtX3llYXIoMCkKKyAgICAgICAgLCBtX21vbnRoKDEpCisgICAgICAg
ICwgbV9kYXkoMSkKKyAgICB7CisgICAgfQorCiAgICAgY29uc3RleHByIFBsYWluRGF0ZShpbnQz
Ml90IHllYXIsIHVuc2lnbmVkIG1vbnRoLCB1bnNpZ25lZCBkYXkpCiAgICAgICAgIDogbV95ZWFy
KHllYXIpCiAgICAgICAgICwgbV9tb250aChtb250aCkKQEAgLTE0MCwxMSArMTQ2LDE1IEBAIGNs
YXNzIFBsYWluRGF0ZSB7CiAgICAgdWludDhfdCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9u
dGg7IH0KICAgICB1aW50OF90IGRheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF5OyB9CiAKKyAgICBp
bnQzMl90IHJhdygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxpbnQzMl90PigqdGhpcyk7
IH0KKyAgICBzdGF0aWMgY29uc3RleHByIFBsYWluRGF0ZSBmcm9tUmF3KGludDMyX3QgcmF3KSB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8UGxhaW5EYXRlPihyYXcpOyB9CisKIHByaXZhdGU6Ci0gICAg
aW50MzJfdCBtX3llYXIgeyAwIH07Ci0gICAgdWludDhfdCBtX21vbnRoIHsgMSB9OwotICAgIHVp
bnQ4X3QgbV9kYXkgeyAxIH07CisgICAgaW50MzJfdCBtX3llYXIgOiAyMDsKKyAgICBpbnQzMl90
IG1fbW9udGggOiA2OworICAgIGludDMyX3QgbV9kYXkgOiA2OwogfTsKK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKFBsYWluRGF0ZSkgPT0gc2l6ZW9mKGludDMyX3QpKTsKIAogdXNpbmcgVGltZVpvbmUg
PSBWYXJpYW50PFRpbWVab25lSUQsIGludDY0X3Q+OwogCkBAIC0xNTYsNiArMTY2LDEwIEBAIHN0
cnVjdCBUaW1lWm9uZVJlY29yZCB7CiAgICAgVmFyaWFudDxWZWN0b3I8TENoYXI+LCBpbnQ2NF90
PiBtX25hbWVPck9mZnNldDsKIH07CiAKK3N0cnVjdCBDYWxlbmRhclJlY29yZCB7CisgICAgVmVj
dG9yPExDaGFyPiBtX25hbWU7Cit9OworCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCiBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+
IHBhcnNlVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4g
cGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3KTsKQEAgLTE2Myw2ICsxNzcsNyBAQCBzdGQ6Om9wdGlv
bmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcpOwog
ZW51bSBjbGFzcyBWYWxpZGF0ZVRpbWVab25lSUQgeyBZZXMsIE5vIH07CiBzdGQ6Om9wdGlvbmFs
PHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+IHBh
cnNlVGltZShTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUs
IHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+
PiBwYXJzZURhdGVUaW1lKFN0cmluZ1ZpZXcpOworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBs
YWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
UmVjb3JkPiwgc3RkOjpvcHRpb25hbDxDYWxlbmRhclJlY29yZD4+PiBwYXJzZUNhbGVuZGFyRGF0
ZVRpbWUoU3RyaW5nVmlldyk7CiBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50
NjRfdCk7CiBTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmcoUGxhaW5UaW1lLCBzdGQ6OnR1cGxl
PFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBlMGNlYjRiZTAyMzE1MGNl
NWE5NGRiOGE4OGJjZDZkMWMwZmVlZTM0Li43ODliODMyYTE1MzhlZDZlOTJmZDIzNGIwYzAwOWNk
YzJiNDdmMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCkBAIC0yMDgsNiArMjA4LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0
aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxh
aW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJUZW1wb3JhbFRpbWVab25lLmgiCkBAIC0xMjQ0LDYgKzEyNDYsMTMgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbER1cmF0aW9u
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkdXJhdGlvblByb3RvdHlw
ZSkpOwogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9wbGFpbkRhdGVTdHJ1Y3R1cmUuaW5p
dExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGlu
aXQpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgICAgICBhdXRvKiBwbGFpbkRhdGVQ
cm90b3R5cGUgPSBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
KyAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0
dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgcGxhaW5EYXRlUHJvdG90eXBlKSk7CisgICAgICAg
ICAgICB9KTsKKwogICAgICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAg
ICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAg
ICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOwpAQCAtMjEzOCw2ICsyMTQ3LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhp
c09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1fcGxhaW5EYXRlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
cGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fdGlt
ZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDBkYWVlNTNlZTBkNzU4OTM5YTFlZGFl
YmI5NThkMDViMDAwYjlhMDEuLjM1ZTQyYmYzNjBlNmVhY2FjMWQ0YTM2OWY3MTIyY2MxNWVmZjBj
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aApAQCAtMzMxLDYgKzMzMSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0
LCBTdHJ1Y3R1cmU+IG1fY2FsZW5kYXJTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZHVyYXRpb25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5EYXRlU3RydWN0dXJlOwogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGltZVN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV90aW1l
Wm9uZVN0cnVjdHVyZTsKIApAQCAtODgzLDYgKzg4NCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0
IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgU3RydWN0dXJlKiBj
YWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMp
OyB9CiAgICAgU3RydWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRp
b25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBwbGFpbkRhdGVTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX3BsYWluRGF0ZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1
Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVy
biBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggZmYwYmNmZGNmODJkMjIx
ZDFlY2I4NWE4YzFiNDZiNjUxYjRkYjczNS4uNzgzMzQzNGM5MWFkNDVhM2RiMDQ2OGRjZjljMWZl
MjhlZGE0ZDYzMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRp
b25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlQ29u
c3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5oIgpAQCAtNjUsNiArNjcsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRHVyYXRpb25D
b25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0
aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsK
IH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5EYXRlQ29uc3RydWN0b3IoVk0mIHZtLCBK
U09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9
IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gdGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIFRlbXBvcmFs
UGxhaW5EYXRlQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSo+KGds
b2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgp
KSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiB2
bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmpl
Y3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwpAQCAtOTAsNiArOTksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgQ2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3Rv
ciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0
ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBO
b3cgICAgICAgICAgICBjcmVhdGVOb3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFBy
b3BlcnR5Q2FsbGJhY2sKKyAgUGxhaW5EYXRlICAgICAgY3JlYXRlUGxhaW5EYXRlQ29uc3RydWN0
b3IgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFBsYWluVGltZSAgICAgIGNyZWF0
ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBU
aW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFBy
b3BlcnR5Q2FsbGJhY2sKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWE2MzIzNTFkOTgzMzk3ZjQ2
MmM1ZmE1NTIwMmVlNDdjNWMxMjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwCkBAIC0wLDAgKzEsNjg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlLmgiCisKKyNpbmNsdWRlICJB
YnN0cmFjdFNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5SW5saW5lcy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5o
IgorCituYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBUZW1wb3JhbFBsYWluRGF0ZUludGVybmFs
IHsKK3N0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7Cit9CisKK2NvbnN0IENs
YXNzSW5mbyBUZW1wb3JhbFBsYWluRGF0ZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNf
aW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWlu
RGF0ZSkgfTsKKworVGVtcG9yYWxQbGFpbkRhdGUqIFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5EYXRlJiYgcGxhaW5E
YXRlLCBUZW1wb3JhbENhbGVuZGFyKiBjYWxlbmRhcikKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluRGF0ZT4odm0uaGVhcCkpIFRl
bXBvcmFsUGxhaW5EYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5EYXRlKSk7CisgICAg
b2JqZWN0LT5maW5pc2hDcmVhdGlvbih2bSwgY2FsZW5kYXIpOworICAgIHJldHVybiBvYmplY3Q7
Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpbkRhdGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVt
cG9yYWxQbGFpbkRhdGU6OlRlbXBvcmFsUGxhaW5EYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIElTTzg2MDE6OlBsYWluRGF0ZSYmIHBsYWluRGF0ZSkKKyAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKKyAgICAsIG1fcGxhaW5EYXRlKFdURk1vdmUocGxhaW5EYXRlKSkKK3sKK30KKwor
dm9pZCBUZW1wb3JhbFBsYWluRGF0ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbENh
bGVuZGFyKiBjYWxlbmRhcikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAg
QVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBpZiAoIWNhbGVuZGFyKSB7CisgICAg
ICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluVGltZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAg
ICAgICAgY2FsZW5kYXIgPSBUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+Y2FsZW5kYXJTdHJ1Y3R1cmUoKSwgaXNvODYwMUNhbGVuZGFySUQoKSk7CisgICAgfQorICAg
IEJhc2U6OmludGVybmFsRmllbGQoMCkuc2V0KHZtLCB0aGlzLCBjYWxlbmRhcik7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIFRlbXBvcmFsUGxhaW5EYXRlOjp2aXNpdENo
aWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KGNlbGwpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKKyAgICBCYXNlOjp2aXNp
dENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oVGVt
cG9yYWxQbGFpbkRhdGUpOworCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1pc3ZhbGlkdGltZQorc3RhdGljIElTTzg2MDE6OlBsYWluRGF0ZSB0b1Bs
YWluRGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084NjAxOjpEdXJhdGlvbiYm
IGR1cmF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgaG91ciA9IGR1
cmF0aW9uLmhvdXJzKCk7CisgICAgZG91YmxlIG1pbnV0ZSA9IGR1cmF0aW9uLm1pbnV0ZXMoKTsK
KyAgICBkb3VibGUgc2Vjb25kID0gZHVyYXRpb24uc2Vjb25kcygpOworICAgIGRvdWJsZSBtaWxs
aXNlY29uZCA9IGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpOworICAgIGRvdWJsZSBtaWNyb3NlY29u
ZCA9IGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpOworICAgIGRvdWJsZSBuYW5vc2Vjb25kID0gZHVy
YXRpb24ubmFub3NlY29uZHMoKTsKKyAgICBpZiAoIShob3VyID49IDAgJiYgaG91ciA8PSAyMykp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJob3VyIGlz
IG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICgh
KG1pbnV0ZSA+PSAwICYmIG1pbnV0ZSA8PSA1OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaW51dGUgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEoc2Vjb25kID49IDAgJiYgc2Vjb25kIDw9
IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNl
Y29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBpZiAoIShtaWxsaXNlY29uZCA+PSAwICYmIG1pbGxpc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWxsaXNlY29uZCBpcyBv
dXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoISht
aWNyb3NlY29uZCA+PSAwICYmIG1pY3Jvc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNyb3NlY29uZCBpcyBvdXQgb2YgcmFu
Z2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShuYW5vc2Vjb25k
ID49IDAgJiYgbmFub3NlY29uZCA8PSA5OTkpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAibmFub3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4gSVNPODYwMTo6UGxhaW5EYXRlIHsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhvdXIpLAorICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obWludXRlKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlY29u
ZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaWxsaXNlY29uZCksCisgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaWNyb3NlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihuYW5vc2Vjb25kKQorICAgIH07Cit9CisKKy8vIENyZWF0ZVRlbXBvcmFsUGxh
aW5EYXRlICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNv
bmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMgWyAsIG5ld1Rhcmdl
dCBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LWNyZWF0ZXRlbXBvcmFscGxhaW5EYXRlCitUZW1wb3JhbFBsYWluRGF0ZSogVGVtcG9yYWxQbGFp
bkRhdGU6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24sIFRlbXBvcmFs
Q2FsZW5kYXIqIGNhbGVuZGFyKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHBs
YWluRGF0ZSA9IHRvUGxhaW5EYXRlKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gVGVtcG9y
YWxQbGFpbkRhdGU6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBsYWluRGF0ZSksIGNh
bGVuZGFyKTsKK30KKworc3RhdGljIGRvdWJsZSBub25OZWdhdGl2ZU1vZHVsbyhkb3VibGUgeCwg
ZG91YmxlIHkpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IHN0ZDo6Zm1vZCh4LCB5KTsKKyAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKHJlc3VsdCA8IDApCisgICAg
ICAgIHJlc3VsdCArPSB5OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWJhbGFuY2V0aW1lCitzdGF0aWMg
SVNPODYwMTo6RHVyYXRpb24gYmFsYW5jZVRpbWUoZG91YmxlIGhvdXIsIGRvdWJsZSBtaW51dGUs
IGRvdWJsZSBzZWNvbmQsIGRvdWJsZSBtaWxsaXNlY29uZCwgZG91YmxlIG1pY3Jvc2Vjb25kLCBk
b3VibGUgbmFub3NlY29uZCkKK3sKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9w
b3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwNAorICAgIC8vIFVzZSBub24tbmVnYXRpdmUgbW9kdWxv
IG9wZXJhdGlvbi4KKyAgICBtaWNyb3NlY29uZCArPSBzdGQ6OmZsb29yKG5hbm9zZWNvbmQgLyAx
MDAwKTsKKyAgICBuYW5vc2Vjb25kID0gbm9uTmVnYXRpdmVNb2R1bG8obmFub3NlY29uZCwgMTAw
MCk7CisgICAgbWlsbGlzZWNvbmQgKz0gc3RkOjpmbG9vcihtaWNyb3NlY29uZCAvIDEwMDApOwor
ICAgIG1pY3Jvc2Vjb25kID0gbm9uTmVnYXRpdmVNb2R1bG8obWljcm9zZWNvbmQsIDEwMDApOwor
ICAgIHNlY29uZCArPSBzdGQ6OmZsb29yKG1pbGxpc2Vjb25kIC8gMTAwMCk7CisgICAgbWlsbGlz
ZWNvbmQgPSBub25OZWdhdGl2ZU1vZHVsbyhtaWxsaXNlY29uZCwgMTAwMCk7CisgICAgbWludXRl
ICs9IHN0ZDo6Zmxvb3Ioc2Vjb25kIC8gNjApOworICAgIHNlY29uZCA9IG5vbk5lZ2F0aXZlTW9k
dWxvKHNlY29uZCwgNjApOworICAgIGhvdXIgKz0gc3RkOjpmbG9vcihtaW51dGUgLyA2MCk7Cisg
ICAgbWludXRlID0gbm9uTmVnYXRpdmVNb2R1bG8obWludXRlLCA2MCk7CisgICAgZG91YmxlIGRh
eXMgPSBzdGQ6OmZsb29yKGhvdXIgLyAyNCk7CisgICAgaG91ciA9IG5vbk5lZ2F0aXZlTW9kdWxv
KGhvdXIsIDI0KTsKKyAgICByZXR1cm4gSVNPODYwMTo6RHVyYXRpb24oMCwgMCwgMCwgZGF5cywg
aG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29u
ZCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLXJvdW5kdGltZQorc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHJvdW5kVGltZShJU084NjAx
OjpQbGFpbkRhdGUgcGxhaW5EYXRlLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5p
dCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRheUxl
bmd0aE5zKQoreworICAgIGF1dG8gZnJhY3Rpb25hbFNlY29uZCA9IFtdKElTTzg2MDE6OlBsYWlu
RGF0ZSBwbGFpbkRhdGUpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBwbGFpbkRhdGUuc2Vj
b25kKCkgKyBwbGFpbkRhdGUubWlsbGlzZWNvbmQoKSAqIDFlLTMgKyBwbGFpbkRhdGUubWljcm9z
ZWNvbmQoKSAqIDFlLTYgKyBwbGFpbkRhdGUubmFub3NlY29uZCgpICogMWUtOTsKKyAgICB9Owor
CisgICAgZG91YmxlIHF1YW50aXR5ID0gMDsKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNl
IFRlbXBvcmFsVW5pdDo6RGF5OiB7CisgICAgICAgIGRvdWJsZSBsZW5ndGggPSBkYXlMZW5ndGhO
cy52YWx1ZV9vcig4LjY0ICogMWUrMTMpOworICAgICAgICBxdWFudGl0eSA9ICgoKChwbGFpbkRh
dGUuaG91cigpICogNjAuMCArIHBsYWluRGF0ZS5taW51dGUoKSkgKiA2MC4wICsgcGxhaW5EYXRl
LnNlY29uZCgpKSAqIDEwMDAuMCArIHBsYWluRGF0ZS5taWxsaXNlY29uZCgpKSAqIDEwMDAuMCAr
IHBsYWluRGF0ZS5uYW5vc2Vjb25kKCkpIC8gbGVuZ3RoOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIElTTzg2MDE6OkR1cmF0aW9uKDAsIDAsIDAsIHJlc3VsdCwgMCwg
MCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpIb3VyOiB7Cisg
ICAgICAgIHF1YW50aXR5ID0gKGZyYWN0aW9uYWxTZWNvbmQocGxhaW5EYXRlKSAvIDYwLjAgKyBw
bGFpbkRhdGUubWludXRlKCkpIC8gNjAuMCArIHBsYWluRGF0ZS5ob3VyKCk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCBy
b3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUocmVzdWx0LCAwLCAwLCAw
LCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZTogeworICAgICAg
ICBxdWFudGl0eSA9IGZyYWN0aW9uYWxTZWNvbmQocGxhaW5EYXRlKSAvIDYwLjAgKyBwbGFpbkRh
dGUubWludXRlKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVu
dChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFs
YW5jZVRpbWUocGxhaW5EYXRlLmhvdXIoKSwgcmVzdWx0LCAwLCAwLCAwLCAwKTsKKyAgICB9Cisg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogeworICAgICAgICBxdWFudGl0eSA9IGZyYWN0
aW9uYWxTZWNvbmQocGxhaW5EYXRlKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJl
clRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAg
IHJldHVybiBiYWxhbmNlVGltZShwbGFpbkRhdGUuaG91cigpLCBwbGFpbkRhdGUubWludXRlKCks
IHJlc3VsdCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNl
Y29uZDogeworICAgICAgICBxdWFudGl0eSA9IHBsYWluRGF0ZS5taWxsaXNlY29uZCgpICsgcGxh
aW5EYXRlLm1pY3Jvc2Vjb25kKCkgKiAxZS0zICsgcGxhaW5EYXRlLm5hbm9zZWNvbmQoKSAqIDFl
LTY7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0
eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUo
cGxhaW5EYXRlLmhvdXIoKSwgcGxhaW5EYXRlLm1pbnV0ZSgpLCBwbGFpbkRhdGUuc2Vjb25kKCks
IHJlc3VsdCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29u
ZDogeworICAgICAgICBxdWFudGl0eSA9IHBsYWluRGF0ZS5taWNyb3NlY29uZCgpICsgcGxhaW5E
YXRlLm5hbm9zZWNvbmQoKSAqIDFlLTM7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1i
ZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAg
ICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5EYXRlLmhvdXIoKSwgcGxhaW5EYXRlLm1pbnV0ZSgp
LCBwbGFpbkRhdGUuc2Vjb25kKCksIHBsYWluRGF0ZS5taWxsaXNlY29uZCgpLCByZXN1bHQsIDAp
OworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDogeworICAgICAgICBx
dWFudGl0eSA9IHBsYWluRGF0ZS5uYW5vc2Vjb25kKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
cm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUp
OworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5EYXRlLmhvdXIoKSwgcGxhaW5EYXRl
Lm1pbnV0ZSgpLCBwbGFpbkRhdGUuc2Vjb25kKCksIHBsYWluRGF0ZS5taWxsaXNlY29uZCgpLCBw
bGFpbkRhdGUubWljcm9zZWNvbmQoKSwgcmVzdWx0KTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorfQorCitJU084NjAxOjpQbGFpbkRhdGUgVGVtcG9yYWxQbGFpbkRhdGU6OnJvdW5kKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRp
b25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxl
c3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBv
cmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIXNtYWxsZXN0
KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90
IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3B0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZh
bHVlKCk7CisKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2Rl
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwK
KyAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3Ms
IFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMg
fSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKKyAgICAg
ICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRy
dW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGluY3JlbWVu
dCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBtYXhp
bXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0KSwgZmFsc2UpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGR1cmF0aW9uID0gcm91bmRUaW1l
KG1fcGxhaW5EYXRlLCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBzdGQ6
Om51bGxvcHQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9QbGFpbkRhdGUoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSkpOworfQorCitTdHJpbmcgVGVtcG9yYWxQbGFp
bkRhdGU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRp
b25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIFByZWNpc2lvbkRhdGEgZGF0
YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByb3VuZGluZ01vZGUg
PSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdN
b2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5j
Il9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9k
ZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIg
XCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91
bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBl
eHBsaWNpdCBkZWZhdWx0cy4KKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09
IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykK
KyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBhdXRvIGR1cmF0aW9uID0gcm91bmRU
aW1lKG1fcGxhaW5EYXRlLCBkYXRhLmluY3JlbWVudCwgZGF0YS51bml0LCByb3VuZGluZ01vZGUs
IHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byBwbGFpbkRhdGUgPSB0b1BsYWluRGF0ZShnbG9iYWxP
YmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgcmV0dXJuIElTTzg2MDE6OnRlbXBvcmFsVGltZVRvU3RyaW5nKHBsYWlu
RGF0ZSwgZGF0YS5wcmVjaXNpb24pOworfQorCisKK3N0YXRpYyBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKFZNJiB2bSwgdW5zaWduZWQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4IDwgbnVt
YmVyT2ZUZW1wb3JhbFVuaXRzKTsKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFRlbXBvcmFsVW5p
dD4oaW5kZXgpKSB7CisjZGVmaW5lIEpTQ19URU1QT1JBTF9EVVJBVElPTl9QUk9QRVJUWV9OQU1F
KG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgY2FzZSBUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFt
ZTogcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7CisgICAgICAgIEpTQ19URU1QT1JBTF9V
TklUUyhKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRSkKKyN1bmRlZiBKU0NfVEVN
UE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRQorICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiB0b1RlbXBvcmFs
VGltZVJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGVtcG9y
YWxUaW1lTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSVNPODYwMTo6RHVyYXRp
b24gZHVyYXRpb24geyB9OworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51
bWJlck9mVGVtcG9yYWxQbGFpbkRhdGVVbml0czsgKytpbmRleCkgeworICAgICAgICB1bnNpZ25l
ZCBkdXJhdGlvbkluZGV4ID0gaW5kZXggKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGVtcG9yYWxV
bml0OjpIb3VyKTsKKyAgICAgICAgYXV0byBuYW1lID0gcHJvcGVydHlOYW1lKHZtLCBkdXJhdGlv
bkluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRlbXBvcmFsVGltZUxpa2UtPmdldChn
bG9iYWxPYmplY3QsIG5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgICAgIC8vIFdlIGFyZSB0aHJvd2luZyBhbiBlcnJvciBoZXJlLCBidXQgcHJv
YmFibHkgdGhpcyBpcyBhIHNwZWMgYnVnLgorICAgICAgICAvLyBUcmFja2VkIGluIGh0dHBzOi8v
Z2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFsL2lzc3Vlcy8xODAzLgorICAgICAgICBp
ZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZygnIicsIFN0cmluZ1ZpZXcobmFtZS51aWQoKSks
ICJcIiBmaWVsZCBpcyBtaXNzaW5nIl9zKSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAg
ICAgICB9CisKKyAgICAgICAgZG91YmxlIGludGVnZXIgPSB2YWx1ZS50b0ludGVnZXJPckluZmlu
aXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShpbnRlZ2VyKSkgeworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpbkRhdGUg
cHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICB9CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0gaW50ZWdlcjsKKyAg
ICB9CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitzdGF0aWMgc3RkOjphcnJheTxzdGQ6Om9w
dGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpbkRhdGVVbml0cz4gdG9QYXJ0aWFs
VGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGVtcG9yYWxUaW1l
TGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYm9vbCBoYXNBbnlGaWVsZHMgPSBm
YWxzZTsKKyAgICBzdGQ6OmFycmF5PHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgbnVtYmVyT2ZUZW1w
b3JhbFBsYWluRGF0ZVVuaXRzPiBwYXJ0aWFsVGltZSB7IH07CisgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFBsYWluRGF0ZVVuaXRzOyArK2luZGV4
KSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXggPSBpbmRleCArIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAgICAgICBhdXRvIG5hbWUgPSBwcm9w
ZXJ0eU5hbWUodm0sIGR1cmF0aW9uSW5kZXgpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gdGVt
cG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFtZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5l
ZCgpKSB7CisgICAgICAgICAgICBoYXNBbnlGaWVsZHMgPSB0cnVlOworICAgICAgICAgICAgZG91
YmxlIGRvdWJsZVZhbHVlID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3Qp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgIGlmICghc3RkOjppc2Zpbml0ZShkb3VibGVWYWx1ZSkpIHsKKyAgICAgICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvUGFydGlhbFRpbWUgcHJvcGVy
dGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnRpYWxUaW1lW2luZGV4XSA9IGRvdWJsZVZhbHVl
OworICAgICAgICB9CisgICAgfQorICAgIGlmICghaGFzQW55RmllbGRzKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHJlcXVpcmVz
IGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
ICAgIHJldHVybiBwYXJ0aWFsVGltZTsKK30KKworc3RhdGljIElTTzg2MDE6OlBsYWluRGF0ZSBj
b25zdHJhaW50VGltZShJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIGF1dG8g
Y29uc3RyYWluVG9SYW5nZSA9IFtdKGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgbWluaW11bSwgdW5z
aWduZWQgbWF4aW11bSkgLT4gdW5zaWduZWQgeworICAgICAgICBpZiAoc3RkOjppc25hbih2YWx1
ZSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihzdGQ6Om1pbjxkb3VibGU+KHN0ZDo6bWF4PGRvdWJsZT4odmFsdWUsIG1pbmltdW0p
LCBtYXhpbXVtKSk7CisgICAgfTsKKyAgICByZXR1cm4gSVNPODYwMTo6UGxhaW5EYXRlKAorICAg
ICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLmhvdXJzKCksIDAsIDIzKSwKKyAgICAgICAg
Y29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5taW51dGVzKCksIDAsIDU5KSwKKyAgICAgICAgY29u
c3RyYWluVG9SYW5nZShkdXJhdGlvbi5zZWNvbmRzKCksIDAsIDU5KSwKKyAgICAgICAgY29uc3Ry
YWluVG9SYW5nZShkdXJhdGlvbi5taWxsaXNlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAgIGNv
bnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubWljcm9zZWNvbmRzKCksIDAsIDEwMDApLAorICAgICAg
ICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm5hbm9zZWNvbmRzKCksIDAsIDEwMDApKTsKK30K
Kworc3RhdGljIElTTzg2MDE6OlBsYWluRGF0ZSByZWd1bGF0ZVRpbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbiwgVGVtcG9yYWxPdmVy
ZmxvdyBvdmVyZmxvdykKK3sKKyAgICBzd2l0Y2ggKG92ZXJmbG93KSB7CisgICAgY2FzZSBUZW1w
b3JhbE92ZXJmbG93OjpDb25zdHJhaW46CisgICAgICAgIHJldHVybiBjb25zdHJhaW50VGltZShX
VEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgY2FzZSBUZW1wb3JhbE92ZXJmbG93OjpSZWplY3Q6Cisg
ICAgICAgIHJldHVybiB0b1BsYWluRGF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24p
KTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIEpTT2JqZWN0KiB0b1RlbXBv
cmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHRlbXBvcmFsQ2FsZW5kYXJMaWtlKQoreworICAgIGlmICh0ZW1wb3JhbENhbGVuZGFy
TGlrZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gVGVtcG9yYWxDYWxlbmRhcjo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVjdHVyZSgp
LCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICByZXR1cm4gVGVtcG9yYWxDYWxlbmRhcjo6ZnJv
bShnbG9iYWxPYmplY3QsIHRlbXBvcmFsQ2FsZW5kYXJMaWtlKTsKK30KKworc3RhdGljIEpTT2Jq
ZWN0KiBnZXRUZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpbkRhdGU+KHZtKSkKKyAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KGl0ZW1WYWx1ZSktPmNhbGVuZGFy
KCk7CisKKyAgICBKU1ZhbHVlIGNhbGVuZGFyID0gaXRlbVZhbHVlLmdldChnbG9iYWxPYmplY3Qs
IHZtLnByb3BlcnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9UZW1wb3JhbENhbGVu
ZGFyV2l0aElTT0RlZmF1bHQoZ2xvYmFsT2JqZWN0LCBjYWxlbmRhcikpOworfQorCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsdGlt
ZQorVGVtcG9yYWxQbGFpbkRhdGUqIFRlbXBvcmFsUGxhaW5EYXRlOjpmcm9tKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBv
cmFsT3ZlcmZsb3c+IG92ZXJmbG93VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8gb3ZlcmZsb3cgPSBvdmVyZmxvd1ZhbHVlLnZhbHVlX29yKFRlbXBvcmFsT3ZlcmZsb3c6
OkNvbnN0cmFpbik7CisKKyAgICBpZiAoaXRlbVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAg
aWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluRGF0ZT4odm0pKQorICAgICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KGl0ZW1WYWx1ZSk7CisgICAgICAg
IEpTT2JqZWN0KiBjYWxlbmRhciA9IGdldFRlbXBvcmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVsdChn
bG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgIEpTU3RyaW5nKiBjYWxlbmRhclN0cmluZyA9IGNhbGVuZGFyLT50
b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgICAgICBTdHJpbmcgY2FsZW5kYXJXVEZTdHJpbmcgPSBjYWxlbmRhclN0cmlu
Zy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICAgICAgaWYgKGNhbGVuZGFyV1RGU3RyaW5nICE9ICJpc284NjAxIl9zKSB7
CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNhbGVu
ZGFyIGlzIG5vdCBpc284NjAxIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
IH0KKyAgICAgICAgYXV0byBkdXJhdGlvbiA9IHRvVGVtcG9yYWxUaW1lUmVjb3JkKGdsb2JhbE9i
amVjdCwganNDYXN0PEpTT2JqZWN0Kj4oaXRlbVZhbHVlKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGF1dG8gcGxhaW5EYXRlID0gcmVndWxhdGVU
aW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbiksIG92ZXJmbG93KTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFs
UGxhaW5EYXRlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5EYXRlU3RydWN0dXJlKCks
IFdURk1vdmUocGxhaW5EYXRlKSk7CisgICAgfQorCisgICAgYXV0byBzdHJpbmcgPSBpdGVtVmFs
dWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgYXV0byB0aW1lID0gSVNPODYwMTo6cGFyc2VUaW1lKHN0cmluZyk7
CisgICAgaWYgKHRpbWUpIHsKKyAgICAgICAgYXV0byBbcGxhaW5EYXRlLCB0aW1lWm9uZU9wdGlv
bmFsXSA9IHRpbWUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5EYXRlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5EYXRlU3RydWN0dXJlKCksIFdURk1vdmUocGxh
aW5EYXRlKSk7CisgICAgfQorCisgICAgYXV0byBkYXRlVGltZSA9IElTTzg2MDE6OnBhcnNlRGF0
ZVRpbWUoc3RyaW5nKTsKKyAgICBpZiAoZGF0ZVRpbWUpIHsKKyAgICAgICAgYXV0byBbcGxhaW5E
YXRlLCBwbGFpbkRhdGVPcHRpb25hbCwgdGltZVpvbmVPcHRpb25hbF0gPSBkYXRlVGltZS52YWx1
ZSgpOworICAgICAgICBpZiAocGxhaW5EYXRlT3B0aW9uYWwpCisgICAgICAgICAgICByZXR1cm4g
VGVtcG9yYWxQbGFpbkRhdGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpbkRhdGVTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShwbGFpbkRhdGVPcHRpb25hbC52YWx1ZSgpKSk7CisgICAgfQorCisg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHRpbWUgc3Ry
aW5nIl9zKTsKKyAgICByZXR1cm4geyB9OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jb21wYXJldGVtcG9yYWx0aW1lCitpbnQzMl90IFRl
bXBvcmFsUGxhaW5EYXRlOjpjb21wYXJlKFRlbXBvcmFsUGxhaW5EYXRlKiBwbGFpbkRhdGUxLCBU
ZW1wb3JhbFBsYWluRGF0ZSogcGxhaW5EYXRlMikKK3sKKyAgICBJU084NjAxOjpQbGFpbkRhdGUg
dDEgPSBwbGFpbkRhdGUxLT5wbGFpbkRhdGUoKTsKKyAgICBJU084NjAxOjpQbGFpbkRhdGUgdDIg
PSBwbGFpbkRhdGUyLT5wbGFpbkRhdGUoKTsKKyAgICBpZiAodDEuaG91cigpID4gdDIuaG91cigp
KQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEuaG91cigpIDwgdDIuaG91cigpKQorICAg
ICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLm1pbnV0ZSgpID4gdDIubWludXRlKCkpCisgICAg
ICAgIHJldHVybiAxOworICAgIGlmICh0MS5taW51dGUoKSA8IHQyLm1pbnV0ZSgpKQorICAgICAg
ICByZXR1cm4gLTE7CisgICAgaWYgKHQxLnNlY29uZCgpID4gdDIuc2Vjb25kKCkpCisgICAgICAg
IHJldHVybiAxOworICAgIGlmICh0MS5zZWNvbmQoKSA8IHQyLnNlY29uZCgpKQorICAgICAgICBy
ZXR1cm4gLTE7CisgICAgaWYgKHQxLm1pbGxpc2Vjb25kKCkgPiB0Mi5taWxsaXNlY29uZCgpKQor
ICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEubWlsbGlzZWNvbmQoKSA8IHQyLm1pbGxpc2Vj
b25kKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEubWljcm9zZWNvbmQoKSA+IHQy
Lm1pY3Jvc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICh0MS5taWNyb3NlY29u
ZCgpIDwgdDIubWljcm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5u
YW5vc2Vjb25kKCkgPiB0Mi5uYW5vc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlm
ICh0MS5uYW5vc2Vjb25kKCkgPCB0Mi5uYW5vc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAtMTsK
KyAgICByZXR1cm4gMDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorc3RhdGljIElTTzg2MDE6
OkR1cmF0aW9uIHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgc3RkOjppbml0aWFsaXplcl9s
aXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEZpZWxkcykKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb247CisgICAgaWYgKCF0ZW1wb3JhbER1
cmF0aW9uTGlrZS5pc09iamVjdCgpKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSB0ZW1wb3Jh
bER1cmF0aW9uTGlrZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBhdXRvIGR1cmF0aW9uT3B0aW9uYWwg
PSBJU084NjAxOjpwYXJzZUR1cmF0aW9uKHN0cmluZyk7CisgICAgICAgIGlmICghZHVyYXRpb25P
cHRpb25hbCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb3VsZCBub3QgcGFyc2UgRHVyYXRpb24gc3RyaW5nIl9zKTsKKyAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgZHVyYXRpb24gPSBkdXJhdGlvbk9wdGlvbmFs
LnZhbHVlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0
aW9uOjp0b0R1cmF0aW9uUmVjb3JkKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2Up
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAg
IGlmICghSVNPODYwMTo6aXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3Bl
cnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IG51bWJlck9mVGVtcG9yYWxVbml0czsgaW5kZXgrKykgeworICAgICAgICBpZiAoZHVyYXRpb25b
aW5kZXhdKSB7CisgICAgICAgICAgICBpZiAoZGlzYWxsb3dlZEZpZWxkcy5zaXplKCkgJiYgc3Rk
OjpmaW5kKGRpc2FsbG93ZWRGaWVsZHMuYmVnaW4oKSwgZGlzYWxsb3dlZEZpZWxkcy5lbmQoKSwg
c3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCkpICE9IGRpc2FsbG93ZWRGaWVsZHMuZW5k
KCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkR1cmF0aW9uIHByb3BlcnRpZXMgaW5jbHVkZSBkaXNhbGxvd2VkIGZpZWxkIl9zKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24g
YWRkVGltZShjb25zdCBJU084NjAxOjpQbGFpbkRhdGUmIHBsYWluRGF0ZSwgY29uc3QgSVNPODYw
MTo6RHVyYXRpb24mIGR1cmF0aW9uKQoreworICAgIHJldHVybiBiYWxhbmNlVGltZSgKKyAgICAg
ICAgcGxhaW5EYXRlLmhvdXIoKSArIGR1cmF0aW9uLmhvdXJzKCksCisgICAgICAgIHBsYWluRGF0
ZS5taW51dGUoKSArIGR1cmF0aW9uLm1pbnV0ZXMoKSwKKyAgICAgICAgcGxhaW5EYXRlLnNlY29u
ZCgpICsgZHVyYXRpb24uc2Vjb25kcygpLAorICAgICAgICBwbGFpbkRhdGUubWlsbGlzZWNvbmQo
KSArIGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpLAorICAgICAgICBwbGFpbkRhdGUubWljcm9zZWNv
bmQoKSArIGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpLAorICAgICAgICBwbGFpbkRhdGUubmFub3Nl
Y29uZCgpICsgZHVyYXRpb24ubmFub3NlY29uZHMoKSk7Cit9CisKK0lTTzg2MDE6OlBsYWluRGF0
ZSBUZW1wb3JhbFBsYWluRGF0ZTo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdGVtcG9yYWxEdXJhdGlvbkxpa2UpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8gZHVyYXRpb24gPSB0b0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uKGdsb2JhbE9i
amVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9QbGFpbkRh
dGUoZ2xvYmFsT2JqZWN0LCBhZGRUaW1lKG1fcGxhaW5EYXRlLCBkdXJhdGlvbikpKTsKK30KKwor
SVNPODYwMTo6UGxhaW5EYXRlIFRlbXBvcmFsUGxhaW5EYXRlOjpzdWJ0cmFjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRpb25MaWtlKSBjb25zdAor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGR1cmF0aW9uID0gdG9MaW1pdGVkVGVt
cG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlLCB7IH0pOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIHRvUGxhaW5EYXRlKGdsb2JhbE9iamVjdCwgYWRkVGltZShtX3BsYWluRGF0
ZSwgLWR1cmF0aW9uKSkpOworfQorCitJU084NjAxOjpQbGFpbkRhdGUgVGVtcG9yYWxQbGFpbkRh
dGU6OndpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFs
VGltZUxpa2UsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAodGVtcG9yYWxUaW1lTGlrZS0+aW5oZXJpdHM8VGVtcG9yYWxQbGFpbkRh
dGU+KHZtKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
YXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9zKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGNhbGVuZGFyUHJvcGVydHkgPSB0ZW1wb3Jh
bFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIWNhbGVuZGFy
UHJvcGVydHkuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIHRpbWVab25lUHJv
cGVydHkgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT50aW1lWm9uZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICBpZiAoIXRpbWVab25lUHJvcGVydHkuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNh
cnJ5IHRpbWUgem9uZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgYXV0
byBbaG91ck9wdGlvbmFsLCBtaW51dGVPcHRpb25hbCwgc2Vjb25kT3B0aW9uYWwsIG1pbGxpc2Vj
b25kT3B0aW9uYWwsIG1pY3Jvc2Vjb25kT3B0aW9uYWwsIG5hbm9zZWNvbmRPcHRpb25hbF0gPSB0
b1BhcnRpYWxUaW1lKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxUaW1lTGlrZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50
bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1wb3JhbE92ZXJmbG93IG92ZXJm
bG93ID0gdG9UZW1wb3JhbE92ZXJmbG93KGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1
cmF0aW9uIHsgfTsKKyAgICBkdXJhdGlvbi5zZXRIb3Vycyhob3VyT3B0aW9uYWwudmFsdWVfb3Io
aG91cigpKSk7CisgICAgZHVyYXRpb24uc2V0TWludXRlcyhtaW51dGVPcHRpb25hbC52YWx1ZV9v
cihtaW51dGUoKSkpOworICAgIGR1cmF0aW9uLnNldFNlY29uZHMoc2Vjb25kT3B0aW9uYWwudmFs
dWVfb3Ioc2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXRNaWxsaXNlY29uZHMobWlsbGlzZWNv
bmRPcHRpb25hbC52YWx1ZV9vcihtaWxsaXNlY29uZCgpKSk7CisgICAgZHVyYXRpb24uc2V0TWlj
cm9zZWNvbmRzKG1pY3Jvc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobWljcm9zZWNvbmQoKSkpOwor
ICAgIGR1cmF0aW9uLnNldE5hbm9zZWNvbmRzKG5hbm9zZWNvbmRPcHRpb25hbC52YWx1ZV9vcihu
YW5vc2Vjb25kKCkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVndWxhdGVU
aW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbiksIG92ZXJmbG93KSk7Cit9CisKK3N0
YXRpYyBJU084NjAxOjpEdXJhdGlvbiBkaWZmZXJlbmNlVGltZShJU084NjAxOjpQbGFpbkRhdGUg
dGltZTEsIElTTzg2MDE6OlBsYWluRGF0ZSB0aW1lMikKK3sKKyAgICBkb3VibGUgaG91cnMgPSBz
dGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLmhvdXIoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRp
bWUxLmhvdXIoKSk7CisgICAgZG91YmxlIG1pbnV0ZXMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRp
bWUyLm1pbnV0ZSgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEubWludXRlKCkpOworICAg
IGRvdWJsZSBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5zZWNvbmQoKSkgLSBz
dGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLnNlY29uZCgpKTsKKyAgICBkb3VibGUgbWlsbGlzZWNv
bmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5taWxsaXNlY29uZCgpKSAtIHN0YXRpY19j
YXN0PGRvdWJsZT4odGltZTEubWlsbGlzZWNvbmQoKSk7CisgICAgZG91YmxlIG1pY3Jvc2Vjb25k
cyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubWljcm9zZWNvbmQoKSkgLSBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRpbWUxLm1pY3Jvc2Vjb25kKCkpOworICAgIGRvdWJsZSBuYW5vc2Vjb25kcyA9
IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubmFub3NlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRv
dWJsZT4odGltZTEubmFub3NlY29uZCgpKTsKKyAgICBkYXRhTG9nTG5JZihUZW1wb3JhbFBsYWlu
RGF0ZUludGVybmFsOjp2ZXJib3NlLCAiRGlmZiAiLCBob3VycywgIiAiLCBtaW51dGVzLCAiICIs
IHNlY29uZHMsICIgIiwgbWlsbGlzZWNvbmRzLCAiICIsIG1pY3Jvc2Vjb25kcywgIiAiLCBuYW5v
c2Vjb25kcyk7CisgICAgaW50MzJfdCBzaWduID0gVGVtcG9yYWxEdXJhdGlvbjo6c2lnbihJU084
NjAxOjpEdXJhdGlvbigwLCAwLCAwLCAwLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlz
ZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzKSk7CisgICAgYXV0byBkdXJhdGlvbiA9
IGJhbGFuY2VUaW1lKGhvdXJzICogc2lnbiwgbWludXRlcyAqIHNpZ24sIHNlY29uZHMgKiBzaWdu
LCBtaWxsaXNlY29uZHMgKiBzaWduLCBtaWNyb3NlY29uZHMgKiBzaWduLCBuYW5vc2Vjb25kcyAq
IHNpZ24pOworICAgIGRhdGFMb2dMbklmKFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJuYWw6OnZlcmJv
c2UsICJCYWxhbmNlZCAiLCBkdXJhdGlvbi5kYXlzKCksICIgIiwgZHVyYXRpb24uaG91cnMoKSwg
IiAiLCBkdXJhdGlvbi5taW51dGVzKCksICIgIiwgZHVyYXRpb24uc2Vjb25kcygpLCAiICIsIGR1
cmF0aW9uLm1pbGxpc2Vjb25kcygpLCAiICIsIGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpLCAiICIs
IGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkpOworICAgIGlmIChzaWduID09IC0xKQorICAgICAgICBy
ZXR1cm4gLWR1cmF0aW9uOworICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIHN0ZDo6
dHVwbGU8VGVtcG9yYWxVbml0LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSwgZG91YmxlPiBl
eHRyYWN0RGlmZmVyZW5jZU9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0
KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNt
YWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRl
bXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVr
LCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZV9vcihU
ZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgYXV0byBsYXJnZXN0ID0gdGVtcG9yYWxM
YXJnZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBU
ZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5
IH0sIFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKFRl
bXBvcmFsVW5pdDo6SG91cik7CisKKyAgICBpZiAoc21hbGxlc3RVbml0IDwgbGFyZ2VzdFVuaXQp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVz
dFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3Vu
ZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRp
bmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJm
bG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2Rl
OjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9
LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29y
XCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGluY3Jl
bWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBt
YXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0KSwgZmFsc2UpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4geyBzbWFsbGVzdFVuaXQs
IGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudCB9OworfQorCitJU084NjAxOjpE
dXJhdGlvbiBUZW1wb3JhbFBsYWluRGF0ZTo6dW50aWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGVtcG9yYWxQbGFpbkRhdGUqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29u
c3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBbc21hbGxlc3RVbml0LCBsYXJn
ZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBpbmNyZW1lbnRdID0gZXh0cmFjdERpZmZlcmVuY2VPcHRp
b25zKGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBkaWZmZXJlbmNlVGltZShwbGFpbkRh
dGUoKSwgb3RoZXItPnBsYWluRGF0ZSgpKTsKKyAgICByZXN1bHQuc2V0WWVhcnMoMCk7CisgICAg
cmVzdWx0LnNldE1vbnRocygwKTsKKyAgICByZXN1bHQuc2V0V2Vla3MoMCk7CisgICAgcmVzdWx0
LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6cm91bmQocmVzdWx0LCBpbmNyZW1l
bnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpi
YWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0lT
Tzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsUGxhaW5EYXRlOjpzaW5jZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluRGF0ZSogb3RoZXIsIEpTVmFsdWUgb3B0aW9uc1Zh
bHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIFtzbWFsbGVzdFVu
aXQsIGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudF0gPSBleHRyYWN0RGlmZmVy
ZW5jZU9wdGlvbnMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRpZmZlcmVuY2VUaW1l
KG90aGVyLT5wbGFpbkRhdGUoKSwgcGxhaW5EYXRlKCkpOworICAgIHJlc3VsdCA9IC1yZXN1bHQ7
CisgICAgcmVzdWx0LnNldFllYXJzKDApOworICAgIHJlc3VsdC5zZXRNb250aHMoMCk7CisgICAg
cmVzdWx0LnNldFdlZWtzKDApOworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRlbXBvcmFs
RHVyYXRpb246OnJvdW5kKHJlc3VsdCwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5n
TW9kZSk7CisgICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAgICByZXN1bHQuc2V0RGF5cygwKTsKKyAg
ICBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBjMWQ3
ZTE4ODRjZDExZDE5ZDZhNTQyYWI1MTk5Nzk2ODI0OTIxYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgKQEAgLTAsMCAr
MSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJMYXp5UHJv
cGVydHkuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBUZW1wb3JhbFBsYWluRGF0ZSBmaW5hbCA6IHB1YmxpYyBKU0ludGVybmFsRmll
bGRPYmplY3RJbXBsPDE+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNJbnRlcm5hbEZp
ZWxkT2JqZWN0SW1wbDwxPjsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJz
cGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0m
IHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsUGxhaW5EYXRlU3BhY2U8bW9k
ZT4oKTsKKyAgICB9CisKKyAgICAvLyBUZW1wb3JhbFBsYWluRGF0ZSBoYXMgb25lIGlubGluZSBz
dG9yYWdlIHNsb3QsIHdoaWNoIGlzIHBvaW50aW5nIGludGVybmFsRmllbGQoMCkuCisgICAgc3Rh
dGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShDaGVja2VkPHNpemVfdD4gaW5saW5lQ2FwYWNpdHkp
CisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGlubGluZUNhcGFjaXR5LCBpbmxpbmVDYXBh
Y2l0eSA9PSAwVSk7CisgICAgICAgIHJldHVybiBzaXplb2YoVGVtcG9yYWxQbGFpbkRhdGUpOwor
ICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZSogY3JlYXRlKFZNJiwgU3RydWN0
dXJlKiwgSVNPODYwMTo6UGxhaW5EYXRlJiYsIFRlbXBvcmFsQ2FsZW5kYXIqKTsKKyAgICBzdGF0
aWMgVGVtcG9yYWxQbGFpbkRhdGUqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBJU084NjAxOjpEdXJhdGlvbiYmLCBUZW1wb3JhbENhbGVuZGFyKik7CisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWlu
RGF0ZSogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9y
YWxPdmVyZmxvdz4pOworICAgIHN0YXRpYyBpbnQzMl90IGNvbXBhcmUoVGVtcG9yYWxQbGFpbkRh
dGUqLCBUZW1wb3JhbFBsYWluRGF0ZSopOworCisgICAgVGVtcG9yYWxDYWxlbmRhciogY2FsZW5k
YXIoKSB7IHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxDYWxlbmRhcio+KEJhc2U6OmludGVybmFsRmll
bGQoMCkuZ2V0KCkpOyB9CisgICAgSVNPODYwMTo6UGxhaW5EYXRlIHBsYWluRGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGxhaW5EYXRlOyB9CisKKyNkZWZpbmUgSlNDX0RFRklORV9URU1QT1JBTF9Q
TEFJTl9USU1FX0ZJRUxEKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgXAorICAgIHVuc2lnbmVkIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX3BsYWluRGF0ZS5uYW1lKCk7IH0KKyAgICBKU0NfVEVNUE9S
QUxfUExBSU5fVElNRV9VTklUUyhKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklFTEQp
OworI3VuZGVmIEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRAorCisgICAgSVNP
ODYwMTo6UGxhaW5EYXRlIHdpdGgoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGVtcG9yYWxU
aW1lTGlrZSwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpbkRhdGUg
YWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5E
YXRlIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYw
MTo6UGxhaW5EYXRlIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25z
dDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMp
IGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWdu
ZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcobV9wbGFpbkRhdGUsIHBy
ZWNpc2lvbik7CisgICAgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gdW50aWwoSlNHbG9iYWxP
YmplY3QqLCBUZW1wb3JhbFBsYWluRGF0ZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAg
SVNPODYwMTo6RHVyYXRpb24gc2luY2UoSlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbFBsYWluRGF0
ZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisKKyAgICBlbnVtIGNsYXNzIEZpZWxkIDogdWlu
dDMyX3QgeworICAgICAgICBDYWxlbmRhciA9IDAsCisgICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0
KG51bWJlck9mSW50ZXJuYWxGaWVsZHMgPT0gMSk7CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8SlNW
YWx1ZSwgbnVtYmVyT2ZJbnRlcm5hbEZpZWxkcz4gaW5pdGlhbFZhbHVlcygpCisgICAgeworICAg
ICAgICByZXR1cm4geyB7CisgICAgICAgICAgICBqc1VuZGVmaW5lZCgpLAorICAgICAgICB9IH07
CisgICAgfQorCisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJFTjsKKworcHJpdmF0ZToKKyAgICBU
ZW1wb3JhbFBsYWluRGF0ZShWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OlBsYWluRGF0ZSYmKTsK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9yYWxDYWxlbmRhciopOworCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxJU084NjAxOjpQbGFpbkRhdGU+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6UGxhaW5EYXRlIGZyb21PYmplY3QoSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJwbGFp
bkRhdGUoKSBjb25zdDsKKworICAgIElTTzg2MDE6OlBsYWluRGF0ZSBtX3BsYWluRGF0ZTsKKyAg
ICBMYXp5UHJvcGVydHk8VGVtcG9yYWxQbGFpbkRhdGUsIFRlbXBvcmFsQ2FsZW5kYXI+IG1fY2Fs
ZW5kYXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTk4ZjdjNzMxYTA2OGYwNGFiY2RmOTk1MmUxODY3MzczMTM2NWVjZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
UGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpT
Q0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluRGF0ZS5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNf
QVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUoVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1
Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3JGdW5jRnJvbSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0NvbXBhcmUpOworCit9CisKKyNpbmNs
dWRlICJUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgJnRlbXBvcmFsUGxhaW5EYXRlQ29uc3Ry
dWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluRGF0
ZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3Ry
dWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yVGFibGUKKyAg
ZnJvbSAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0Zyb20gICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBjb21wYXJlICAgICAgICAgIHRlbXBvcmFs
UGxhaW5EYXRlQ29uc3RydWN0b3JGdW5jQ29tcGFyZSAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCitAZW5kCisqLworCitUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFBs
YWluRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUqIHBsYWluRGF0ZVByb3RvdHlwZSkKK3sKKyAgICBh
dXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxh
aW5EYXRlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9y
KHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcGxh
aW5EYXRlUHJvdG90eXBlKTsKKyAgICByZXR1cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVy
ZSogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAg
cmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlw
ZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30K
Kworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5EYXRl
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsUGxh
aW5EYXRlKTsKKworVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxQbGFpbkRh
dGVDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxQbGFpbkRhdGUsIGNvbnN0cnVjdFRlbXBvcmFsUGxh
aW5EYXRlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUqIHBsYWluRGF0ZVBy
b3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlBsYWluRGF0ZSJf
cywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAg
ICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBwbGFpbkRhdGVQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKKyAgICBwbGFpbkRhdGVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxQbGFpbkRhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQgPSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1Rhcmdl
dCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RV
UkUodm0sIHBsYWluRGF0ZVN0cnVjdHVyZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVl
KCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBJU084NjAx
OjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07CisgICAgYXV0byBjb3VudCA9IHN0ZDo6bWluPHNpemVf
dD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCksIG51bWJlck9mVGVtcG9yYWxQbGFpbkRhdGVV
bml0cyk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAg
ICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9IGkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGVt
cG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAgZHVyYXRpb25bZHVyYXRpb25JbmRleF0gPSBjYWxs
RnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdKSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
UGxhaW5EYXRlIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgIH0KKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluRGF0ZTo6
dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgV1RGTW92ZShkdXJhdGlv
bikpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxQbGFpbkRh
dGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVj
dG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQbGFpbkRhdGUiKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3Jh
bC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5mcm9tCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIFRlbXBvcmFsT3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFs
T3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBpdGVtVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluRGF0ZT4o
dm0pKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbFBsYWluRGF0ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluRGF0ZVN0cnVj
dHVyZSgpLCBqc0Nhc3Q8VGVtcG9yYWxQbGFpbkRhdGUqPihpdGVtVmFsdWUpLT5wbGFpbkRhdGUo
KSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsUGxhaW5EYXRlOjpmcm9tKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlLCBvdmVyZmxvdykp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLmNvbXBhcmUKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluRGF0ZUNvbnN0cnVjdG9yRnVuY0NvbXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIG9uZSA9IFRlbXBvcmFsUGxhaW5EYXRlOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgYXV0byogdHdvID0gVGVtcG9yYWxQbGFpbkRhdGU6OmZyb20o
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLCBzdGQ6Om51bGxvcHQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKFRlbXBvcmFsUGxhaW5EYXRlOjpjb21wYXJlKG9uZSwgdHdvKSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kYTA2YTY2YWQxMjQwYTAzMWIxYzMxMWVhMzI1ZjIyYTBmMGUzMTVlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVu
Y3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5EYXRlUHJv
dG90eXBlOworCitjbGFzcyBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yIGZpbmFsIDogcHVi
bGljIEludGVybmFsRnVuY3Rpb24geworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5h
bEZ1bmN0aW9uOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3Mg
PSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBz
dGF0aWMgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJl
KiwgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3Io
Vk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9yYWxQ
bGFpbkRhdGVQcm90b3R5cGUqKTsKK307CitTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWM5
MDI0ODk1Y2MzYzRkMjFiNTU0YjI1MjZiZWFlZGFiMDBhZWU4YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
LmNwcApAQCAtMCwwICsxLDM5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsUGxhaW5EYXRlLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNBZGQpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5
cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jV2l0aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNTaW5j
ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVBy
b3RvdHlwZUZ1bmNSb3VuZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNFcXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRzKTsK
K3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90
eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3Rv
dHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBv
cmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVySG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VT
VE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdl
dHRlclNlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZUdldHRlck1pbGxpc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpbkRhdGVQcm90
b3R5cGVHZXR0ZXJOYW5vc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNs
dWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6c19pbmZvID0g
eyAiVGVtcG9yYWwuUGxhaW5EYXRlIiwgJkJhc2U6OnNfaW5mbywgJnBsYWluRGF0ZVByb3RvdHlw
ZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5EYXRlUHJv
dG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmx1
dC5oCitAYmVnaW4gcGxhaW5EYXRlUHJvdG90eXBlVGFibGUKKyAgYWRkICAgICAgICAgICAgICB0
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNBZGQgICAgICAgICAgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAgICAgIHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
RnVuY1N1YnRyYWN0ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHdpdGggICAgICAg
ICAgICAgdGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jV2l0aCAgICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwgICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVBy
b3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5j
ZSAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHJvdW5kICAgICAgICAgICAgdGVtcG9yYWxQbGFp
bkRhdGVQcm90b3R5cGVGdW5jUm91bmQgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEK
KyAgZXF1YWxzICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNFcXVhbHMg
ICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBnZXRJU09GaWVsZHMgICAgIHRlbXBv
cmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY0dldElTT0ZpZWxkcyAgICAgICBEb250RW51bXxGdW5j
dGlvbiAwCisgIHRvU3RyaW5nICAgICAgICAgdGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5j
VG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9KU09OICAgICAgICAg
ICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNUb0pTT04gICAgICAgICAgICAgRG9udEVu
dW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0cmluZyAgIHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90
eXBlRnVuY1RvTG9jYWxlU3RyaW5nICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2Yg
ICAgICAgICAgdGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgeWVhciAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZUdldHRlclllYXIgICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9t
QWNjZXNzb3IKKyAgbW9udGggICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdl
dHRlck1vbnRoICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAg
bW9udGhDb2RlICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoQ29k
ZSAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZGF5ICAgICAgICAg
ICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlckRheSAgICAgICAgICAgICAgRG9u
dEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXJhICAgICAgICAgICAgICB0ZW1wb3Jh
bFBsYWluRGF0ZVByb3RvdHlwZUdldHRlckVyYSAgICAgICAgICAgICAgRG9udEVudW18UmVhZE9u
bHl8Q3VzdG9tQWNjZXNzb3IKKyAgZXJhWWVhciAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVBy
b3RvdHlwZUdldHRlckVyYVllYXIgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNj
ZXNzb3IKKyAgZGF5T2ZXZWVrICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRl
ckRheU9mV2VlayAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZGF5
T2ZZZWFyICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlckRheU9mWWVhciAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgd2Vla09mWWVhciAgICAg
ICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlcldlZWtPZlllYXIgICAgICAgRG9udEVu
dW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZGF5c0luV2VlayAgICAgICB0ZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZUdldHRlckRheXNJbldlZWsgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgZGF5c0luTW9udGggICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3Rv
dHlwZUdldHRlckRheXNJbk1vbnRoICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNz
b3IKKyAgZGF5c0luWWVhciAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlckRh
eXNJblllYXIgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbW9udGhz
SW5ZZWFyICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoc0luWWVhciAg
ICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgaW5MZWFwWWVhciAgICAgICB0
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlckluTGVhcFllYXIgICAgICAgRG9udEVudW18
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FsZW5kYXIgICAgICAgICB0ZW1wb3JhbFBsYWlu
RGF0ZVByb3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3Vz
dG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKiBUZW1w
b3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90eXBl
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU+
KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVy
biBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OlRlbXBvcmFsUGxh
aW5EYXRlUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQoreworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAg
IEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90
eXBlLmFkZAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90
eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuYWRk
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAgIGF1dG8g
cmVzdWx0ID0gcGxhaW5EYXRlLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluRGF0ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPnBsYWluRGF0ZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnBy
b3RvdHlwZS5zdWJ0cmFjdAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5E
YXRlUHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRl
LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluRGF0
ZSJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluRGF0ZS0+c3VidHJhY3QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluRGF0
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluRGF0ZVN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHJlc3VsdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS53aXRoCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jV2l0aCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
RGF0ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUud2l0aCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluRGF0ZSJfcyk7CisKKyAgICBKU1ZhbHVlIHRlbXBvcmFsVGltZUxpa2UgID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRlbXBvcmFsVGltZUxpa2UuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUud2l0aCBtdXN0
IGJlIGFuIG9iamVjdCJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluRGF0ZS0+d2l0aChn
bG9iYWxPYmplY3QsIGFzT2JqZWN0KHRlbXBvcmFsVGltZUxpa2UpLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluRGF0ZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPnBsYWluRGF0ZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1l
LnByb3RvdHlwZS51bnRpbAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5E
YXRlUHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRlLnBy
b3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluRGF0ZSJfcyk7
CisKKyAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5EYXRlOjpmcm9tKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpbkRhdGUtPnVu
dGlsKGdsb2JhbE9iamVjdCwgb3RoZXIsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3Ry
dWN0dXJlKCkpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUuc2luY2UKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNTaW5jZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluRGF0ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluRGF0
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpbkRhdGUiX3MpOworCisgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWlu
RGF0ZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVs
bG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8g
cmVzdWx0ID0gcGxhaW5EYXRlLT5zaW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJh
dGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSwgZ2xv
YmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpKSkpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnJv
dW5kCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVG
dW5jUm91bmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluRGF0ZSA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpbkRhdGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFwbGFpbkRhdGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpbkRhdGUucHJvdG90eXBlLnJvdW5k
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAgIGF1dG8g
b3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0
aW9ucyBhcmd1bWVudCJfcyk7CisKKyAgICBhdXRvIHJvdW5kZWQgPSBwbGFpbkRhdGUtPnJvdW5k
KGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpbkRhdGU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpbkRhdGVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyb3Vu
ZGVkKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10
ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLmVxdWFscworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY0VxdWFscywgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
RGF0ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpbkRh
dGU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxv
cHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFpbkRhdGUtPnBsYWluRGF0ZSgpID09IG90aGVy
LT5wbGFpbkRhdGUoKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLmdldGlzb2ZpZWxkcworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY0dldElTT0Zp
ZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuZXF1YWxzIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAgIEpTT2JqZWN0
KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIGZpZWxk
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5EYXRlLT5j
YWxlbmRhcigpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
aXNvSG91ciwganNOdW1iZXIocGxhaW5EYXRlLT5ob3VyKCkpKTsKKyAgICBmaWVsZHMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTWljcm9zZWNvbmQsIGpzTnVtYmVyKHBsYWlu
RGF0ZS0+bWljcm9zZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pc29NaWxsaXNlY29uZCwganNOdW1iZXIocGxhaW5EYXRlLT5taWxsaXNlY29u
ZCgpKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb01p
bnV0ZSwganNOdW1iZXIocGxhaW5EYXRlLT5taW51dGUoKSkpOworICAgIGZpZWxkcy0+cHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29OYW5vc2Vjb25kLCBqc051bWJlcihwbGFpbkRh
dGUtPm5hbm9zZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5pc29TZWNvbmQsIGpzTnVtYmVyKHBsYWluRGF0ZS0+c2Vjb25kKCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZpZWxkcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudG9zdHJp
bmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1
bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUudG9T
dHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpbkRhdGUiX3MpOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHBs
YWluRGF0ZS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLnByb3RvdHlwZS50b2pzb24KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8qIHBsYWluRGF0ZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpbkRhdGUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpbkRhdGUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpbkRhdGUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IHBsYWluRGF0ZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZt
LCBwbGFpbkRhdGUtPnRvU3RyaW5nKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS50b2xvY2FsZXN0
cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
RnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFp
bkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRlLnByb3Rv
dHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluRGF0
ZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpbkRh
dGUtPnRvU3RyaW5nKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS52YWx1ZW9mCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jVmFsdWVPZiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuUGxhaW5EYXRlLnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxl
ZC4gVG8gY29tcGFyZSBQbGFpbkRhdGUgdmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5EYXRlLmNv
bXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpbkRh
dGVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5E
YXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluRGF0ZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHBsYWluRGF0ZS0+aG91cigpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1pbnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbFBsYWluRGF0ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKCFwbGFpbkRhdGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpbkRhdGUucHJvdG90eXBlLm1pbnV0ZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluRGF0ZSJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluRGF0ZS0+bWludXRlKCkpKTsKK30KKworSlNDX0RF
RklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyU2Vjb25k
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFp
bkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5w
cm90b3R5cGUuc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9z
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5EYXRlLT5zZWNv
bmQoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpbkRhdGVQ
cm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluRGF0ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFp
bkRhdGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpbkRhdGUucHJvdG90eXBlLm1pbGxpc2Vjb25kIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIocGxhaW5EYXRlLT5taWxsaXNlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1pY3Jvc2Vj
b25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0
ZS5wcm90b3R5cGUubWljcm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFp
bkRhdGUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpbkRh
dGUtPm1pY3Jvc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBv
cmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbFBsYWluRGF0ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Cisg
ICAgaWYgKCFwbGFpbkRhdGUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpbkRhdGUucHJvdG90eXBlLm5hbm9zZWNvbmQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpbkRhdGUiX3MpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpbkRhdGUtPm5hbm9zZWNvbmQoKSkpOworfQor
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVHZXR0
ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byogcGxhaW5EYXRlID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpbkRhdGUpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5Q
bGFpbkRhdGUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
cGxhaW5EYXRlIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGxhaW5EYXRlLT5j
YWxlbmRhcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZjQxZjE2YzQxOWQxN2YxZTFjZjAwMWRlYzBkZjIyZTNlZDM4MWI5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
bkRhdGVQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpbkRhdGVQcm90
b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVy
dHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vz
cz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7Cisg
ICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5E
YXRlUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNl
OworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSogY3JlYXRl
KFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJl
KiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAg
REVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
KFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1ZNLmNwcAppbmRleCAzOGU5NTEyOWJhOWYwMjExMGExYzQzZTA1MWM0YWE2NzhjNmZkMGQz
Li5mNjBmMGMwNmNmYThiNGZiZGUwYzFlMzZhNzVlZGQ5YzQ5OTM3MDcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjYsNiArMTY2LDcgQEAKICNpbmNsdWRlICJTeW1i
b2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAiVGVt
cG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAj
aW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCkBAIC0xNTk1LDYgKzE1OTYsNyBAQCBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxU
eXBlLmdldCgpLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFRlbXBvcmFsQ2FsZW5kYXIpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdl
dCgpLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHRlbXBvcmFsUGxhaW5EYXRlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRl
bXBvcmFsUGxhaW5EYXRlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFs
UGxhaW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBv
cmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9u
ZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5oCmluZGV4IGFhODliMjhhZGUyZjI1YjZjYzg0NDBkNjE0YmM5NDdhZTNiYTRm
NzQuLjEzYzU2YzNiY2YxOTFjNDI3OTg2NDY4MTgyY2M5N2E3Y2M0ZTg1ZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTk2LDYgKzE5Niw3IEBAIGNsYXNzIFVubGlua2VkTW9k
dWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50
cnlTY29wZTsKIGNsYXNzIFRlbXBvcmFsQ2FsZW5kYXI7CitjbGFzcyBUZW1wb3JhbFBsYWluRGF0
ZTsKIGNsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsKIGNs
YXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CkBAIC02MDAsNiArNjAxLDcgQEAgY2xhc3Mg
Vk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2Vk
TGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpbkRhdGVTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3Bh
Y2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3Bh
Y2UpCg==
</data>
<flag name="commit-queue"
          id="464790"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451827</attachid>
            <date>2022-02-13 11:09:12 -0800</date>
            <delta_ts>2022-02-13 13:13:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230033-20220214060910.patch</filename>
            <type>text/plain</type>
            <size>64934</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZmZmM2ZiZmMzZDRmNGMwY2UzMzU4ZDZlYTZjZjRiZWRiYjljMDMwLi5hZDEyYTdmYmI0YTc5YTNh
NWU5NWZmZjJmYzg1ZmFlMDZjY2FkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMi0wMi0xMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluRGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDMzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84MzEyNzc0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNvbnN0cnVjdG9yLCBgZnJvbWAgYW5kIGBjb21w
YXJlYCBmb3IgVGVtcG9yYWwuUGxhaW5EYXRlLgorICAgICAgICBUaGlzIGlzIG9ubHkgYSBwYXJ0
aWFsIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIGBmcm9tYCBkb2Vzbid0CisgICAgICAgIHN1cHBv
cnQgb2JqZWN0IHBhcmFtZXRlcnMsIGFuZCB0aGUgYGNvbXBhcmVgIGZ1bmN0aW9uIGNyZWF0ZXMg
c29tZQorICAgICAgICBpbnRlcm5hbGx5LiBIb3dldmVyLCBpdCBpcyBhIHN0YXJ0IQorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDogQWRkIG5ldyBmaWxlcy4KKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOiBDcmVhdGUgdGhlIHRlbXBvcmFsUGxhaW5EYXRlU3BhY2UuCisgICAgICAgICogaGVh
cC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oOgorCisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9u
dGgpOiBNYWtlIHRoaXMgcHVibGljbHkgdmlzaWJsZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
dGVtcG9yYWxEYXRlVG9TdHJpbmcpOiBOZXcgbWV0aG9kIGZvciBwcmludGluZyBhIGRhdGUuCisg
ICAgICAgICogcnVudGltZS9JU084NjAxLmg6CisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDogTWFrZSB0aGUgbV9wbGFpbkRhdGVTdHJ1Y3R1cmUgb2JqZWN0LgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGxhaW5EYXRlU3RydWN0
dXJlKToKKworICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOiBBZGQgdGhlIFBs
YWluRGF0ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEpTQzo6Y3JlYXRlUGxhaW5EYXRlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuaDoKKworICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpbkRhdGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6VGVt
cG9yYWxQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6dmlzaXRDaGlsZHJl
bkltcGwpOgorICAgICAgICAoSlNDOjp0b1BsYWluRGF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5EYXRlOjp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpbkRhdGU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRh
dGU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6Y29tcGFyZSk6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAg
ICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oOiBBZGRlZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDogRGVmaW5lIHRoZSB0ZW1wb3JhbFBsYWluRGF0ZVNwYWNlLgorCiAy
MDIyLTAyLTEyICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0NNYWtlXSBSRUdSRVNTSU9OKHIyODk2MTEpOiBEZWJ1ZyBidWlsZHMgZmFpbCBs
aW5raW5nIGJpbmFyaWVzIHdpdGggbGQubGxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IDU1NDU4MTZmMDhiN2Uy
NzYzODA0MTZjYzVkNTFkMzI0MzIzMWFjOTcuLmI5MjFiMmY4Mjg2NDMwMWEwYzViZjcxNTQ2NGQ4
MWI1ZmFhZjA4YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xOTEsNiArMTkxLDggQEAgJChQUk9KRUNUX0RJ
UikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIp
L3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVu
dGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0
b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1
dC54Y2ZpbGVsaXN0CmluZGV4IDVkNjkyNzA5NDM0MWQ5ZTc0Nzk0MmU5ZjUyZWMxZmY2MTllN2I4
MDQuLjhmODJjMzNlNWQ5OTRiOTNmOGFhMGM2ZjIwM2Y4YmUyODYyYzkxMGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxp
c3QKQEAgLTc2LDYgKzc2LDggQEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmwKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxUX1BS
T0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpbkRh
dGVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCmluZGV4IDdmZGE3NmEzY2FhYzM3YWVkOGU5ZjY2OGIyNWVjMTBhY2U0YzQyM2Iu
LjBmNDhhZDU2YzlmYzZkNWE4MWY0YmVjOTRlNGQ4ZTk4MjVjZTFjODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0yMDcsNiArMjA3LDggQEAgT0JKRUNU
X0xVVF9IRUFERVJTID0gXAogICAgIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBcCiAg
ICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBU
ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQu
aCBcCiAgICAgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3Rvci5sdXQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGQwNDgwOTE4Y2IwNDdkNDQ5ODNlZGQ1ZTZkN2EwMWJlNTNlZWVmOGMuLmI1M2NjODFhOTY4
OThiMzQwY2E0MGZkZDE5ZmNmZjg4NzZjNmE2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC04NTAsNiArODUwLDkgQEAKIAkJMkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVu
dW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkFEMkVERkExOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJBRDg5MzJCMTdF
Mzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBI
ZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsKIAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8q
IFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlBNjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxNzcwQzU1MjdCOTRD
RTYwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTc3MEM0RjI3Qjk0Q0U0MDAzMDgw
OTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oICovOyB9OworCQkzMTc3MEM1NzI3
Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNzcwQzUxMjdCOTRDRTQwMDMw
ODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oICovOyB9OworCQkzMTc3MEM1ODI3
Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNzcwQzUyMjdCOTRDRTUwMDMwODA5MSAvKiBU
ZW1wb3JhbFBsYWluRGF0ZS5oICovOyB9OwogCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyog
U2NyaWJibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAvKiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZB
RCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIyNTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVE
ZWFkQ29kZS5oICovOyB9OwogCQkzM0E5MjBCRDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xv
d1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVCQUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzcy
MCw2ICszNzIzLDEyIEBACiAJCTJBREZBMjYyMThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8q
IEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJj
ZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlD
RDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNzcwQzRGMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NzBDNTAy
N0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNzcwQzUxMjdCOTRDRTQw
MDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMTc3MEM1MjI3Qjk0Q0U1MDAzMDgwOTEgLyogVGVtcG9yYWxQ
bGFpbkRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFp
bkRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NzBDNTMyN0I5NENFNTAw
MzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzE3NzBDNTQyN0I5NENFNTAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlUHJv
dG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFs
UGxhaW5EYXRlUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMx
MTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmli
YmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4
QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0
aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQzNjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGlt
aXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6
ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVzLmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2Np
YXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5
MzIsNyArNTk0MSw2IEBACiAJCQkJODYwM0NFRjAxNEM3NTNFRjAwQUU1OUUzIC8qIHRvb2xzICov
LAogCQkJCTdCOThEMTMzMUI2MENEMUUwMDIzQjFBNCAvKiB3YXNtICovLAogCQkJCTg2RUFDNDhD
MEY5M0U4QjkwMDhFQzk0OCAvKiB5YXJyICovLAotCQkJCTUzMzY5OUFGMjdBMzA2RjYwMEM5NTYx
RCAvKiBSZWNvdmVyZWQgUmVmZXJlbmNlcyAqLywKIAkJCSk7CiAJCQluYW1lID0gSmF2YVNjcmlw
dENvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzMyNyw5ICs3MzM1LDYgQEAK
IAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0IC8qIHdhc20gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTM3QUFDMDkxMjc5RjEyNDIwMEQ2NDg0MiAvKiBX
YXNtQnJhbmNoSGludHMuaCAqLywKLQkJCQkzN0FBQzA5MDI3OUYxMjQxMDBENjQ4NDIgLyogV2Fz
bUJyYW5jaEhpbnRzU2VjdGlvblBhcnNlci5jcHAgKi8sCi0JCQkJMzdBQUMwOTIyNzlGMTI0MjAw
RDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1NlY3Rpb25QYXJzZXIuaCAqLywKIAkJCQlBRDJGQ0I4
QTFEQjU4NDAwMDBCM0U3MzYgLyoganMgKi8sCiAJCQkJNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURC
IC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAgKi8sCiAJCQkJNTI4NDdBREEyMUZGQjg2MzAwNjFB
OURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oICovLApAQCAtNzMzOSw2ICs3MzQ0LDkgQEAKIAkJ
CQk1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCAqLywKIAkJCQlBRDRC
MURGNzFERjI0NEQ3MDA3MUFFMzIgLyogV2FzbUJpbmRpbmcuY3BwICovLAogCQkJCUFENEIxREY4
MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oICovLAorCQkJCTM3QUFDMDkxMjc5RjEy
NDIwMEQ2NDg0MiAvKiBXYXNtQnJhbmNoSGludHMuaCAqLywKKwkJCQkzN0FBQzA5MDI3OUYxMjQx
MDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRzU2VjdGlvblBhcnNlci5jcHAgKi8sCisJCQkJMzdB
QUMwOTIyNzlGMTI0MjAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1NlY3Rpb25QYXJzZXIuaCAq
LywKIAkJCQk1MjVDMERENzFFOTM1ODQ3MDAyMTg0Q0QgLyogV2FzbUNhbGxlZS5jcHAgKi8sCiAJ
CQkJNTI1QzBERDgxRTkzNTg0NzAwMjE4NENEIC8qIFdhc21DYWxsZWUuaCAqLywKIAkJCQk1MjZB
QzRCNDFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNhbGxlZUdyb3VwLmNwcCAqLywKQEAgLTgyNjAs
NiArODI2OCwxMiBAQAogCQkJCUY2RjE1MDE4MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5v
dy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0QzM0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5j
cHAgKi8sCiAJCQkJRjZGMTUwMUEyNjkzRDMzRTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0Lmgg
Ki8sCisJCQkJMzE3NzBDNTMyN0I5NENFNTAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlLmNw
cCAqLywKKwkJCQkzMTc3MEM1MjI3Qjk0Q0U1MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUu
aCAqLywKKwkJCQkzMTc3MEM1MDI3Qjk0Q0U0MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJMzE3NzBDNEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBv
cmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAqLywKKwkJCQkzMTc3MEM1NDI3Qjk0Q0U1MDAzMDgw
OTEgLyogVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuY3BwICovLAorCQkJCTMxNzcwQzUxMjdC
OTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCUUz
ODZGRDc3MjZFODY3QjcwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZS5jcHAgKi8sCiAJCQkJ
RTM4NkZENzgyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lLmggKi8sCiAJCQkJ
RTM4NkZENzQyNkU4NjdCNzAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Iu
Y3BwICovLApAQCAtMTA5NzksNyArMTA5OTMsNiBAQAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQz
M0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUw
MkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3BlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4g
SGVhZGVycyAqLywKLQkJCQkzN0FBQzA5NDI3OUYxQzA1MDBENjQ4NDIgLyogV2FzbUJyYW5jaEhp
bnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2Ny
aWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBT
Y3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYz
MzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTEwOTcsNiArMTEx
MTAsOSBAQAogCQkJCUY2RDY3RDQ0MjZGOTAyRTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2RDY3RDQ4MjZGOTEzMEMwMDZFMDM0OSAv
KiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkYx
NTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVtcG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMTc3MEM1ODI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCTMxNzcwQzU1MjdCOTRDRTYwMDMwODA5MSAvKiBUZW1wb3JhbFBs
YWluRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTc3MEM1NzI3Qjk0Q0U2
MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTM4NkZEN0IyNkU4NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5U
aW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdGMjZFODY3QjgwMEU0
QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTEwOSw3ICsxMTEyNSw2IEBACiAJCQkJRkUzNDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAvKiBU
aHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTczODY1NTYxMTg2OTdCNDAwNTQw
Mjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzdBQUMwOTMyNzlG
MUJGQzAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1NlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0MTQ0OENEMTNBMTc4MzcwMEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNTU5ODk4MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2ZUZy
b21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyRDRERTkxOTgzMkRBQzAwN0Q0QjE5IC8q
IFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTE2Niw2ICsxMTE4MSw4IEBACiAJ
CQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1M0NBNzMwQTFFQTUzM0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBp
biBIZWFkZXJzICovLAogCQkJCUFENEIxREZBMURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGlu
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzdBQUMwOTQyNzlGMUMwNTAwRDY0ODQyIC8qIFdhc21C
cmFuY2hIaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzdBQUMwOTMyNzlGMUJGQzAwRDY0ODQy
IC8qIFdhc21CcmFuY2hIaW50c1NlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUy
NUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBXYXNtQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNhbGxlZUdyb3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFM0ZCODUzQTIyRjM2NjdCMDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzYTk1YzU4
YjNkOTliOWJjZTgzMmMwMTc1ODJkZjk1ODRkOGVjYThhLi44NGE5NjI0MWRiMWQ4M2JiY2RhZDNj
MTllY2EzZTUzOWM2ZmI3YmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIw
LDYgKzEwMjAsOSBAQCBydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAogcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNw
cAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUu
Y3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwCitydW50aW1lL1Rl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CmluZGV4IDAxZTFjOTMyYmYzMzcxMjAzNTViOGEwZjAwNmRmY2E3NDdiMTEyNWYuLmE3YzkxYmE0
NzkwZDc3MWZiMmFhNGY0YzljOGFkZDE1MzllOTIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuY3BwCkBAIC0zMjM3LDYgKzMyMzcsNyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVtcG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24pCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBv
cmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1w
b3JhbFBsYWluRGF0ZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFBsYWluRGF0ZSkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGlt
ZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBUZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNP
X1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4
QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggYWRjZmFiYjNiZDJmMjY3NTAy
Mzk2NDU3OTc3YmI3ZDE3YWZlYTMyZS4uNWRhNjFmNTA0NWE2YzgzODIwNTI2N2JhNWIxOGUyOGYx
ZmRlNjZjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtOTQzLDYgKzk0Myw3IEBA
IHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFs
Q2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRl
bXBvcmFsRHVyYXRpb25TcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxQbGFpbkRhdGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1YnNwYWNlVHlwZXMuaAppbmRleCA2MGFjZWJlODlm
YmFiYjNkNWExNWI0ZDhjZTUzOTA5NTJlNjdkN2VhLi4wYjQ0ZmUwMWU5NDVkMjI0ZDU3MTJhODA2
NmQxMTIwODkxY2I1NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU3Vic3BhY2VUeXBlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBT
dWJzcGFjZVR5cGVzLmgKQEAgLTEwOSw2ICsxMDksNyBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2Fs
ZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbFBsYWluVGltZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNs
dWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IGUzMjA4MzQ5NjI1NWQxYjg2MjcxNTFhYTMyMTE4YTMz
ZWZkY2FiYjAuLmJkYzNmYTc2M2M1YmY4YmZkNzhjMjk4ZDIyNzg3Y2EyODZkMmZhNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC02ODIsNyArNjgyLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9u
YWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2UKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXNvZGF5c2lubW9udGgKLXN0YXRpYyBpbmxpbmUg
dW5zaWduZWQgZGF5c0luTW9udGgoaW50MzJfdCB5ZWFyLCB1bnNpZ25lZCBtb250aCkKK3Vuc2ln
bmVkIGRheXNJbk1vbnRoKGludDMyX3QgeWVhciwgdW5zaWduZWQgbW9udGgpCiB7CiAgICAgc3dp
dGNoIChtb250aCkgewogICAgIGNhc2UgMToKQEAgLTk4Nyw2ICs5ODcsMTEgQEAgU3RyaW5nIHRl
bXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lz
aW9uLCB1bnNpZ25lZD4KICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRp
bWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBh
ZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0
aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKIH0KIAorU3RyaW5nIHRlbXBvcmFsRGF0ZVRv
U3RyaW5nKFBsYWluRGF0ZSBwbGFpbkRhdGUpCit7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFk
KCcwJywgNCwgcGxhaW5EYXRlLnllYXIoKSksICctJywgcGFkKCcwJywgMiwgcGxhaW5EYXRlLm1v
bnRoKCkpLCAnLScsIHBhZCgnMCcsIDIsIHBsYWluRGF0ZS5kYXkoKSkpOworfQorCiAvLyBJc1Zh
bGlkRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMs
IHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCiAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVy
YXRpb24KIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJiBkdXJhdGlvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCAxODY1ZDMzZjk2MjAyNjhi
NTUzMTQxZTFjZDU5ZWIzZDI1MzYzNmExLi4yNjUwZTljMDFhNGNiZGJkMzEwZjkxZjIyZjFhOTFk
N2JmN2U2YzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084
NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0y
ODQsNiArMjg0LDggQEAgc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpv
cHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3QKIHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25h
bDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1ZpZXcpOwogU3RyaW5nIGZv
cm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3QpOwogU3RyaW5nIHRlbXBvcmFsVGltZVRv
U3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNp
b24pOworU3RyaW5nIHRlbXBvcmFsRGF0ZVRvU3RyaW5nKFBsYWluRGF0ZSk7Cit1bnNpZ25lZCBk
YXlzSW5Nb250aChpbnQzMl90IHllYXIsIHVuc2lnbmVkIG1vbnRoKTsKIAogYm9vbCBpc1ZhbGlk
RHVyYXRpb24oY29uc3QgRHVyYXRpb24mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGE5MDc2Nzk4OGViYzZjNzc5Y2ZmMzhj
Zjc2MzM0ZGUzYzhjYmU3MGUuLmQ3OTBkZTZlMTg4ZWQ2YzFmZTgxZWZkNzQwNzI0N2ZjZDI0NTc5
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFRpbWVab25lLmgiCkBAIC0xMjY5LDYgKzEyNzEsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29u
c3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRh
bE5hbWUKICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGluc3RhbnRQcm90b3R5cGUpKTsKICAgICAg
ICAgICAgIH0pOwogCisgICAgICAgIG1fcGxhaW5EYXRlU3RydWN0dXJlLmluaXRMYXRlcigKKyAg
ICAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAg
ICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4o
aW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgYXV0byogcGxhaW5EYXRlUHJvdG90eXBlID0g
VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3Qs
IFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAg
ICAgICAgaW5pdC5zZXQoVGVtcG9yYWxQbGFpbkRhdGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIHBsYWluRGF0ZVByb3RvdHlwZSkpOworICAgICAgICAgICAgfSk7CisK
ICAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10g
KGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBh
dXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4
IDNhZGZhMzhlOGEzMjQ5YTQ1OGJjYjE3NDViMTgyNjUzZGY1YzhiNzUuLmQ2ZGE0OTc0YzY0Y2Ux
NTZhYzM3NzNmMGE4ODdjZGRmMWQ1NzM2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzM4LDYgKzMzOCw3IEBAIHB1YmxpYzoKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJh
dGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZT4gbV9pbnN0YW50U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX3BsYWluRGF0ZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbGFpblRpbWVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fdGltZVpvbmVTdHJ1Y3R1cmU7CiAKQEAg
LTkwOCw2ICs5MDksNyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVjdHVy
ZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0
dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUuZ2V0
KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4gbV9p
bnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogcGxhaW5EYXRlU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpbkRhdGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAg
U3RydWN0dXJlKiBwbGFpblRpbWVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVj
dHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV90aW1lWm9uZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGFhOTJlOTYzYWNk
OGJiZDc0M2FiM2MzZjZhZmRjMWI5YzdlYjYwMzYuLjNjZDJmYTM3MzNiYTcwMGZiNmFlNzJkYjA5
OTIwNGUxOTM4N2JhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbE9iamVjdC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbElu
c3RhbnRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlRlbXBvcmFsTm93LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmgiCkBAIC03NSw2ICs3NywxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50
Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBUZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqPihnbG9iYWxP
YmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0K
IAorc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5EYXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU09i
amVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpz
Q2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0g
dGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIFRlbXBvcmFsUGxh
aW5EYXRlQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+cGxhaW5EYXRlU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7
Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwg
SlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3Qg
PSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwpAQCAtMTAxLDYgKzExMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9y
ICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgSW5zdGFudCAgICAgICAgY3JlYXRl
SW5zdGFudENvbnN0cnVjdG9yICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIE5v
dyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAgRG9udEVudW18UHJv
cGVydHlDYWxsYmFjaworICBQbGFpbkRhdGUgICAgICBjcmVhdGVQbGFpbkRhdGVDb25zdHJ1Y3Rv
ciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgUGxhaW5UaW1lICAgICAgY3JlYXRl
UGxhaW5UaW1lQ29uc3RydWN0b3IgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFRp
bWVab25lICAgICAgIGNyZWF0ZVRpbWVab25lQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJv
cGVydHlDYWxsYmFjawogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmgKaW5kZXggOGNkMzMzNmFhZWFkYzc2M2I0ZWNjMjgyNzUzY2UxZGFhNzMy
ZmM2NC4uNzVkMjAzMjBiYmQzNDY3ZjA0NzllY2QwNGRlNzU1NGNkMTAzZDNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yNyw2ICsy
NywxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorI2RlZmluZSBKU0NfVEVNUE9SQUxfUExBSU5f
REFURV9VTklUUyhtYWNybykgXAorICAgIG1hY3JvKHllYXIsIFllYXIpIFwKKyAgICBtYWNybyht
b250aCwgTW9udGgpIFwKKyAgICBtYWNybyhkYXksIERheSkgXAorCisKICNkZWZpbmUgSlNDX1RF
TVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMobWFjcm8pIFwKICAgICBtYWNybyhob3VyLCBIb3VyKSBc
CiAgICAgbWFjcm8obWludXRlLCBNaW51dGUpIFwKQEAgLTUxLDYgKzU3LDcgQEAgZW51bSBjbGFz
cyBUZW1wb3JhbFVuaXQgOiB1aW50OF90IHsKIH07CiAjZGVmaW5lIEpTQ19DT1VOVF9URU1QT1JB
TF9VTklUUyhuYW1lLCBjYXBpdGFsaXplZE5hbWUpICsgMQogc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBudW1iZXJPZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfQ09V
TlRfVEVNUE9SQUxfVU5JVFMpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRl
bXBvcmFsUGxhaW5EYXRlVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9QTEFJTl9EQVRFX1VOSVRTKEpT
Q19DT1VOVF9URU1QT1JBTF9VTklUUyk7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJl
ck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyA9IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5J
VFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTKTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxf
VU5JVFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpbkRhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpbkRhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3OGY5NGJmYjAxMTUyN2E2NmFmMWI4NWQ5NmQzZTRj
ZTZlYjQ4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluRGF0ZS5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0U2xvdFZp
c2l0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lu
bGluZXMuaCIKKyNpbmNsdWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworbmFtZXNwYWNlIFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJuYWwgeworc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK30KKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsUGxhaW5EYXRlOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5EYXRlKSB9OworCitU
ZW1wb3JhbFBsYWluRGF0ZSogVGVtcG9yYWxQbGFpbkRhdGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpQbGFpbkRhdGUmJiBwbGFpbkRhdGUpCit7CisgICAg
YXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpbkRh
dGU+KHZtKSkgVGVtcG9yYWxQbGFpbkRhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpbkRh
dGUpKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0
OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sK
KyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1Rl
bXBvcmFsUGxhaW5EYXRlOjpUZW1wb3JhbFBsYWluRGF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBJU084NjAxOjpQbGFpbkRhdGUmJiBwbGFpbkRhdGUpCisgICAgOiBCYXNlKHZtLCBz
dHJ1Y3R1cmUpCisgICAgLCBtX3BsYWluRGF0ZShXVEZNb3ZlKHBsYWluRGF0ZSkpCit7Cit9CisK
K3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKKyAgICBtX2NhbGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IGF1dG8mIGlu
aXQpIHsKKyAgICAgICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAgICAgICAgICBhdXRvKiBw
bGFpbkRhdGUgPSBqc0Nhc3Q8VGVtcG9yYWxQbGFpbkRhdGUqPihpbml0Lm93bmVyKTsKKyAgICAg
ICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluRGF0ZS0+Z2xvYmFsT2JqZWN0KHZtKTsK
KyAgICAgICAgICAgIGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRhcklEKCkp
OworICAgICAgICAgICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAgICB9KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGU6OnZpc2l0Q2hp
bGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2
aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpz
Q2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPm1fY2FsZW5k
YXIudmlzaXQodmlzaXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihUZW1wb3JhbFBs
YWluRGF0ZSk7CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLWlzdmFsaWRpc29kYXRlCitzdGF0aWMgSVNPODYwMTo6UGxhaW5EYXRlIHRvUGxhaW5E
YXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVy
YXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSB5ZWFyID0gZHVyYXRp
b24ueWVhcnMoKTsKKyAgICBkb3VibGUgbW9udGggPSBkdXJhdGlvbi5tb250aHMoKTsKKyAgICBk
b3VibGUgZGF5ID0gZHVyYXRpb24uZGF5cygpOworICAgIGlmICghKG1vbnRoID49IDEgJiYgbW9u
dGggPD0gMTIpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAibW9udGggaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisgICAgZG91YmxlIGRheXNJbk1vbnRoID0gSVNPODYwMTo6ZGF5c0luTW9udGgoc3RhdGljX2Nh
c3Q8aW50MzJfdD4oeWVhciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb250aCkpOworICAgIGlm
ICghKGRheSA+PSAxICYmIGRheSA8PSBkYXlzSW5Nb250aCkpIHsKKyAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXkgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluRGF0ZSB7
CisgICAgICAgIHN0YXRpY19jYXN0PGludDMyX3Q+KHllYXIpLAorICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obW9udGgpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF5KQor
ICAgIH07Cit9CisKKy8vIENyZWF0ZVRlbXBvcmFsUGxhaW5EYXRlICggeWVhcnMsIG1vbnRocywg
ZGF5cyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC1wbGFpbmRhdGUtY29uc3RydWN0b3IKK1RlbXBvcmFsUGxhaW5EYXRlKiBUZW1wb3JhbFBsYWlu
RGF0ZTo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byBwbGFpbkRhdGUgPSB0b1BsYWluRGF0ZShnbG9iYWxP
YmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGUodm0sIHN0cnVj
dHVyZSwgV1RGTW92ZShwbGFpbkRhdGUpKTsKK30KKworU3RyaW5nIFRlbXBvcmFsUGxhaW5EYXRl
Ojp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNW
YWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlv
bnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghb3B0aW9ucykK
KyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9y
YWxEYXRlVG9TdHJpbmcobV9wbGFpbkRhdGUpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsZGF0ZQorVGVtcG9yYWxQbGFp
bkRhdGUqIFRlbXBvcmFsUGxhaW5EYXRlOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92
ZXJmbG93VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFVOVVNFRF9QQVJBTShv
dmVyZmxvd1ZhbHVlKTsKKworICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaW1wbGVtZW50ZWQ6IGZy
b20gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIHN0
cmluZyA9IGl0ZW1WYWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGRhdGVUaW1lID0gSVNPODYwMTo6
cGFyc2VEYXRlVGltZShzdHJpbmcpOworICAgIGlmIChkYXRlVGltZSkgeworICAgICAgICBhdXRv
IFtwbGFpbkRhdGUsIHBsYWluVGltZU9wdGlvbmFsLCB0aW1lWm9uZU9wdGlvbmFsXSA9IGRhdGVU
aW1lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluRGF0ZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluRGF0ZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluRGF0ZSkp
OworICAgIH0KKworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52
YWxpZCBkYXRlIHN0cmluZyJfcyk7CisgICAgcmV0dXJuIHsgfTsKK30KKworLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY29tcGFyZXRlbXBvcmFsZGF0
ZQoraW50MzJfdCBUZW1wb3JhbFBsYWluRGF0ZTo6Y29tcGFyZShUZW1wb3JhbFBsYWluRGF0ZSog
cGxhaW5EYXRlMSwgVGVtcG9yYWxQbGFpbkRhdGUqIHBsYWluRGF0ZTIpCit7CisgICAgSVNPODYw
MTo6UGxhaW5EYXRlIGQxID0gcGxhaW5EYXRlMS0+cGxhaW5EYXRlKCk7CisgICAgSVNPODYwMTo6
UGxhaW5EYXRlIGQyID0gcGxhaW5EYXRlMi0+cGxhaW5EYXRlKCk7CisgICAgaWYgKGQxLnllYXIo
KSA+IGQyLnllYXIoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGQxLnllYXIoKSA8IGQy
LnllYXIoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChkMS5tb250aCgpID4gZDIubW9u
dGgoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGQxLm1vbnRoKCkgPCBkMi5tb250aCgp
KQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGQxLmRheSgpID4gZDIuZGF5KCkpCisgICAg
ICAgIHJldHVybiAxOworICAgIGlmIChkMS5kYXkoKSA8IGQyLmRheSgpKQorICAgICAgICByZXR1
cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjUyNWVlYjE4MDZkOTNkMjYyZWE3Mjk4Zjg2ZmIzZmFmYjc2ZWYyNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUg
IkxhenlQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5EYXRlIGZpbmFsIDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+
CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAg
ICAgICByZXR1cm4gdm0udGVtcG9yYWxQbGFpbkRhdGVTcGFjZTxtb2RlPigpOworICAgIH0KKwor
ICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNP
ODYwMTo6UGxhaW5EYXRlJiYpOworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZSogdHJ5Q3Jl
YXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9u
JiYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVt
cG9yYWxQbGFpbkRhdGUqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Om9wdGlv
bmFsPFRlbXBvcmFsT3ZlcmZsb3c+KTsKKyAgICBzdGF0aWMgaW50MzJfdCBjb21wYXJlKFRlbXBv
cmFsUGxhaW5EYXRlKiwgVGVtcG9yYWxQbGFpbkRhdGUqKTsKKworICAgIFRlbXBvcmFsQ2FsZW5k
YXIqIGNhbGVuZGFyKCkgeyByZXR1cm4gbV9jYWxlbmRhci5nZXQodGhpcyk7IH0KKyAgICBJU084
NjAxOjpQbGFpbkRhdGUgcGxhaW5EYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpbkRhdGU7IH0K
KworI2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX0RBVEVfRklFTEQobmFtZSwgY2Fw
aXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxh
aW5EYXRlLm5hbWUoKTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9EQVRFX1VOSVRTKEpTQ19E
RUZJTkVfVEVNUE9SQUxfUExBSU5fREFURV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1Q
T1JBTF9QTEFJTl9EQVRFX0ZJRUxECisKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxEYXRlVG9TdHJpbmcobV9w
bGFpbkRhdGUpOworICAgIH0KKworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKK3ByaXZh
dGU6CisgICAgVGVtcG9yYWxQbGFpbkRhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFp
bkRhdGUmJik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAx
OjpQbGFpbkRhdGU+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsK
KyAgICBzdGF0aWMgSVNPODYwMTo6UGxhaW5EYXRlIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCopOworCisgICAgSVNPODYwMTo6UGxhaW5EYXRlIG1fcGxhaW5EYXRlOworICAg
IExhenlQcm9wZXJ0eTxUZW1wb3JhbFBsYWluRGF0ZSwgVGVtcG9yYWxDYWxlbmRhcj4gbV9jYWxl
bmRhcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zOWU2MGYxNTcxY2ExOTZhOWY3MDlmYTc2ZjBmYWU5M2I0YmYwZDNlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50
bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpbkRhdGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0Zyb20pOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1
Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1w
b3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sICZ0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvcikgfTsKKworLyogU291
cmNlIGZvciBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVtcG9y
YWxQbGFpbkRhdGVDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxQ
bGFpbkRhdGVDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0Nv
bXBhcmUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxQ
bGFpbkRhdGVDb25zdHJ1Y3RvciogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
KiBwbGFpbkRhdGVQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yPih2bSkpIFRl
bXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwbGFpbkRhdGVQcm90b3R5cGUpOworICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTihjYWxsVGVtcG9yYWxQbGFpbkRhdGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04oY29uc3RydWN0VGVtcG9yYWxQbGFpbkRhdGUpOworCitUZW1wb3JhbFBsYWluRGF0ZUNv
bnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbFBsYWlu
RGF0ZSwgY29uc3RydWN0VGVtcG9yYWxQbGFpbkRhdGUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQ
bGFpbkRhdGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFBsYWlu
RGF0ZVByb3RvdHlwZSogcGxhaW5EYXRlUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAwLCAiUGxhaW5EYXRlIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91
dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBsYWluRGF0ZVByb3RvdHlwZSwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHBsYWluRGF0ZVByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWlu
RGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFz
T2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgcGxhaW5EYXRlU3RydWN0dXJlLCBuZXdU
YXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBh
dXRvIGFyZ3VtZW50Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKKworICAgIGlm
IChhcmd1bWVudENvdW50ID4gMCkgeworICAgICAgICBhdXRvIHZhbHVlID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZSB5
ZWFyIHByb3BlcnR5IG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgZHVyYXRpb24uc2V0WWVh
cnModmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAg
IH0KKworICAgIGlmIChhcmd1bWVudENvdW50ID4gMSkgeworICAgICAgICBhdXRvIHZhbHVlID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXJPckluZmluaXR5KGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluRGF0ZSBtb250aCBwcm9wZXJ0eSBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIGR1
cmF0aW9uLnNldE1vbnRocyh2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgfQorCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAyKSB7CisgICAgICAg
IGF1dG8gdmFsdWUgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvSW50ZWdlck9y
SW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVl
KSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRlIGRheSBwcm9wZXJ0eSBtdXN0IGJlIGZpbml0ZSJfcyk7
CisgICAgICAgIGR1cmF0aW9uLnNldERheXModmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5EYXRlOjp0cnlDcmVhdGVJZlZhbGlkKGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1cmF0aW9uKSkpKTsKK30KKworSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluRGF0ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFz
RnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBsYWluRGF0ZSIpKTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxh
aW5kYXRlLmZyb20KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZUNv
bnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBv
cHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
VGVtcG9yYWxPdmVyZmxvdyBvdmVyZmxvdyA9IHRvVGVtcG9yYWxPdmVyZmxvdyhnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisKKyAgICBpZiAo
aXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsUGxhaW5EYXRlPih2bSkpCisgICAgICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5EYXRlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5EYXRlU3RydWN0dXJlKCksIGpzQ2FzdDxUZW1w
b3JhbFBsYWluRGF0ZSo+KGl0ZW1WYWx1ZSktPnBsYWluRGF0ZSgpKSkpOworCisgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpbkRhdGU6OmZy
b20oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUsIG92ZXJmbG93KSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbmRhdGUuY29tcGFy
ZQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3JG
dW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogb25lID0gVGVtcG9y
YWxQbGFpbkRhdGU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBz
dGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBhdXRvKiB0d28gPSBUZW1wb3JhbFBsYWluRGF0ZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoVGVt
cG9yYWxQbGFpbkRhdGU6OmNvbXBhcmUob25lLCB0d28pKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpbkRhdGVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MjU3ZTEzZjI1ZTM3Njc4
N2JkOTgyNDQ3Y2U1OWRjMzJjYmY4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU7CisKK2NsYXNzIFRl
bXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZs
YWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWlu
RGF0ZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZh
dGU6CisgICAgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSop
OworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5E
YXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
UGxhaW5EYXRlUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg4MzBiYmEyOTRlZTczZWQ4ODM0
YjZlYjliODY0N2I2OTNhMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTMy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgi
CisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3Iu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFp
bkRhdGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVy
WWVhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZUdldHRlck1vbnRoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyRGF5KTsKKworfQorCisjaW5jbHVkZSAi
VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
b25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRl
bXBvcmFsLlBsYWluRGF0ZSIsICZCYXNlOjpzX2luZm8sICZwbGFpbkRhdGVQcm90b3R5cGVUYWJs
ZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlw
ZSkgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5sdXQuaAor
QGJlZ2luIHBsYWluRGF0ZVByb3RvdHlwZVRhYmxlCisgIHRvU3RyaW5nICAgICAgICAgdGVtcG9y
YWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDAKKyAgeWVhciAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRl
clllYXIgICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbW9u
dGggICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoICAgICAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZGF5ICAgICAgICAgICAg
ICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlckRheSAgICAgICAgICAgICAgRG9udEVu
dW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5EYXRl
UHJvdG90eXBlKiBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAg
YXV0byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFp
bkRhdGVQcm90b3R5cGU+KHZtKSkgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5EYXRl
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpU
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5EYXRl
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW5k
YXRlLnByb3RvdHlwZS50b3N0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5EYXRlUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5EYXRlKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxh
aW5EYXRlLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBs
YWluRGF0ZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShqc1N0cmluZyh2bSwgcGxhaW5EYXRlLT50b1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVt
cG9yYWxQbGFpbkRhdGVQcm90b3R5cGVHZXR0ZXJZZWFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUueWVhciBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluRGF0ZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHBsYWluRGF0ZS0+eWVhcigpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUu
bW9udGggY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpbkRhdGUiX3MpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpbkRhdGUtPm1vbnRoKCkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0
dGVyRGF5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
RGF0ZS5wcm90b3R5cGUuZGF5IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRl
Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5EYXRlLT5k
YXkoKSkpOworfQorCisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjY3OTM5YTY0NjBkMjBhZWMzYTJiZmQ0ZjMzN2U3MTU0OThiYjUyMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5E
YXRlUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZSgpOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWlu
RGF0ZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBv
cmFsUGxhaW5EYXRlUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IGQ1Mjg2NGU5YTA2MzhmNzFhYTA2ZWU0
M2QwYjMyMzA1NDllNmIxMjUuLmEzZTc3YjM4MWRiMTc4MmM2NDMyNzliMTdkYjJiMmU5ZTYwODhk
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQ5LDYgKzQ0OSw3IEBAIHB1
YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2Fs
ZW5kYXJTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBv
cmFsRHVyYXRpb25TcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHRlbXBvcmFsSW5zdGFudFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxQbGFpbkRhdGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMzODFmNmJjYzRkYjBl
ODMwMTRjZDNkYjFkOWU5ODc3ZmY1OGQ3MDYuLjgwMTRiMWIzYjM3YTFjZTBiMzI0MjdiZTQ5NGE0
M2ZkYTEyOTE0NmUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjItMDItMTMgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpbkRh
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDAz
MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODMxMjc3NDc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU29tZSBiYXNpYyB0ZXN0cyBmb3IgUGxhaW5E
YXRlLgorCisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0ZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91
bGRCZS5TdHJpbmcuVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20pOgorICAgICAgICAobGV0LnRleHQu
b2YuZmFpbHVyZXMuc2hvdWxkVGhyb3cpOgorCiAyMDIyLTAyLTA5ICBBbmdlbG9zIE9pa29ub21v
cG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNraXAgZmFpbGluZyBzaGFk
b3cgcmVhbG1zIHRlc3RzIG9uIE1JUFMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBv
cmFsLXBsYWluZGF0ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hNDFhNmZkYjhkZjczMDBjMTJkYmVkZjE3MjA3YzFlZWQyNGZjNGZiCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW5kYXRlLmpzCkBAIC0w
LDAgKzEsMTYyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlVGVtcG9yYWw9MSIpCisKK2Z1
bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBl
eHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBi
dXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
clR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAg
IGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0g
dW5kZWZpbmVkKQorICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKK30K
Kworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5EYXRlIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUp
Oworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5EYXRlLmxlbmd0aCwgMCk7CitzaG91bGRCZShPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlBsYWluRGF0ZSwgJ3Byb3RvdHlw
ZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFRlbXBvcmFsLlBsYWluRGF0ZSwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNl
KTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxh
aW5EYXRlLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShUZW1w
b3JhbC5QbGFpbkRhdGUucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBUZW1wb3JhbC5QbGFpbkRhdGUp
OworCit7CisgICAgbGV0IGRhdGUgPSBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDEsIDIsIDMpOwor
ICAgIHNob3VsZEJlKFN0cmluZyhkYXRlKSwgYDAwMDEtMDItMDNgKTsKKyAgICBzaG91bGRCZShk
YXRlLnllYXIsIDEpOworICAgIHNob3VsZEJlKGRhdGUubW9udGgsIDIpOworICAgIHNob3VsZEJl
KGRhdGUuZGF5LCAzKTsKK30KKworeworICAgIGxldCBkYXRlID0gbmV3IFRlbXBvcmFsLlBsYWlu
RGF0ZSgyMDA3LCAxLCA5KTsKKyAgICBzaG91bGRCZShTdHJpbmcoZGF0ZSksIGAyMDA3LTAxLTA5
YCk7CisgICAgc2hvdWxkQmUoZGF0ZS55ZWFyLCAyMDA3KTsKKyAgICBzaG91bGRCZShkYXRlLm1v
bnRoLCAxKTsKKyAgICBzaG91bGRCZShkYXRlLmRheSwgOSk7Cit9CisKKworc2hvdWxkQmUoU3Ry
aW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5JykpLCBgMjAwNy0wMS0wOWAp
Oworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAz
OjI0OjMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWlu
RGF0ZS5mcm9tKCcyMDA3LTAxLTA5dDAzOjI0OjMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxk
QmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwJykp
LCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9t
KCcyMDA3LTAxLTA5VDAzOjI0OjMwWicpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCsyMDoyMDo1OScp
KSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJv
bSgnMjAwNy0wMS0wOVQwMzoyNDozMC0yMDoyMDo1OScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMFx1
MjIxMjIwOjIwOjU5JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFs
LlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwJykpLCBgMjAwNy0wMS0wOWAp
Oworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAz
OjI0OjMwKzEwMjAnKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwu
UGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMTAyMDMwJykpLCBgMjAwNy0wMS0w
OWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5
VDAzOjI0OjMwKzEwOjIwOjMwLjA1JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5n
KFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwOjIwOjMwLjEy
MzQ1Njc4OScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFp
bkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykp
LCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9t
KCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwW0V1cm9wZS9CcnVzc2Vsc10nKSksIGAyMDA3LTAx
LTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEt
MDlUMDM6MjQ6MzArMDE6MDBbVU5LTk9XTl0nKSksIGAyMDA3LTAxLTA5YCk7IC8vIFRpbWVab25l
IGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWlu
RGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwWy5oZXldJykpLCBgMjAwNy0wMS0w
OWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtfXScp
KSwgYDIwMDctMDEtMDlgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitz
aG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6
MzArMDE6MDBbXy1dJykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQg
YmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAw
Ny0wMS0wOVQwMzoyNDozMCswMTowMFtfL19dJykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9u
ZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFp
bkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtfLS4vXy0uXScpKSwgYDIwMDct
MDEtMDlgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShT
dHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBb
Xy4uL18uLl0nKSksIGAyMDA3LTAxLTA5YCk7IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBp
Z25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAx
LTA5VDAzOjI0OjMwKzAxOjAwW18uL18uXScpKSwgYDIwMDctMDEtMDlgKTsgLy8gVGltZVpvbmUg
ZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5E
YXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbRXRjL0dNVCsyMF0nKSksIGAyMDA3
LTAxLTA5YCk7IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAw
W0V0Yy9HTVQtMjBdJykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQg
YmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAw
Ny0wMS0wOSAwMzoyNDozMCswMTowMFsrMDFdJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAw
WyswMTowMF0nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxh
aW5EYXRlLmZyb20oJzIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbKzAxOjAwOjAwXScpKSwgYDIw
MDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAw
Ny0wMS0wOSAwMzoyNDozMCswMTowMFsrMDE6MDA6MDAuMTIzXScpKSwgYDIwMDctMDEtMDlgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoy
NDozMCswMTowMFsrMDE6MDA6MDAuMTIzNDVdJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAw
WyswMTowMDowMC4xMjM0NTY3OF0nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmco
VGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbKzAxOjAw
OjAwLjEyMzQ1Njc4OV0nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbLTAxOjAwXScpKSwg
YDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgn
MjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFtcdTIyMTIwMTowMF0nKSksIGAyMDA3LTAxLTA5YCk7
Cit7CisgICAgbGV0IGRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQw
MzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykKKyAgICBzaG91bGRCZShkYXRlID09PSBU
ZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShkYXRlKSwgZmFsc2UpOworfQorCisKKy8vIEZJWE1FOiBm
cm9tKG9iamVjdCkgaXMgbm90ZSB5ZXQgaW1wbGVtZW50ZWQuCisvLyB7CisvLyAgICAgbGV0IGRh
dGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSh7CisvLyAgICAgICB5ZWFyOiAyMDA3LAorLy8g
ICAgICAgbW9udGg6IDEsCisvLyAgICAgICBkYXk6IDkKKy8vICAgICB9KTsKKy8vICAgICBzaG91
bGRCZShTdHJpbmcoZGF0ZSksIGAyMDA3LTAxLTA5YCk7CisvLyB9CitzaG91bGRUaHJvdygoKSA9
PiB7IFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKHsgeWVhcjogMjAwNywgbW9udGg6IDEsIGRheTog
OSB9KTsgfSwgUmFuZ2VFcnJvcik7CisKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5EYXRlKC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpbkRhdGUoKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUoMjAwNyk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIwMDcsIDEpOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDA3LCAx
MywgMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5EYXRlKDIwMDcsIDIsIDMwKTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluRGF0ZShJbmZpbml0eSwgMSwgMSk7IH0sIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKC1JbmZpbml0
eSwgMSwgMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5EYXRlKDIwMDcsIEluZmluaXR5LCAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUoMjAwNywgLUluZmluaXR5LCAxKTsg
fSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRh
dGUoMjAwNywgMSwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IHsgbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDA3LCAxLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVy
cm9yKTsKKworbGV0IGZhaWx1cmVzID0gWworICAgICIiLAorICAgICIyMzo1OTo2MS45OTk5OTk5
OTkiLAorICAgICIxOTk1LTEyMDdUMDM6MjQ6MzAiLAorICAgICIxOTk1MTItMDdUMDM6MjQ6MzAi
LAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzIwOjIwOjYwIiwKKyAgICAiMjAwNy0wMS0wOVQw
MzoyNDozMCsyMDoyMDUwIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCs6IiwKKyAgICAiMjAw
Ny0wMS0wOVQwMzoyNDozMCsyOjUwIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFsv
XSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLy8vXSIsCisgICAgIjIwMDctMDEt
MDlUMDM6MjQ6MzArMDE6MDBbSGV5L0hlbGxvIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCsw
MTowMFtdIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtIZXkvXSIsCisgICAgIjIw
MDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLi5dIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCsw
MTowMFsuXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLi8uXSIsCisgICAgIjIw
MDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLi4vLi5dIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDoz
MCswMTowMFstSGV5L0hlbGxvXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLV0i
LAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwWy0vX10iLAorICAgICIyMDA3LTAxLTA5
VDAzOjI0OjMwKzAxOjAwW18vLV0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0Nv
Y29hQ2FwcHVjY2lub01hdGNoYV0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0V0
Yy9HTVQrNTBdIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtFdGMvR01UKzBdIiwK
KyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtFdGMvR01UMF0iLAorICAgICIyMDA3LTAx
LTA5VDAzOjI0OjMwKzEwOjIwOjMwLjAxMjM0NTY3ODkiLAorICAgICIyMDA3LTAxLTA5IDAzOjI0
OjMwKzAxOjAwW0V0Yy9HTVRcdTIyMTIwMV0iLAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAx
OjAwWyswMjowMDowMC4wMTIzNDU2Nzg5XSIsCisgICAgIjIwMDctMDEtMDkgMDM6MjQ6MzArMDE6
MDBbMDI6MDA6MDAuMTIzNDU2Nzg5XSIsCisgICAgIjIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBb
MDI6MDAwMC4xMjM0NTY3ODldIiwKKyAgICAiMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFswMjAw
OjAwLjEyMzQ1Njc4OV0iLAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWzAyOjAwOjYw
LjEyMzQ1Njc4OV0iLAorXTsKKworZm9yIChsZXQgdGV4dCBvZiBmYWlsdXJlcykgeworICAgIHNo
b3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgcHJpbnQoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0
ZS5mcm9tKHRleHQpKSk7CisgICAgfSwgUmFuZ2VFcnJvcik7Cit9CisKKy8vIEZJWE1FOiBUaGlz
IHJlbGllcyBvbiBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShvYmplY3QpLgorLy8geworLy8gICAg
IGxldCBvbmUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMTAwMS0wMS0wMScpOworLy8gICAg
IGxldCB0d28gPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMTAwMi0wMS0wMScpOworLy8gICAg
IGxldCB0aHJlZSA9IFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcxMDAwLTAyLTAyJyk7CisvLyAg
ICAgbGV0IGZvdXIgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMTAwMS0wMS0wMicpOworLy8g
ICAgIGxldCBmaXZlID0gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzEwMDEtMDItMDEnKTsKKy8v
ICAgICBsZXQgc29ydGVkID0gW29uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZV0uc29ydChUZW1w
b3JhbC5QbGFpbkRhdGUuY29tcGFyZSk7CisvLyAgICAgc2hvdWxkQmUoc29ydGVkLmpvaW4oJyAn
KSwgYDEwMDAtMDItMDIgMTAwMS0wMS0wMSAxMDAxLTAxLTAyIDEwMDEtMDItMDEgMTAwMi0wMS0w
MWApOworLy8gfQo=
</data>
<flag name="commit-queue"
          id="478684"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451837</attachid>
            <date>2022-02-13 12:30:40 -0800</date>
            <delta_ts>2022-02-15 09:44:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230033-20220214073039.patch</filename>
            <type>text/plain</type>
            <size>65591</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZmZmM2ZiZmMzZDRmNGMwY2UzMzU4ZDZlYTZjZjRiZWRiYjljMDMwLi5hZDEyYTdmYmI0YTc5YTNh
NWU5NWZmZjJmYzg1ZmFlMDZjY2FkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMi0wMi0xMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluRGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDMzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84MzEyNzc0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNvbnN0cnVjdG9yLCBgZnJvbWAgYW5kIGBjb21w
YXJlYCBmb3IgVGVtcG9yYWwuUGxhaW5EYXRlLgorICAgICAgICBUaGlzIGlzIG9ubHkgYSBwYXJ0
aWFsIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIGBmcm9tYCBkb2Vzbid0CisgICAgICAgIHN1cHBv
cnQgb2JqZWN0IHBhcmFtZXRlcnMsIGFuZCB0aGUgYGNvbXBhcmVgIGZ1bmN0aW9uIGNyZWF0ZXMg
c29tZQorICAgICAgICBpbnRlcm5hbGx5LiBIb3dldmVyLCBpdCBpcyBhIHN0YXJ0IQorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDogQWRkIG5ldyBmaWxlcy4KKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOiBDcmVhdGUgdGhlIHRlbXBvcmFsUGxhaW5EYXRlU3BhY2UuCisgICAgICAgICogaGVh
cC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oOgorCisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9u
dGgpOiBNYWtlIHRoaXMgcHVibGljbHkgdmlzaWJsZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
dGVtcG9yYWxEYXRlVG9TdHJpbmcpOiBOZXcgbWV0aG9kIGZvciBwcmludGluZyBhIGRhdGUuCisg
ICAgICAgICogcnVudGltZS9JU084NjAxLmg6CisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDogTWFrZSB0aGUgbV9wbGFpbkRhdGVTdHJ1Y3R1cmUgb2JqZWN0LgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGxhaW5EYXRlU3RydWN0
dXJlKToKKworICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOiBBZGQgdGhlIFBs
YWluRGF0ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEpTQzo6Y3JlYXRlUGxhaW5EYXRlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuaDoKKworICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpbkRhdGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6VGVt
cG9yYWxQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6dmlzaXRDaGlsZHJl
bkltcGwpOgorICAgICAgICAoSlNDOjp0b1BsYWluRGF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5EYXRlOjp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpbkRhdGU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRh
dGU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6Y29tcGFyZSk6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAg
ICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oOiBBZGRlZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDogRGVmaW5lIHRoZSB0ZW1wb3JhbFBsYWluRGF0ZVNwYWNlLgorCiAy
MDIyLTAyLTEyICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0NNYWtlXSBSRUdSRVNTSU9OKHIyODk2MTEpOiBEZWJ1ZyBidWlsZHMgZmFpbCBs
aW5raW5nIGJpbmFyaWVzIHdpdGggbGQubGxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggMjc3N2JlOTlhZDFiN2MwOWQyYjZjOTUwMjI3ZGFjM2UxNzNiY2JkYy4uN2ZmZjYz
NDQyNmIwYzA4MzZmNjA0MWI2Y2UzNDRiNmUwNDJkY2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTE3LDYgKzExNyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpF
Q1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CmluZGV4IDU1NDU4MTZmMDhiN2UyNzYzODA0MTZjYzVkNTFkMzI0MzIzMWFjOTcu
LmI5MjFiMmY4Mjg2NDMwMWEwYzViZjcxNTQ2NGQ4MWI1ZmFhZjA4YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBA
IC0xOTEsNiArMTkxLDggQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDVkNjkyNzA5
NDM0MWQ5ZTc0Nzk0MmU5ZjUyZWMxZmY2MTllN2I4MDQuLjhmODJjMzNlNWQ5OTRiOTNmOGFhMGM2
ZjIwM2Y4YmUyODYyYzkxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTc2LDYgKzc2LDggQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yLmwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Rl
bXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxh
aW5EYXRlUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdmZGE3NmEzY2Fh
YzM3YWVkOGU5ZjY2OGIyNWVjMTBhY2U0YzQyM2IuLjBmNDhhZDU2YzlmYzZkNWE4MWY0YmVjOTRl
NGQ4ZTk4MjVjZTFjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yMDcsNiArMjA3LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAg
IFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5sdXQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQwNDgwOTE4Y2IwNDdkNDQ5ODNlZGQ1
ZTZkN2EwMWJlNTNlZWVmOGMuLmI1M2NjODFhOTY4OThiMzQwY2E0MGZkZDE5ZmNmZjg4NzZjNmE2
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTAsNiArODUwLDkgQEAKIAkJ
MkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMkVERkExOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsK
IAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlB
NjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTMxNzcwQzU1MjdCOTRDRTYwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWlu
RGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTc3MEM0RjI3Qjk0Q0U0MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvci5oICovOyB9OworCQkzMTc3MEM1NzI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQ
bGFpbkRhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNzcwQzUxMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZVBy
b3RvdHlwZS5oICovOyB9OworCQkzMTc3MEM1ODI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQ
bGFpbkRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxNzcwQzUyMjdCOTRDRTUwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZS5oICovOyB9Owog
CQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAv
KiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIy
NTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkzM0E5MjBC
RDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVC
QUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzcyMCw2ICszNzIzLDEyIEBACiAJCTJBREZBMjYy
MThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNzcwQzRGMjdCOTRDRTQwMDMw
ODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NzBDNTAyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFs
UGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxNzcwQzUxMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTc3MEM1
MjI3Qjk0Q0U1MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE3NzBDNTMyN0I5NENFNTAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5E
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NzBDNTQyN0I5NENFNTAw
MzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNj
cmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29j
aWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2
ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQz
NjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJl
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVz
Lmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5MzIsNyArNTk0MSw2IEBACiAJCQkJODYwM0NF
RjAxNEM3NTNFRjAwQUU1OUUzIC8qIHRvb2xzICovLAogCQkJCTdCOThEMTMzMUI2MENEMUUwMDIz
QjFBNCAvKiB3YXNtICovLAogCQkJCTg2RUFDNDhDMEY5M0U4QjkwMDhFQzk0OCAvKiB5YXJyICov
LAotCQkJCTUzMzY5OUFGMjdBMzA2RjYwMEM5NTYxRCAvKiBSZWNvdmVyZWQgUmVmZXJlbmNlcyAq
LywKIAkJCSk7CiAJCQluYW1lID0gSmF2YVNjcmlwdENvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNzMyNyw5ICs3MzM1LDYgQEAKIAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0
IC8qIHdhc20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTM3QUFDMDkxMjc5RjEyNDIwMEQ2NDg0MiAvKiBXYXNtQnJhbmNoSGludHMuaCAqLywKLQkJCQkz
N0FBQzA5MDI3OUYxMjQxMDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRzU2VjdGlvblBhcnNlci5j
cHAgKi8sCi0JCQkJMzdBQUMwOTIyNzlGMTI0MjAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1Nl
Y3Rpb25QYXJzZXIuaCAqLywKIAkJCQlBRDJGQ0I4QTFEQjU4NDAwMDBCM0U3MzYgLyoganMgKi8s
CiAJCQkJNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAg
Ki8sCiAJCQkJNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5o
ICovLApAQCAtNzMzOSw2ICs3MzQ0LDkgQEAKIAkJCQk1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQg
LyogV2FzbUJCUVBsYW4uaCAqLywKIAkJCQlBRDRCMURGNzFERjI0NEQ3MDA3MUFFMzIgLyogV2Fz
bUJpbmRpbmcuY3BwICovLAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmlu
ZGluZy5oICovLAorCQkJCTM3QUFDMDkxMjc5RjEyNDIwMEQ2NDg0MiAvKiBXYXNtQnJhbmNoSGlu
dHMuaCAqLywKKwkJCQkzN0FBQzA5MDI3OUYxMjQxMDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRz
U2VjdGlvblBhcnNlci5jcHAgKi8sCisJCQkJMzdBQUMwOTIyNzlGMTI0MjAwRDY0ODQyIC8qIFdh
c21CcmFuY2hIaW50c1NlY3Rpb25QYXJzZXIuaCAqLywKIAkJCQk1MjVDMERENzFFOTM1ODQ3MDAy
MTg0Q0QgLyogV2FzbUNhbGxlZS5jcHAgKi8sCiAJCQkJNTI1QzBERDgxRTkzNTg0NzAwMjE4NENE
IC8qIFdhc21DYWxsZWUuaCAqLywKIAkJCQk1MjZBQzRCNDFFOTc3QzVEMDAzNTAwRTEgLyogV2Fz
bUNhbGxlZUdyb3VwLmNwcCAqLywKQEAgLTgyNjAsNiArODI2OCwxMiBAQAogCQkJCUY2RjE1MDE4
MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0Qz
M0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRjZGMTUwMUEyNjkzRDMz
RTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmggKi8sCisJCQkJMzE3NzBDNTMyN0I5NENFNTAw
MzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlLmNwcCAqLywKKwkJCQkzMTc3MEM1MjI3Qjk0Q0U1
MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCAqLywKKwkJCQkzMTc3MEM1MDI3Qjk0Q0U0
MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJMzE3
NzBDNEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAq
LywKKwkJCQkzMTc3MEM1NDI3Qjk0Q0U1MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVQcm90
b3R5cGUuY3BwICovLAorCQkJCTMxNzcwQzUxMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCUUzODZGRDc3MjZFODY3QjcwMEU0QzI4QiAvKiBU
ZW1wb3JhbFBsYWluVGltZS5jcHAgKi8sCiAJCQkJRTM4NkZENzgyNkU4NjdCODAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lLmggKi8sCiAJCQkJRTM4NkZENzQyNkU4NjdCNzAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwICovLApAQCAtMTA5NzksNyArMTA5OTMs
NiBAQAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyog
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0FBQzA5NDI3
OUYxQzA1MDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLApAQCAtMTEwOTcsNiArMTExMTAsOSBAQAogCQkJCUY2RDY3RDQ0MjZGOTAy
RTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2RDY3RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVt
cG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTc3MEM1ODI3Qjk0Q0U2MDAz
MDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNzcwQzU1
MjdCOTRDRTYwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMTc3MEM1NzI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRh
dGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4
QiAvKiBUZW1wb3JhbFBsYWluVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0IyNkU4
NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzODZGRDdGMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTEwOSw3ICsxMTEyNSw2IEBACiAJCQkJRkUz
NDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzdBQUMwOTMyNzlGMUJGQzAwRDY0ODQyIC8qIFdhc21CcmFuY2hI
aW50c1NlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4Mzcw
MEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTU5ODk4
MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyRDRERTkxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTE2Niw2ICsxMTE4MSw4IEBACiAJCQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2
IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NBNzMwQTFFQTUz
M0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUFENEIxREZB
MURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzdB
QUMwOTQyNzlGMUMwNTAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMzdBQUMwOTMyNzlGMUJGQzAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1NlY3Rpb25Q
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBX
YXNtQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEg
LyogV2FzbUNhbGxlZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0ZCODUzQTIyRjM2NjdC
MDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzYTk1YzU4YjNkOTliOWJjZTgzMmMwMTc1ODJkZjk1ODRk
OGVjYThhLi44NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2EzZTUzOWM2ZmI3YmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIwLDYgKzEwMjAsOSBAQCBydW50aW1lL1RlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNw
cAogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDAxZTFjOTMyYmYzMzcxMjAzNTVi
OGEwZjAwNmRmY2E3NDdiMTEyNWYuLmE3YzkxYmE0NzkwZDc3MWZiMmFhNGY0YzljOGFkZDE1Mzll
OTIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zMjM3LDYgKzMyMzcs
NyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVt
cG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24p
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluRGF0ZVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBUZW1wb3JhbFBsYWluRGF0ZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBU
ZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpv
bmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKaW5kZXggYWRjZmFiYjNiZDJmMjY3NTAyMzk2NDU3OTc3YmI3ZDE3YWZlYTMyZS4uNWRh
NjFmNTA0NWE2YzgzODIwNTI2N2JhNWIxOGUyOGYxZmRlNjZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaApAQCAtOTQzLDYgKzk0Myw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpbkRhdGVT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxh
aW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwU3Vic3BhY2VUeXBlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1
YnNwYWNlVHlwZXMuaAppbmRleCA2MGFjZWJlODlmYmFiYjNkNWExNWI0ZDhjZTUzOTA5NTJlNjdk
N2VhLi4wYjQ0ZmUwMWU5NDVkMjI0ZDU3MTJhODA2NmQxMTIwODkxY2I1NGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgKQEAgLTEwOSw2ICsx
MDksNyBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpbkRhdGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IGUz
MjA4MzQ5NjI1NWQxYjg2MjcxNTFhYTMyMTE4YTMzZWZkY2FiYjAuLmJkYzNmYTc2M2M1YmY4YmZk
NzhjMjk4ZDIyNzg3Y2EyODZkMmZhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lTTzg2MDEuY3BwCkBAIC02ODIsNyArNjgyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2UK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
aXNvZGF5c2lubW9udGgKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGF5c0luTW9udGgoaW50MzJf
dCB5ZWFyLCB1bnNpZ25lZCBtb250aCkKK3Vuc2lnbmVkIGRheXNJbk1vbnRoKGludDMyX3QgeWVh
ciwgdW5zaWduZWQgbW9udGgpCiB7CiAgICAgc3dpdGNoIChtb250aCkgewogICAgIGNhc2UgMToK
QEAgLTk4Nyw2ICs5ODcsMTEgQEAgU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGlt
ZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4KICAgICByZXR1cm4g
bWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAy
LCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQo
KSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9u
KTsKIH0KIAorU3RyaW5nIHRlbXBvcmFsRGF0ZVRvU3RyaW5nKFBsYWluRGF0ZSBwbGFpbkRhdGUp
Cit7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgNCwgcGxhaW5EYXRlLnllYXIoKSks
ICctJywgcGFkKCcwJywgMiwgcGxhaW5EYXRlLm1vbnRoKCkpLCAnLScsIHBhZCgnMCcsIDIsIHBs
YWluRGF0ZS5kYXkoKSkpOworfQorCiAvLyBJc1ZhbGlkRHVyYXRpb24gKCB5ZWFycywgbW9udGhz
LCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWlj
cm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KIGJvb2wgaXNWYWxpZER1cmF0aW9u
KGNvbnN0IER1cmF0aW9uJiBkdXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuaAppbmRleCAxODY1ZDMzZjk2MjAyNjhiNTUzMTQxZTFjZDU5ZWIzZDI1MzYzNmExLi4y
NjUwZTljMDFhNGNiZGJkMzEwZjkxZjIyZjFhOTFkN2JmN2U2YzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0yODQsNiArMjg0LDggQEAgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBw
YXJzZVRpbWUoU3QKIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0
aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZURh
dGVUaW1lKFN0cmluZ1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGlu
dDY0X3QpOwogU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBs
ZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOworU3RyaW5nIHRlbXBvcmFsRGF0ZVRv
U3RyaW5nKFBsYWluRGF0ZSk7Cit1bnNpZ25lZCBkYXlzSW5Nb250aChpbnQzMl90IHllYXIsIHVu
c2lnbmVkIG1vbnRoKTsKIAogYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IGE5MDc2Nzk4OGViYzZjNzc5Y2ZmMzhjZjc2MzM0ZGUzYzhjYmU3MGUuLmQ3OTBkZTZl
MTg4ZWQ2YzFmZTgxZWZkNzQwNzI0N2ZjZDI0NTc5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQAog
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpbkRhdGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCkBAIC0xMjY5LDYg
KzEyNzEsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0
LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIGluc3RhbnRQcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisgICAgICAgIG1fcGxh
aW5EYXRlU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAg
ICAgYXV0byogcGxhaW5EYXRlUHJvdG90eXBlID0gVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6
OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxQbGFp
bkRhdGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHBsYWluRGF0ZVBy
b3RvdHlwZSkpOworICAgICAgICAgICAgfSk7CisKICAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1
cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVy
ZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDNhZGZhMzhlOGEzMjQ5YTQ1OGJjYjE3NDVi
MTgyNjUzZGY1YzhiNzUuLmQ2ZGE0OTc0YzY0Y2UxNTZhYzM3NzNmMGE4ODdjZGRmMWQ1NzM2NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApA
QCAtMzM4LDYgKzMzOCw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKICAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50U3RydWN0dXJlOworICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluRGF0ZVN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbGFp
blRpbWVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmU+IG1fdGltZVpvbmVTdHJ1Y3R1cmU7CiAKQEAgLTkwOCw2ICs5MDksNyBAQCBwdWJsaWM6CiAg
ICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBp
bnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4gbV9pbnN0YW50U3RydWN0dXJlLmdldCh0aGlzKTsg
fQorICAgIFN0cnVjdHVyZSogcGxhaW5EYXRlU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpbkRh
dGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBwbGFpblRpbWVTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1
Y3R1cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1lWm9uZVN0cnVjdHVyZS5n
ZXQodGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwCmluZGV4IGFhOTJlOTYzYWNkOGJiZDc0M2FiM2MzZjZhZmRjMWI5YzdlYjYw
MzYuLjNjZDJmYTM3MzNiYTcwMGZiNmFlNzJkYjA5OTIwNGUxOTM4N2JhMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAgLTM1LDYg
KzM1LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsTm93Lmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlRl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgiCkBAIC03NSw2ICs3NywxMyBA
QCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVj
dCogb2JqZWN0KQogICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KHZtLCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1w
b3JhbEluc3RhbnRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3RhbnRTdHJ1Y3R1cmUoKS0+
c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxh
aW5EYXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBv
cmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVj
dCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVj
dCh2bSk7CisgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3I6OmNyZWF0ZSh2
bSwgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1w
b3JhbFBsYWluRGF0ZVByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cGxhaW5EYXRlU3RydWN0dXJl
KCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0
ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBU
ZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihv
YmplY3QpOwpAQCAtMTAxLDYgKzExMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICBEdXJhdGlvbiAg
ICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2Fs
bGJhY2sKICAgSW5zdGFudCAgICAgICAgY3JlYXRlSW5zdGFudENvbnN0cnVjdG9yICAgICAgICBE
b250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVj
dCAgICAgICAgICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBQbGFpbkRhdGUg
ICAgICBjcmVhdGVQbGFpbkRhdGVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2Fs
bGJhY2sKICAgUGxhaW5UaW1lICAgICAgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IgICAgICBE
b250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFRpbWVab25lICAgICAgIGNyZWF0ZVRpbWVab25l
Q29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggOGNkMzMz
NmFhZWFkYzc2M2I0ZWNjMjgyNzUzY2UxZGFhNzMyZmM2NC4uNzVkMjAzMjBiYmQzNDY3ZjA0Nzll
Y2QwNGRlNzU1NGNkMTAzZDNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yNyw2ICsyNywxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorI2RlZmluZSBKU0NfVEVNUE9SQUxfUExBSU5fREFURV9VTklUUyhtYWNybykgXAorICAgIG1h
Y3JvKHllYXIsIFllYXIpIFwKKyAgICBtYWNybyhtb250aCwgTW9udGgpIFwKKyAgICBtYWNybyhk
YXksIERheSkgXAorCisKICNkZWZpbmUgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMobWFj
cm8pIFwKICAgICBtYWNybyhob3VyLCBIb3VyKSBcCiAgICAgbWFjcm8obWludXRlLCBNaW51dGUp
IFwKQEAgLTUxLDYgKzU3LDcgQEAgZW51bSBjbGFzcyBUZW1wb3JhbFVuaXQgOiB1aW50OF90IHsK
IH07CiAjZGVmaW5lIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyhuYW1lLCBjYXBpdGFsaXplZE5h
bWUpICsgMQogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsVW5pdHMg
PSAwIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMpOworc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsUGxhaW5EYXRlVW5pdHMgPSAwIEpT
Q19URU1QT1JBTF9QTEFJTl9EQVRFX1VOSVRTKEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyk7CiBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyA9
IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRT
KTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3
OGY5NGJmYjAxMTUyN2E2NmFmMWI4NWQ5NmQzZTRjZTZlYjQ4M2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZS5jcHAKQEAg
LTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUu
aCIKKworI2luY2x1ZGUgIkFic3RyYWN0U2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2Jq
ZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMYXp5UHJv
cGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUg
IlZNVHJhcHNJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworbmFtZXNwYWNlIFRlbXBvcmFs
UGxhaW5EYXRlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKK30KKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5EYXRlOjpzX2luZm8gPSB7ICJP
YmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFRlbXBvcmFsUGxhaW5EYXRlKSB9OworCitUZW1wb3JhbFBsYWluRGF0ZSogVGVtcG9yYWxQ
bGFpbkRhdGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpQ
bGFpbkRhdGUmJiBwbGFpbkRhdGUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpbkRhdGU+KHZtKSkgVGVtcG9yYWxQbGFpbkRhdGUo
dm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpbkRhdGUpKTsKKyAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFs
UGxhaW5EYXRlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5EYXRlOjpUZW1wb3JhbFBs
YWluRGF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpQbGFpbkRhdGUm
JiBwbGFpbkRhdGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3BsYWluRGF0
ZShXVEZNb3ZlKHBsYWluRGF0ZSkpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cisg
ICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBtX2NhbGVuZGFyLmluaXRMYXRl
cigKKyAgICAgICAgW10gKGNvbnN0IGF1dG8mIGluaXQpIHsKKyAgICAgICAgICAgIFZNJiB2bSA9
IGluaXQudm07CisgICAgICAgICAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0Nhc3Q8VGVtcG9yYWxQ
bGFpbkRhdGUqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IHBsYWluRGF0ZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgIGF1dG8qIGNhbGVuZGFy
ID0gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3Ry
dWN0dXJlKCksIGlzbzg2MDFDYWxlbmRhcklEKCkpOworICAgICAgICAgICAgaW5pdC5zZXQoY2Fs
ZW5kYXIpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3Zv
aWQgVGVtcG9yYWxQbGFpbkRhdGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlz
aXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3Ip
OworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KGNl
bGwpOworICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXIudmlzaXQodmlzaXRvcik7Cit9CisKK0RF
RklORV9WSVNJVF9DSElMRFJFTihUZW1wb3JhbFBsYWluRGF0ZSk7CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWlzdmFsaWRpc29kYXRlCitzdGF0
aWMgSVNPODYwMTo6UGxhaW5EYXRlIHRvUGxhaW5EYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGRvdWJsZSB5ZWFyID0gZHVyYXRpb24ueWVhcnMoKTsKKyAgICBkb3VibGUgbW9u
dGggPSBkdXJhdGlvbi5tb250aHMoKTsKKyAgICBkb3VibGUgZGF5ID0gZHVyYXRpb24uZGF5cygp
OworICAgIGlmICghKG1vbnRoID49IDEgJiYgbW9udGggPD0gMTIpKSB7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibW9udGggaXMgb3V0IG9mIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgZG91YmxlIGRheXNJbk1vbnRoID0g
SVNPODYwMTo6ZGF5c0luTW9udGgoc3RhdGljX2Nhc3Q8aW50MzJfdD4oeWVhciksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtb250aCkpOworICAgIGlmICghKGRheSA+PSAxICYmIGRheSA8PSBkYXlz
SW5Nb250aCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJkYXkgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cisg
ICAgcmV0dXJuIElTTzg2MDE6OlBsYWluRGF0ZSB7CisgICAgICAgIHN0YXRpY19jYXN0PGludDMy
X3Q+KHllYXIpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obW9udGgpLAorICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF5KQorICAgIH07Cit9CisKKy8vIENyZWF0ZVRlbXBv
cmFsUGxhaW5EYXRlICggeWVhcnMsIG1vbnRocywgZGF5cyApCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1wbGFpbmRhdGUtY29uc3RydWN0b3IKK1Rl
bXBvcmFsUGxhaW5EYXRlKiBUZW1wb3JhbFBsYWluRGF0ZTo6dHJ5Q3JlYXRlSWZWYWxpZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6
RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBw
bGFpbkRhdGUgPSB0b1BsYWluRGF0ZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIFRlbXBv
cmFsUGxhaW5EYXRlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpbkRhdGUpKTsK
K30KKworU3RyaW5nIFRlbXBvcmFsUGxhaW5EYXRlOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChn
bG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7
CisKKyAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxEYXRlVG9TdHJpbmcobV9wbGFpbkRhdGUp
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC10b3RlbXBvcmFsZGF0ZQorVGVtcG9yYWxQbGFpbkRhdGUqIFRlbXBvcmFsUGxhaW5EYXRlOjpm
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6
Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92ZXJmbG93VmFsdWUpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIFVOVVNFRF9QQVJBTShvdmVyZmxvd1ZhbHVlKTsKKworICAgIGlmIChp
dGVtVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgInVuaW1wbGVtZW50ZWQ6IGZyb20gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIHN0cmluZyA9IGl0ZW1WYWx1ZS50b1dURlN0cmlu
ZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBhdXRvIGRhdGVUaW1lID0gSVNPODYwMTo6cGFyc2VEYXRlVGltZShzdHJpbmcpOworICAg
IGlmIChkYXRlVGltZSkgeworICAgICAgICBhdXRvIFtwbGFpbkRhdGUsIHBsYWluVGltZU9wdGlv
bmFsLCB0aW1lWm9uZU9wdGlvbmFsXSA9IGRhdGVUaW1lLnZhbHVlKCk7CisgICAgICAgIHJldHVy
biBUZW1wb3JhbFBsYWluRGF0ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluRGF0ZVN0
cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluRGF0ZSkpOworICAgIH0KKworICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBkYXRlIHN0cmluZyJfcyk7CisgICAg
cmV0dXJuIHsgfTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtY29tcGFyZXRlbXBvcmFsZGF0ZQoraW50MzJfdCBUZW1wb3JhbFBsYWluRGF0
ZTo6Y29tcGFyZShUZW1wb3JhbFBsYWluRGF0ZSogcGxhaW5EYXRlMSwgVGVtcG9yYWxQbGFpbkRh
dGUqIHBsYWluRGF0ZTIpCit7CisgICAgSVNPODYwMTo6UGxhaW5EYXRlIGQxID0gcGxhaW5EYXRl
MS0+cGxhaW5EYXRlKCk7CisgICAgSVNPODYwMTo6UGxhaW5EYXRlIGQyID0gcGxhaW5EYXRlMi0+
cGxhaW5EYXRlKCk7CisgICAgaWYgKGQxLnllYXIoKSA+IGQyLnllYXIoKSkKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgaWYgKGQxLnllYXIoKSA8IGQyLnllYXIoKSkKKyAgICAgICAgcmV0dXJuIC0x
OworICAgIGlmIChkMS5tb250aCgpID4gZDIubW9udGgoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgaWYgKGQxLm1vbnRoKCkgPCBkMi5tb250aCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAg
aWYgKGQxLmRheSgpID4gZDIuZGF5KCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChkMS5k
YXkoKSA8IGQyLmRheSgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5EYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUyNWVlYjE4MDZkOTNkMjYyZWE3Mjk4
Zjg2ZmIzZmFmYjc2ZWYyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkxhenlQcm9wZXJ0eS5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsQ2FsZW5kYXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFs
UGxhaW5EYXRlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Q2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBz
dWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4gdm0udGVtcG9yYWxQbGFp
bkRhdGVTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0
ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5EYXRlJiYpOworICAgIHN0
YXRpYyBUZW1wb3JhbFBsYWluRGF0ZSogdHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9uJiYpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpbkRhdGUqIGZyb20oSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+KTsKKyAg
ICBzdGF0aWMgaW50MzJfdCBjb21wYXJlKFRlbXBvcmFsUGxhaW5EYXRlKiwgVGVtcG9yYWxQbGFp
bkRhdGUqKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGNhbGVuZGFyKCkgeyByZXR1cm4gbV9j
YWxlbmRhci5nZXQodGhpcyk7IH0KKyAgICBJU084NjAxOjpQbGFpbkRhdGUgcGxhaW5EYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9wbGFpbkRhdGU7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX1RFTVBP
UkFMX1BMQUlOX0RBVEVfRklFTEQobmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWdu
ZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5EYXRlLm5hbWUoKTsgfQorICAgIEpTQ19U
RU1QT1JBTF9QTEFJTl9EQVRFX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fREFURV9G
SUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9EQVRFX0ZJRUxECisKKyAg
ICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0
OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSVNP
ODYwMTo6dGVtcG9yYWxEYXRlVG9TdHJpbmcobV9wbGFpbkRhdGUpOworICAgIH0KKworICAgIERF
Q0xBUkVfVklTSVRfQ0hJTERSRU47CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQbGFpbkRhdGUo
Vk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpbkRhdGUmJik7CisgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpQbGFpbkRhdGU+IHBhcnNlKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYwMTo6UGxhaW5E
YXRlIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisgICAgSVNPODYw
MTo6UGxhaW5EYXRlIG1fcGxhaW5EYXRlOworICAgIExhenlQcm9wZXJ0eTxUZW1wb3JhbFBsYWlu
RGF0ZSwgVGVtcG9yYWxDYWxlbmRhcj4gbV9jYWxlbmRhcjsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOWU2MGYxNTcxY2Ex
OTZhOWY3MDlmYTc2ZjBmYWU5M2I0YmYwZDNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAKQEAg
LTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsUGxhaW5EYXRlQ29u
c3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluRGF0ZUNvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbFBsYWluRGF0ZUNv
bnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFp
bkRhdGVDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluRGF0ZUNv
bnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvclRhYmxl
CisgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvckZ1bmNGcm9t
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1w
b3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvciogVGVtcG9y
YWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKiBwbGFpbkRhdGVQcm90b3R5cGUpCit7Cisg
ICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3Jh
bFBsYWluRGF0ZUNvbnN0cnVjdG9yPih2bSkpIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwbGFp
bkRhdGVQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJl
KiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxQbGFpbkRhdGUp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxQbGFp
bkRhdGUpOworCitUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluRGF0
ZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbFBsYWluRGF0ZSwgY29uc3RydWN0VGVtcG9yYWxQbGFp
bkRhdGUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSogcGxhaW5EYXRlUHJv
dG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGxhaW5EYXRlIl9z
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHBsYWluRGF0ZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OworICAgIHBsYWluRGF0ZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluRGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0
KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVS
RSh2bSwgcGxhaW5EYXRlU3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIElTTzg2MDE6
OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBhdXRvIGFyZ3VtZW50Q291bnQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKTsKKworICAgIGlmIChhcmd1bWVudENvdW50ID4gMCkgeworICAg
ICAgICBhdXRvIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b0ludGVn
ZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2
YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZSB5ZWFyIHByb3BlcnR5IG11c3QgYmUgZmluaXRl
Il9zKTsKKyAgICAgICAgZHVyYXRpb24uc2V0WWVhcnModmFsdWUpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIGlmIChhcmd1bWVudENvdW50
ID4gMSkgeworICAgICAgICBhdXRvIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgxKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmICghc3Rk
Ojppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZSBtb250aCBwcm9wZXJ0eSBt
dXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIGR1cmF0aW9uLnNldE1vbnRocyh2YWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPiAyKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KDIpLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRlIGRh
eSBwcm9wZXJ0eSBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIGR1cmF0aW9uLnNldERheXMo
dmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0K
KworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
UGxhaW5EYXRlOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZN
b3ZlKGR1cmF0aW9uKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1w
b3JhbFBsYWluRGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSop
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlBsYWluRGF0ZSIpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW5kYXRlLmZyb20KK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxPdmVyZmxvdyBvdmVyZmxvdyA9
IHRvVGVtcG9yYWxPdmVyZmxvdyhnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFs
UGxhaW5EYXRlPih2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxh
aW5EYXRlU3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZSo+KGl0ZW1WYWx1ZSkt
PnBsYWluRGF0ZSgpKSkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxQbGFpbkRhdGU6OmZyb20oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUs
IG92ZXJmbG93KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC5wbGFpbmRhdGUuY29tcGFyZQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogb25lID0gVGVtcG9yYWxQbGFpbkRhdGU6OmZyb20oZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvKiB0d28gPSBUZW1wb3JhbFBsYWlu
RGF0ZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHN0ZDo6bnVs
bG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoVGVtcG9yYWxQbGFpbkRhdGU6OmNvbXBhcmUob25l
LCB0d28pKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE5MjU3ZTEzZjI1ZTM3Njc4N2JkOTgyNDQ3Y2U1OWRjMzJjYmY4NjkKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBs
YWluRGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQ
bGFpbkRhdGVQcm90b3R5cGU7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3Ig
ZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFz
ZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJs
ZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0m
LCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSopOworICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NV
QlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IsIEludGVybmFsRnVu
Y3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jZDg4MzBiYmEyOTRlZTczZWQ4ODM0YjZlYjliODY0N2I2OTNhMDI4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRh
dGVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgi
CisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0
aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJv
dG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyWWVhcik7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
R2V0dGVyRGF5KTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUu
bHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFp
bkRhdGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLlBsYWluRGF0ZSIsICZCYXNlOjpz
X2luZm8sICZwbGFpbkRhdGVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBUZW1w
b3JhbFBsYWluRGF0ZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHBsYWluRGF0ZVByb3RvdHlwZVRh
YmxlCisgIHRvU3RyaW5nICAgICAgICAgdGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVGdW5jVG9T
dHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgeWVhciAgICAgICAgICAgICB0
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlclllYXIgICAgICAgICAgICAgRG9udEVudW18
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbW9udGggICAgICAgICAgICB0ZW1wb3JhbFBsYWlu
RGF0ZVByb3RvdHlwZUdldHRlck1vbnRoICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3Vz
dG9tQWNjZXNzb3IKKyAgZGF5ICAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlw
ZUdldHRlckRheSAgICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IK
K0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKiBUZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90eXBlID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU+KHZtKSkgVGVtcG9y
YWxQbGFpbkRhdGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gcHJvdG90eXBlOworfQor
CitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkK
K3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisK
K1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQor
eworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RB
R19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW5kYXRlLnByb3RvdHlwZS50b3N0cmluZworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY1RvU3Ry
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRlLnByb3RvdHlwZS50b1N0cmluZyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsYWluRGF0ZSJfcyk7CisKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcGxhaW5EYXRl
LT50b1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOworfQor
CitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGVHZXR0
ZXJZZWFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
RGF0ZS5wcm90b3R5cGUueWVhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluRGF0
ZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluRGF0ZS0+
eWVhcigpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZUdldHRlck1vbnRoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5E
YXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUubW9udGggY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpbkRhdGUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihwbGFpbkRhdGUtPm1vbnRoKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyRGF5LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUuZGF5IGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGxhaW5EYXRlLT5kYXkoKSkpOworfQorCisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpbkRhdGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY3OTM5YTY0NjBkMjBhZWMz
YTJiZmQ0ZjMzN2U3MTU0OThiYjUyMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlIGZp
bmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2Ug
PSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAg
c3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICBT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluRGF0ZVByb3Rv
dHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFjZSgpOworICAg
IH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSogY3JlYXRlKFZNJiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFS
RV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKFZNJiwg
U3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0
Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CmluZGV4IGQ1Mjg2NGU5YTA2MzhmNzFhYTA2ZWU0M2QwYjMyMzA1NDllNmIxMjUuLmEzZTc3YjM4
MWRiMTc4MmM2NDMyNzliMTdkYjJiMmU5ZTYwODhkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaApAQCAtNDQ5LDYgKzQ0OSw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQorICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpbkRhdGVTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5U
aW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3Jh
bFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1
aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGMzODFmNmJjYzRkYjBlODMwMTRjZDNkYjFkOWU5ODc3ZmY1OGQ3MDYu
LjgwMTRiMWIzYjM3YTFjZTBiMzI0MjdiZTQ5NGE0M2ZkYTEyOTE0NmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMjItMDItMTMgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpbkRhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDAzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0v
ODMxMjc3NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgU29tZSBiYXNpYyB0ZXN0cyBmb3IgUGxhaW5EYXRlLgorCisgICAgICAgICogc3RyZXNzL3Rl
bXBvcmFsLXBsYWluZGF0ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAg
IChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRCZS5TdHJpbmcuVGVtcG9yYWwuUGxhaW5E
YXRlLmZyb20pOgorICAgICAgICAobGV0LnRleHQub2YuZmFpbHVyZXMuc2hvdWxkVGhyb3cpOgor
CiAyMDIyLTAyLTA5ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29t
PgogCiAgICAgICAgIFNraXAgZmFpbGluZyBzaGFkb3cgcmVhbG1zIHRlc3RzIG9uIE1JUFMKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0ZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDFhNmZkYjhkZjczMDBj
MTJkYmVkZjE3MjA3YzFlZWQyNGZjNGZiCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvdGVtcG9yYWwtcGxhaW5kYXRlLmpzCkBAIC0wLDAgKzEsMTYyIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlVGVtcG9yYWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQg
ZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJy
b3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5u
YW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKQorICAgICAgICBzaG91bGRC
ZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKK30KKworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5E
YXRlIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5E
YXRlLmxlbmd0aCwgMCk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFRlbXBvcmFsLlBsYWluRGF0ZSwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91
bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlBsYWluRGF0ZSwg
J3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxhaW5EYXRlLCAncHJvdG90eXBlJykuY29uZmln
dXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShUZW1wb3JhbC5QbGFpbkRhdGUucHJvdG90eXBlLmNv
bnN0cnVjdG9yLCBUZW1wb3JhbC5QbGFpbkRhdGUpOworCit7CisgICAgbGV0IGRhdGUgPSBuZXcg
VGVtcG9yYWwuUGxhaW5EYXRlKDEsIDIsIDMpOworICAgIHNob3VsZEJlKFN0cmluZyhkYXRlKSwg
YDAwMDEtMDItMDNgKTsKKyAgICBzaG91bGRCZShkYXRlLnllYXIsIDEpOworICAgIHNob3VsZEJl
KGRhdGUubW9udGgsIDIpOworICAgIHNob3VsZEJlKGRhdGUuZGF5LCAzKTsKK30KKworeworICAg
IGxldCBkYXRlID0gbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDA3LCAxLCA5KTsKKyAgICBzaG91
bGRCZShTdHJpbmcoZGF0ZSksIGAyMDA3LTAxLTA5YCk7CisgICAgc2hvdWxkQmUoZGF0ZS55ZWFy
LCAyMDA3KTsKKyAgICBzaG91bGRCZShkYXRlLm1vbnRoLCAxKTsKKyAgICBzaG91bGRCZShkYXRl
LmRheSwgOSk7Cit9CisKKworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9t
KCcyMDA3LTAxLTA5JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFs
LlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwJykpLCBgMjAwNy0wMS0wOWApOwor
c2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5dDAzOjI0
OjMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0
ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwWicpKSwg
YDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgn
MjAwNy0wMS0wOVQwMzoyNDozMCsyMDoyMDo1OScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJl
KFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMC0yMDoy
MDo1OScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRh
dGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMFx1MjIxMjIwOjIwOjU5JykpLCBgMjAwNy0wMS0w
OWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5
VDAzOjI0OjMwKzEwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFs
LlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwMjAnKSksIGAyMDA3LTAxLTA5
YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlU
MDM6MjQ6MzArMTAyMDMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBv
cmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwOjIwOjMwLjA1JykpLCBg
MjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcy
MDA3LTAxLTA5VDAzOjI0OjMwKzEwOjIwOjMwLjEyMzQ1Njc4OScpKSwgYDIwMDctMDEtMDlgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoy
NDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAw
W0V1cm9wZS9CcnVzc2Vsc10nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVt
cG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbVU5LTk9XTl0n
KSksIGAyMDA3LTAxLTA5YCk7IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgor
c2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0
OjMwKzAxOjAwWy5oZXldJykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91
bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgn
MjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtfXScpKSwgYDIwMDctMDEtMDlgKTsgLy8gVGltZVpv
bmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxh
aW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbXy1dJykpLCBgMjAwNy0wMS0w
OWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtfL19d
JykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4K
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoy
NDozMCswMTowMFtfLS4vXy0uXScpKSwgYDIwMDctMDEtMDlgKTsgLy8gVGltZVpvbmUgZXJyb3Ig
c2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZy
b20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbXy4uL18uLl0nKSksIGAyMDA3LTAxLTA5YCk7
IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRl
bXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW18uL18uXScp
KSwgYDIwMDctMDEtMDlgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitz
aG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6
MzArMDE6MDBbRXRjL0dNVCsyMF0nKSksIGAyMDA3LTAxLTA5YCk7IC8vIFRpbWVab25lIGVycm9y
IHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5m
cm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQtMjBdJykpLCBgMjAwNy0wMS0w
OWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFsrMDFd
JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5m
cm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWyswMTowMF0nKSksIGAyMDA3LTAxLTA5YCk7
CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDkgMDM6
MjQ6MzArMDE6MDBbKzAxOjAwOjAwXScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFsrMDE6
MDA6MDAuMTIzXScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFsrMDE6MDA6MDAuMTIzNDVd
JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5m
cm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NTY3OF0nKSksIGAy
MDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIw
MDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbKzAxOjAwOjAwLjEyMzQ1Njc4OV0nKSksIGAyMDA3LTAx
LTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEt
MDkgMDM6MjQ6MzArMDE6MDBbLTAxOjAwXScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0
cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFtc
dTIyMTIwMTowMF0nKSksIGAyMDA3LTAxLTA5YCk7Cit7CisgICAgbGV0IGRhdGUgPSBUZW1wb3Jh
bC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3Nl
bHNdJykKKyAgICBzaG91bGRCZShkYXRlID09PSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShkYXRl
KSwgZmFsc2UpOworfQorCisKKy8vIEZJWE1FOiBmcm9tKG9iamVjdCkgaXMgbm90ZSB5ZXQgaW1w
bGVtZW50ZWQuCisvLyB7CisvLyAgICAgbGV0IGRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJv
bSh7CisvLyAgICAgICB5ZWFyOiAyMDA3LAorLy8gICAgICAgbW9udGg6IDEsCisvLyAgICAgICBk
YXk6IDkKKy8vICAgICB9KTsKKy8vICAgICBzaG91bGRCZShTdHJpbmcoZGF0ZSksIGAyMDA3LTAx
LTA5YCk7CisvLyB9CitzaG91bGRUaHJvdygoKSA9PiB7IFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9t
KHsgeWVhcjogMjAwNywgbW9udGg6IDEsIGRheTogOSB9KTsgfSwgUmFuZ2VFcnJvcik7CisKKwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKC0xKTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUoKTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUo
MjAwNyk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5EYXRlKDIwMDcsIDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsg
bmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDA3LCAxMywgMSk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIwMDcsIDIsIDMwKTsgfSwg
UmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluRGF0
ZShJbmZpbml0eSwgMSwgMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5EYXRlKC1JbmZpbml0eSwgMSwgMSk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIwMDcsIEluZmluaXR5
LCAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5Q
bGFpbkRhdGUoMjAwNywgLUluZmluaXR5LCAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUoMjAwNywgMSwgSW5maW5pdHkpOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgy
MDA3LCAxLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworbGV0IGZhaWx1cmVzID0gWwor
ICAgICIiLAorICAgICIyMzo1OTo2MS45OTk5OTk5OTkiLAorICAgICIxOTk1LTEyMDdUMDM6MjQ6
MzAiLAorICAgICIxOTk1MTItMDdUMDM6MjQ6MzAiLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMw
KzIwOjIwOjYwIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCsyMDoyMDUwIiwKKyAgICAiMjAw
Ny0wMS0wOVQwMzoyNDozMCs6IiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCsyOjUwIiwKKyAg
ICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFsvXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6
MzArMDE6MDBbLy8vXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbSGV5L0hlbGxv
IiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtdIiwKKyAgICAiMjAwNy0wMS0wOVQw
MzoyNDozMCswMTowMFtIZXkvXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLi5d
IiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFsuXSIsCisgICAgIjIwMDctMDEtMDlU
MDM6MjQ6MzArMDE6MDBbLi8uXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLi4v
Li5dIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFstSGV5L0hlbGxvXSIsCisgICAg
IjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLV0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMw
KzAxOjAwWy0vX10iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW18vLV0iLAorICAg
ICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0NvY29hQ2FwcHVjY2lub01hdGNoYV0iLAorICAg
ICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQrNTBdIiwKKyAgICAiMjAwNy0wMS0w
OVQwMzoyNDozMCswMTowMFtFdGMvR01UKzBdIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCsw
MTowMFtFdGMvR01UMF0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzEwOjIwOjMwLjAxMjM0
NTY3ODkiLAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVRcdTIyMTIwMV0i
LAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWyswMjowMDowMC4wMTIzNDU2Nzg5XSIs
CisgICAgIjIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbMDI6MDA6MDAuMTIzNDU2Nzg5XSIsCisg
ICAgIjIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbMDI6MDAwMC4xMjM0NTY3ODldIiwKKyAgICAi
MjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFswMjAwOjAwLjEyMzQ1Njc4OV0iLAorICAgICIyMDA3
LTAxLTA5IDAzOjI0OjMwKzAxOjAwWzAyOjAwOjYwLjEyMzQ1Njc4OV0iLAorXTsKKworZm9yIChs
ZXQgdGV4dCBvZiBmYWlsdXJlcykgeworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAg
cHJpbnQoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKHRleHQpKSk7CisgICAgfSwgUmFu
Z2VFcnJvcik7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHJlbGllcyBvbiBUZW1wb3JhbC5QbGFpbkRh
dGUuZnJvbShvYmplY3QpLgorLy8geworLy8gICAgIGxldCBvbmUgPSBUZW1wb3JhbC5QbGFpbkRh
dGUuZnJvbSgnMTAwMS0wMS0wMScpOworLy8gICAgIGxldCB0d28gPSBUZW1wb3JhbC5QbGFpbkRh
dGUuZnJvbSgnMTAwMi0wMS0wMScpOworLy8gICAgIGxldCB0aHJlZSA9IFRlbXBvcmFsLlBsYWlu
RGF0ZS5mcm9tKCcxMDAwLTAyLTAyJyk7CisvLyAgICAgbGV0IGZvdXIgPSBUZW1wb3JhbC5QbGFp
bkRhdGUuZnJvbSgnMTAwMS0wMS0wMicpOworLy8gICAgIGxldCBmaXZlID0gVGVtcG9yYWwuUGxh
aW5EYXRlLmZyb20oJzEwMDEtMDItMDEnKTsKKy8vICAgICBsZXQgc29ydGVkID0gW29uZSwgdHdv
LCB0aHJlZSwgZm91ciwgZml2ZV0uc29ydChUZW1wb3JhbC5QbGFpbkRhdGUuY29tcGFyZSk7Cisv
LyAgICAgc2hvdWxkQmUoc29ydGVkLmpvaW4oJyAnKSwgYDEwMDAtMDItMDIgMTAwMS0wMS0wMSAx
MDAxLTAxLTAyIDEwMDEtMDItMDEgMTAwMi0wMS0wMWApOworLy8gfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452041</attachid>
            <date>2022-02-15 09:44:20 -0800</date>
            <delta_ts>2022-02-18 20:17:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230033-20220216044418.patch</filename>
            <type>text/plain</type>
            <size>66005</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg5NzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZmZmM2ZiZmMzZDRmNGMwY2UzMzU4ZDZlYTZjZjRiZWRiYjljMDMwLi5hZDEyYTdmYmI0YTc5YTNh
NWU5NWZmZjJmYzg1ZmFlMDZjY2FkZDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MCBAQAorMjAyMi0wMi0xMyAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluRGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMDMzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84MzEyNzc0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIGNvbnN0cnVjdG9yLCBgZnJvbWAgYW5kIGBjb21w
YXJlYCBmb3IgVGVtcG9yYWwuUGxhaW5EYXRlLgorICAgICAgICBUaGlzIGlzIG9ubHkgYSBwYXJ0
aWFsIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIGBmcm9tYCBkb2Vzbid0CisgICAgICAgIHN1cHBv
cnQgb2JqZWN0IHBhcmFtZXRlcnMsIGFuZCB0aGUgYGNvbXBhcmVgIGZ1bmN0aW9uIGNyZWF0ZXMg
c29tZQorICAgICAgICBpbnRlcm5hbGx5LiBIb3dldmVyLCBpdCBpcyBhIHN0YXJ0IQorCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDogQWRkIG5ldyBmaWxlcy4KKyAg
ICAgICAgKiBEZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisKKyAgICAgICAgKiBoZWFwL0hl
YXAuY3BwOiBDcmVhdGUgdGhlIHRlbXBvcmFsUGxhaW5EYXRlU3BhY2UuCisgICAgICAgICogaGVh
cC9IZWFwLmg6CisgICAgICAgICogaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oOgorCisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9u
dGgpOiBNYWtlIHRoaXMgcHVibGljbHkgdmlzaWJsZS4KKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
dGVtcG9yYWxEYXRlVG9TdHJpbmcpOiBOZXcgbWV0aG9kIGZvciBwcmludGluZyBhIGRhdGUuCisg
ICAgICAgICogcnVudGltZS9JU084NjAxLmg6CisKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDogTWFrZSB0aGUgbV9wbGFpbkRhdGVTdHJ1Y3R1cmUgb2JqZWN0LgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGxhaW5EYXRlU3RydWN0
dXJlKToKKworICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwOiBBZGQgdGhlIFBs
YWluRGF0ZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKEpTQzo6Y3JlYXRlUGxhaW5EYXRlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuaDoKKworICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpbkRhdGU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRl
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6VGVt
cG9yYWxQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6dmlzaXRDaGlsZHJl
bkltcGwpOgorICAgICAgICAoSlNDOjp0b1BsYWluRGF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5EYXRlOjp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpbkRhdGU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRh
dGU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZTo6Y29tcGFyZSk6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDogQWRk
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAg
ICogcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oOiBBZGRlZC4KKworICAgICAg
ICAqIHJ1bnRpbWUvVk0uaDogRGVmaW5lIHRoZSB0ZW1wb3JhbFBsYWluRGF0ZVNwYWNlLgorCiAy
MDIyLTAyLTEyICBBZHJpYW4gUGVyZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0NNYWtlXSBSRUdSRVNTSU9OKHIyODk2MTEpOiBEZWJ1ZyBidWlsZHMgZmFpbCBs
aW5raW5nIGJpbmFyaWVzIHdpdGggbGQubGxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggMjc3N2JlOTlhZDFiN2MwOWQyYjZjOTUwMjI3ZGFjM2UxNzNiY2JkYy4uN2ZmZjYz
NDQyNmIwYzA4MzZmNjA0MWI2Y2UzNDRiNmUwNDJkY2QyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTE3LDYgKzExNyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpF
Q1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQu
eGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CmluZGV4IDU1NDU4MTZmMDhiN2UyNzYzODA0MTZjYzVkNTFkMzI0MzIzMWFjOTcu
LmI5MjFiMmY4Mjg2NDMwMWEwYzViZjcxNTQ2NGQ4MWI1ZmFhZjA4YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBA
IC0xOTEsNiArMTkxLDggQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbEluc3RhbnRD
b25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUv
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CmluZGV4IDVkNjkyNzA5
NDM0MWQ5ZTc0Nzk0MmU5ZjUyZWMxZmY2MTllN2I4MDQuLjhmODJjMzNlNWQ5OTRiOTNmOGFhMGM2
ZjIwM2Y4YmUyODYyYzkxMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJp
dmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTc2LDYgKzc2LDggQEAgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsSW5z
dGFudENvbnN0cnVjdG9yLmwKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Rl
bXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxh
aW5EYXRlUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDdmZGE3NmEzY2Fh
YzM3YWVkOGU5ZjY2OGIyNWVjMTBhY2U0YzQyM2IuLjBmNDhhZDU2YzlmYzZkNWE4MWY0YmVjOTRl
NGQ4ZTk4MjVjZTFjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCkBAIC0yMDcsNiArMjA3LDggQEAgT0JKRUNUX0xVVF9IRUFERVJTID0gXAogICAgIFRlbXBv
cmFsSW5zdGFudFByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAg
IFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9y
Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUubHV0LmggXAogICAgIFRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5sdXQuaCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQwNDgwOTE4Y2IwNDdkNDQ5ODNlZGQ1
ZTZkN2EwMWJlNTNlZWVmOGMuLmI1M2NjODFhOTY4OThiMzQwY2E0MGZkZDE5ZmNmZjg4NzZjNmE2
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04NTAsNiArODUwLDkgQEAKIAkJ
MkFEMkVERkIxOTc5OUUzODAwNEQ2NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkFEMkVERkExOTc5OUUzODAwNEQ2
NDc4IC8qIEVudW1lcmF0aW9uTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0
aW9uU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJBRDg5MzI5MTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2NvcGUuaCAqLzsgfTsK
IAkJMkQzNDJGMzZGNzI0NDA5NjgwNEFEQjI0IC8qIFNvdXJjZU9yaWdpbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDI1QkExMzM3RTQzNDRFMUIyNjlB
NjcxIC8qIFNvdXJjZU9yaWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTMxNzcwQzU1MjdCOTRDRTYwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWlu
RGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTc3MEM0RjI3Qjk0Q0U0MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvci5oICovOyB9OworCQkzMTc3MEM1NzI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQ
bGFpbkRhdGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxNzcwQzUxMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZVBy
b3RvdHlwZS5oICovOyB9OworCQkzMTc3MEM1ODI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQ
bGFpbkRhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxNzcwQzUyMjdCOTRDRTUwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZS5oICovOyB9Owog
CQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMTExQjhBMjM5NzI1NjUwMEFBMzRDRSAv
KiBTY3JpYmJsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTMzOTVDNzA3MjI1NTVGNkQwMEJEQkZBRCAvKiBCM0VsaW1pbmF0ZURlYWRDb2RlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMzk1QzcwNTIy
NTU1RjZEMDBCREJGQUQgLyogQjNFbGltaW5hdGVEZWFkQ29kZS5oICovOyB9OwogCQkzM0E5MjBC
RDIzREEyQzZEMDAwRUJBRjAgLyogQ29tbW9uU2xvd1BhdGhzSW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzNBOTIwQkMyM0RBMkM2RDAwMEVC
QUYwIC8qIENvbW1vblNsb3dQYXRoc0lubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzcyMCw2ICszNzIzLDEyIEBACiAJCTJBREZBMjYy
MThFRjM1NDAwMDRGOUZDQyAvKiBHQ0xvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gR0NMb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzAzMjE3NURGMUFENDdEODk5OEIzNEUxIC8qIEpTU291cmNlQ29kZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NvdXJjZUNvZGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzBBNUY0MDNGMTFDNEY1OTlDRDU5NkQ1IC8qIFdhc21TaWduYXR1cmVJbmxp
bmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdhc21TaWduYXR1cmVJbmxp
bmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNzcwQzRGMjdCOTRDRTQwMDMw
ODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NzBDNTAyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFs
UGxhaW5EYXRlQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTMxNzcwQzUxMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0
ZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTc3MEM1
MjI3Qjk0Q0U1MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYWxQbGFpbkRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE3NzBDNTMyN0I5NENFNTAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5E
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE3NzBDNTQyN0I5NENFNTAw
MzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMxMTFCOEEyMzk3MjU2NTAwQUEzNENFIC8qIFNj
cmliYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmliYmxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMzNzQzNjQ5MjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRp
dmVFeHByZXNzaW9uVHJlZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29j
aWF0aXZlRXhwcmVzc2lvblRyZWVzLmNwcDsgcGF0aCA9IGIzL0IzT3B0aW1pemVBc3NvY2lhdGl2
ZUV4cHJlc3Npb25UcmVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNzQz
NjRBMjI0RDc5RUYwMEM4QzIyNyAvKiBCM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJl
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQjNPcHRpbWl6ZUFzc29jaWF0aXZlRXhwcmVzc2lvblRyZWVz
Lmg7IHBhdGggPSBiMy9CM09wdGltaXplQXNzb2NpYXRpdmVFeHByZXNzaW9uVHJlZXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5MzIsNyArNTk0MSw2IEBACiAJCQkJODYwM0NF
RjAxNEM3NTNFRjAwQUU1OUUzIC8qIHRvb2xzICovLAogCQkJCTdCOThEMTMzMUI2MENEMUUwMDIz
QjFBNCAvKiB3YXNtICovLAogCQkJCTg2RUFDNDhDMEY5M0U4QjkwMDhFQzk0OCAvKiB5YXJyICov
LAotCQkJCTUzMzY5OUFGMjdBMzA2RjYwMEM5NTYxRCAvKiBSZWNvdmVyZWQgUmVmZXJlbmNlcyAq
LywKIAkJCSk7CiAJCQluYW1lID0gSmF2YVNjcmlwdENvcmU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNzMyNyw5ICs3MzM1LDYgQEAKIAkJN0I5OEQxMzMxQjYwQ0QxRTAwMjNCMUE0
IC8qIHdhc20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJ
CTM3QUFDMDkxMjc5RjEyNDIwMEQ2NDg0MiAvKiBXYXNtQnJhbmNoSGludHMuaCAqLywKLQkJCQkz
N0FBQzA5MDI3OUYxMjQxMDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRzU2VjdGlvblBhcnNlci5j
cHAgKi8sCi0JCQkJMzdBQUMwOTIyNzlGMTI0MjAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1Nl
Y3Rpb25QYXJzZXIuaCAqLywKIAkJCQlBRDJGQ0I4QTFEQjU4NDAwMDBCM0U3MzYgLyoganMgKi8s
CiAJCQkJNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5jcHAg
Ki8sCiAJCQkJNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5o
ICovLApAQCAtNzMzOSw2ICs3MzQ0LDkgQEAKIAkJCQk1M0NBNzMwODFFQTUzM0Q4MDA3NjA0OUQg
LyogV2FzbUJCUVBsYW4uaCAqLywKIAkJCQlBRDRCMURGNzFERjI0NEQ3MDA3MUFFMzIgLyogV2Fz
bUJpbmRpbmcuY3BwICovLAogCQkJCUFENEIxREY4MURGMjQ0RDcwMDcxQUUzMiAvKiBXYXNtQmlu
ZGluZy5oICovLAorCQkJCTM3QUFDMDkxMjc5RjEyNDIwMEQ2NDg0MiAvKiBXYXNtQnJhbmNoSGlu
dHMuaCAqLywKKwkJCQkzN0FBQzA5MDI3OUYxMjQxMDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRz
U2VjdGlvblBhcnNlci5jcHAgKi8sCisJCQkJMzdBQUMwOTIyNzlGMTI0MjAwRDY0ODQyIC8qIFdh
c21CcmFuY2hIaW50c1NlY3Rpb25QYXJzZXIuaCAqLywKIAkJCQk1MjVDMERENzFFOTM1ODQ3MDAy
MTg0Q0QgLyogV2FzbUNhbGxlZS5jcHAgKi8sCiAJCQkJNTI1QzBERDgxRTkzNTg0NzAwMjE4NENE
IC8qIFdhc21DYWxsZWUuaCAqLywKIAkJCQk1MjZBQzRCNDFFOTc3QzVEMDAzNTAwRTEgLyogV2Fz
bUNhbGxlZUdyb3VwLmNwcCAqLywKQEAgLTgyNjAsNiArODI2OCwxMiBAQAogCQkJCUY2RjE1MDE4
MjY5M0QzM0QwMDRCOThFRiAvKiBUZW1wb3JhbE5vdy5oICovLAogCQkJCUY2RjE1MDE5MjY5M0Qz
M0UwMDRCOThFRiAvKiBUZW1wb3JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRjZGMTUwMUEyNjkzRDMz
RTAwNEI5OEVGIC8qIFRlbXBvcmFsT2JqZWN0LmggKi8sCisJCQkJMzE3NzBDNTMyN0I5NENFNTAw
MzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlLmNwcCAqLywKKwkJCQkzMTc3MEM1MjI3Qjk0Q0U1
MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCAqLywKKwkJCQkzMTc3MEM1MDI3Qjk0Q0U0
MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgKi8sCisJCQkJMzE3
NzBDNEYyN0I5NENFNDAwMzA4MDkxIC8qIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3IuaCAq
LywKKwkJCQkzMTc3MEM1NDI3Qjk0Q0U1MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGVQcm90
b3R5cGUuY3BwICovLAorCQkJCTMxNzcwQzUxMjdCOTRDRTQwMDMwODA5MSAvKiBUZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZS5oICovLAogCQkJCUUzODZGRDc3MjZFODY3QjcwMEU0QzI4QiAvKiBU
ZW1wb3JhbFBsYWluVGltZS5jcHAgKi8sCiAJCQkJRTM4NkZENzgyNkU4NjdCODAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lLmggKi8sCiAJCQkJRTM4NkZENzQyNkU4NjdCNzAwRTRDMjhCIC8q
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwICovLApAQCAtMTA5NzksNyArMTA5OTMs
NiBAQAogCQkJCTBGRTA1MDI5MUFBOTA5NTYwMEQzM0IzMyAvKiBTY29wZWRBcmd1bWVudHNUYWJs
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFMDUwMkIxQUE5MDk1NjAwRDMzQjMzIC8qIFNjb3Bl
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyog
U2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkzN0FBQzA5NDI3
OUYxQzA1MDBENjQ4NDIgLyogV2FzbUJyYW5jaEhpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
MzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1RkQwMDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBp
biBIZWFkZXJzICovLApAQCAtMTEwOTcsNiArMTExMTAsOSBAQAogCQkJCUY2RDY3RDQ0MjZGOTAy
RTkwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUY2RDY3RDQ4MjZGOTEzMEMwMDZFMDM0OSAvKiBUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
bHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlGNkYxNTAyMTI2OTNENDUwMDA0Qjk4RUYgLyogVGVt
cG9yYWxPYmplY3QubHV0LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTc3MEM1ODI3Qjk0Q0U2MDAz
MDgwOTEgLyogVGVtcG9yYWxQbGFpbkRhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNzcwQzU1
MjdCOTRDRTYwMDMwODA5MSAvKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMTc3MEM1NzI3Qjk0Q0U2MDAzMDgwOTEgLyogVGVtcG9yYWxQbGFpbkRh
dGVQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzODZGRDdFMjZFODY3QjgwMEU0QzI4
QiAvKiBUZW1wb3JhbFBsYWluVGltZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4NkZEN0IyNkU4
NjdCODAwRTRDMjhCIC8qIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUUzODZGRDdGMjZFODY3QjgwMEU0QzI4QiAvKiBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTEwOSw3ICsxMTEyNSw2IEBACiAJCQkJRkUz
NDIyMTIxRDZCODFDMzAwMzJCRTg4IC8qIFRocm93U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNTcyRDRGMTY4NzlGREQwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTczODY1NTYxMTg2OTdCNDAwNTQwMjc5IC8qIFRodW5rR2VuZXJhdG9ycy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMzdBQUMwOTMyNzlGMUJGQzAwRDY0ODQyIC8qIFdhc21CcmFuY2hI
aW50c1NlY3Rpb25QYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTQ0OENEMTNBMTc4Mzcw
MEY1QkExQSAvKiBUaW55Qmxvb21GaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTU5ODk4
MTdDODZDNTgwMEExRTU0MyAvKiBUb05hdGl2ZUZyb21WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyRDRERTkxOTgzMkRBQzAwN0Q0QjE5IC8qIFRvVGhpc1N0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTE2Niw2ICsxMTE4MSw4IEBACiAJCQkJNTNGNDBFOTMxRDVBNEFCMzAwOTlBMUI2
IC8qIFdhc21CM0lSR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1M0NBNzMwQTFFQTUz
M0Q4MDA3NjA0OUQgLyogV2FzbUJCUVBsYW4uaCBpbiBIZWFkZXJzICovLAogCQkJCUFENEIxREZB
MURGMjQ0RTIwMDcxQUUzMiAvKiBXYXNtQmluZGluZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzdB
QUMwOTQyNzlGMUMwNTAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMzdBQUMwOTMyNzlGMUJGQzAwRDY0ODQyIC8qIFdhc21CcmFuY2hIaW50c1NlY3Rpb25Q
YXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUyNUMwRERBMUU5MzU4NDcwMDIxODRDRCAvKiBX
YXNtQ2FsbGVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEg
LyogV2FzbUNhbGxlZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQlFM0ZCODUzQTIyRjM2NjdC
MDA4RjkwRUQgLyogV2FzbUNhbGxlZVJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzYTk1YzU4YjNkOTliOWJjZTgzMmMwMTc1ODJkZjk1ODRk
OGVjYThhLi44NGE5NjI0MWRiMWQ4M2JiY2RhZDNjMTllY2EzZTUzOWM2ZmI3YmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDIwLDYgKzEwMjAsOSBAQCBydW50aW1lL1RlbXBv
cmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3IuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmNw
cAogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCmluZGV4IDAxZTFjOTMyYmYzMzcxMjAzNTVi
OGEwZjAwNmRmY2E3NDdiMTEyNWYuLmE3YzkxYmE0NzkwZDc3MWZiMmFhNGY0YzljOGFkZDE1Mzll
OTIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zMjM3LDYgKzMyMzcs
NyBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZSwgVGVt
cG9yYWxDYWxlbmRhcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0
ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsRHVyYXRpb24p
CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxJbnN0YW50
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsSW5zdGFudCkKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluRGF0ZVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLCBUZW1wb3JhbFBsYWluRGF0ZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLCBU
ZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUsIFRlbXBvcmFsVGltZVpv
bmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNw
YWNlLCBjZWxsSGVhcENlbGxUeXBlLCBKU1VpbnQ4QXJyYXkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKaW5kZXggYWRjZmFiYjNiZDJmMjY3NTAyMzk2NDU3OTc3YmI3ZDE3YWZlYTMyZS4uNWRh
NjFmNTA0NWE2YzgzODIwNTI2N2JhNWIxOGUyOGYxZmRlNjZjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaApAQCAtOTQzLDYgKzk0Myw3IEBAIHB1YmxpYzoKICAgICBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5zdGFudFNwYWNlKQor
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpbkRhdGVT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxh
aW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwU3Vic3BhY2VUeXBlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN1
YnNwYWNlVHlwZXMuaAppbmRleCA2MGFjZWJlODlmYmFiYjNkNWExNWI0ZDhjZTUzOTA5NTJlNjdk
N2VhLi4wYjQ0ZmUwMWU5NDVkMjI0ZDU3MTJhODA2NmQxMTIwODkxY2I1NGM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Vic3BhY2VUeXBlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdWJzcGFjZVR5cGVzLmgKQEAgLTEwOSw2ICsx
MDksNyBAQAogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxJbnN0YW50LmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpbkRhdGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IGUz
MjA4MzQ5NjI1NWQxYjg2MjcxNTFhYTMyMTE4YTMzZWZkY2FiYjAuLmJkYzNmYTc2M2M1YmY4YmZk
NzhjMjk4ZDIyNzg3Y2EyODZkMmZhNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0lTTzg2MDEuY3BwCkBAIC02ODIsNyArNjgyLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8c3Rk
Ojp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2UK
IH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
aXNvZGF5c2lubW9udGgKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZGF5c0luTW9udGgoaW50MzJf
dCB5ZWFyLCB1bnNpZ25lZCBtb250aCkKK3Vuc2lnbmVkIGRheXNJbk1vbnRoKGludDMyX3QgeWVh
ciwgdW5zaWduZWQgbW9udGgpCiB7CiAgICAgc3dpdGNoIChtb250aCkgewogICAgIGNhc2UgMToK
QEAgLTk4Nyw2ICs5ODcsMTEgQEAgU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGlt
ZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4KICAgICByZXR1cm4g
bWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAy
LCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQo
KSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9u
KTsKIH0KIAorU3RyaW5nIHRlbXBvcmFsRGF0ZVRvU3RyaW5nKFBsYWluRGF0ZSBwbGFpbkRhdGUp
Cit7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgNCwgcGxhaW5EYXRlLnllYXIoKSks
ICctJywgcGFkKCcwJywgMiwgcGxhaW5EYXRlLm1vbnRoKCkpLCAnLScsIHBhZCgnMCcsIDIsIHBs
YWluRGF0ZS5kYXkoKSkpOworfQorCiAvLyBJc1ZhbGlkRHVyYXRpb24gKCB5ZWFycywgbW9udGhz
LCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWlj
cm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KIGJvb2wgaXNWYWxpZER1cmF0aW9u
KGNvbnN0IER1cmF0aW9uJiBkdXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuaAppbmRleCAxODY1ZDMzZjk2MjAyNjhiNTUzMTQxZTFjZDU5ZWIzZDI1MzYzNmExLi4y
NjUwZTljMDFhNGNiZGJkMzEwZjkxZjIyZjFhOTFkN2JmN2U2YzY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0yODQsNiArMjg0LDggQEAgc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBw
YXJzZVRpbWUoU3QKIHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0
aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZURh
dGVUaW1lKFN0cmluZ1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGlu
dDY0X3QpOwogU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBs
ZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOworU3RyaW5nIHRlbXBvcmFsRGF0ZVRv
U3RyaW5nKFBsYWluRGF0ZSk7Cit1bnNpZ25lZCBkYXlzSW5Nb250aChpbnQzMl90IHllYXIsIHVu
c2lnbmVkIG1vbnRoKTsKIAogYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24mKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IGE5MDc2Nzk4OGViYzZjNzc5Y2ZmMzhjZjc2MzM0ZGUzYzhjYmU3MGUuLmZhNjIzZTA5
MDc0YzM4ZmJlMzIzNDE2N2RjZDU5MjAyZjhmMTUxYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIxNCw2ICsyMTQsOCBAQAog
I2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpbkRhdGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCkBAIC0xMjY5LDYg
KzEyNzEsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25z
dHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0
LnNldChUZW1wb3JhbEluc3RhbnQ6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIGluc3RhbnRQcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisgICAgICAgIG1fcGxh
aW5EYXRlU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFs
aXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAgICAgYXV0byogZ2xvYmFsT2Jq
ZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAg
ICAgYXV0byogcGxhaW5EYXRlUHJvdG90eXBlID0gVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6
OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9i
amVjdFByb3RvdHlwZSgpKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxQbGFp
bkRhdGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHBsYWluRGF0ZVBy
b3RvdHlwZSkpOworICAgICAgICAgICAgfSk7CisKICAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1
cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVy
ZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTIxOTYsNiArMjIwNSw3IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYg
dmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9pbnN0YW50U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAg
IHRoaXNPYmplY3QtPm1fcGxhaW5EYXRlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRo
aXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNP
YmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDNhZGZhMzhlOGEz
MjQ5YTQ1OGJjYjE3NDViMTgyNjUzZGY1YzhiNzUuLmQ2ZGE0OTc0YzY0Y2UxNTZhYzM3NzNmMGE4
ODdjZGRmMWQ1NzM2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaApAQCAtMzM4LDYgKzMzOCw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVy
dHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBM
YXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVy
ZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9pbnN0YW50
U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X3BsYWluRGF0ZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0
cnVjdHVyZT4gbV9wbGFpblRpbWVTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fdGltZVpvbmVTdHJ1Y3R1cmU7CiAKQEAgLTkwOCw2ICs5MDks
NyBAQCBwdWJsaWM6CiAgICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0dXJu
IG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkdXJhdGlv
blN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiBpbnN0YW50U3RydWN0dXJlKCkgeyByZXR1cm4gbV9pbnN0YW50U3RydWN0
dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogcGxhaW5EYXRlU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV9wbGFpbkRhdGVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBw
bGFpblRpbWVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1l
Wm9uZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGFhOTJlOTYzYWNkOGJiZDc0M2FiM2Mz
ZjZhZmRjMWI5YzdlYjYwMzYuLjNjZDJmYTM3MzNiYTcwMGZiNmFlNzJkYjA5OTIwNGUxOTM4N2Jh
MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbEluc3RhbnRDb25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsTm93LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgiCkBA
IC03NSw2ICs3NywxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVJbnN0YW50Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBUZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUo
KSksIGpzQ2FzdDxUZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmluc3Rh
bnRTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpT
VmFsdWUgY3JlYXRlUGxhaW5EYXRlQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0
KQoreworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3Jh
bE9iamVjdCo+KG9iamVjdCk7CisgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5EYXRlQ29uc3Ry
dWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUo
KSksIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cGxh
aW5EYXRlU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRp
YyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9i
amVjdCkKIHsKICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVt
cG9yYWxPYmplY3QqPihvYmplY3QpOwpAQCAtMTAxLDYgKzExMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgSW5zdGFudCAgICAgICAgY3JlYXRlSW5zdGFudENvbnN0
cnVjdG9yICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIE5vdyAgICAgICAgICAg
IGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFj
aworICBQbGFpbkRhdGUgICAgICBjcmVhdGVQbGFpbkRhdGVDb25zdHJ1Y3RvciAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgUGxhaW5UaW1lICAgICAgY3JlYXRlUGxhaW5UaW1lQ29u
c3RydWN0b3IgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFRpbWVab25lICAgICAg
IGNyZWF0ZVRpbWVab25lQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFj
awogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmgKaW5kZXggOGNkMzMzNmFhZWFkYzc2M2I0ZWNjMjgyNzUzY2UxZGFhNzMyZmM2NC4uNzVkMjAz
MjBiYmQzNDY3ZjA0NzllY2QwNGRlNzU1NGNkMTAzZDNkYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yNyw2ICsyNywxMiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorI2RlZmluZSBKU0NfVEVNUE9SQUxfUExBSU5fREFURV9VTklUUyht
YWNybykgXAorICAgIG1hY3JvKHllYXIsIFllYXIpIFwKKyAgICBtYWNybyhtb250aCwgTW9udGgp
IFwKKyAgICBtYWNybyhkYXksIERheSkgXAorCisKICNkZWZpbmUgSlNDX1RFTVBPUkFMX1BMQUlO
X1RJTUVfVU5JVFMobWFjcm8pIFwKICAgICBtYWNybyhob3VyLCBIb3VyKSBcCiAgICAgbWFjcm8o
bWludXRlLCBNaW51dGUpIFwKQEAgLTUxLDYgKzU3LDcgQEAgZW51bSBjbGFzcyBUZW1wb3JhbFVu
aXQgOiB1aW50OF90IHsKIH07CiAjZGVmaW5lIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyhuYW1l
LCBjYXBpdGFsaXplZE5hbWUpICsgMQogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJP
ZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfQ09VTlRfVEVNUE9SQUxf
VU5JVFMpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsUGxhaW5E
YXRlVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9QTEFJTl9EQVRFX1VOSVRTKEpTQ19DT1VOVF9URU1Q
T1JBTF9VTklUUyk7CiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxQ
bGFpblRpbWVVbml0cyA9IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0NPVU5U
X1RFTVBPUkFMX1VOSVRTKTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM3OGY5NGJmYjAxMTUyN2E2NmFmMWI4NWQ5NmQzZTRjZTZlYjQ4M2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBs
YWluRGF0ZS5jcHAKQEAgLTAsMCArMSwxODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpbkRhdGUuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0U2xvdFZpc2l0b3IuaCIKKyNp
bmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNp
bmNsdWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlv
bi5oIgorI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworbmFt
ZXNwYWNlIFRlbXBvcmFsUGxhaW5EYXRlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhwciBib29s
IHZlcmJvc2UgPSBmYWxzZTsKK30KKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5EYXRl
OjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5EYXRlKSB9OworCitUZW1wb3JhbFBsYWlu
RGF0ZSogVGVtcG9yYWxQbGFpbkRhdGU6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBJU084NjAxOjpQbGFpbkRhdGUmJiBwbGFpbkRhdGUpCit7CisgICAgYXV0byogb2JqZWN0
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpbkRhdGU+KHZtKSkgVGVt
cG9yYWxQbGFpbkRhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpbkRhdGUpKTsKKyAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1
Y3R1cmUqIFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5E
YXRlOjpUZW1wb3JhbFBsYWluRGF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084
NjAxOjpQbGFpbkRhdGUmJiBwbGFpbkRhdGUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisg
ICAgLCBtX3BsYWluRGF0ZShXVEZNb3ZlKHBsYWluRGF0ZSkpCit7Cit9CisKK3ZvaWQgVGVtcG9y
YWxQbGFpbkRhdGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBtX2Nh
bGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IGF1dG8mIGluaXQpIHsKKyAgICAg
ICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAgICAgICAgICBhdXRvKiBwbGFpbkRhdGUgPSBq
c0Nhc3Q8VGVtcG9yYWxQbGFpbkRhdGUqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGF1dG8q
IGdsb2JhbE9iamVjdCA9IHBsYWluRGF0ZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAg
IGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRhcklEKCkpOworICAgICAgICAg
ICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpT
Q2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVu
KGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxUZW1wb3Jh
bFBsYWluRGF0ZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXIudmlzaXQodmlz
aXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihUZW1wb3JhbFBsYWluRGF0ZSk7CisK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWlzdmFs
aWRpc29kYXRlCitzdGF0aWMgSVNPODYwMTo6UGxhaW5EYXRlIHRvUGxhaW5EYXRlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSB5ZWFyID0gZHVyYXRpb24ueWVhcnMoKTsK
KyAgICBkb3VibGUgbW9udGggPSBkdXJhdGlvbi5tb250aHMoKTsKKyAgICBkb3VibGUgZGF5ID0g
ZHVyYXRpb24uZGF5cygpOworICAgIGlmICghKG1vbnRoID49IDEgJiYgbW9udGggPD0gMTIpKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibW9udGggaXMg
b3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgZG91Ymxl
IGRheXNJbk1vbnRoID0gSVNPODYwMTo6ZGF5c0luTW9udGgoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
eWVhciksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb250aCkpOworICAgIGlmICghKGRheSA+PSAx
ICYmIGRheSA8PSBkYXlzSW5Nb250aCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJkYXkgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluRGF0ZSB7CisgICAgICAgIHN0
YXRpY19jYXN0PGludDMyX3Q+KHllYXIpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
bW9udGgpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF5KQorICAgIH07Cit9CisK
Ky8vIENyZWF0ZVRlbXBvcmFsUGxhaW5EYXRlICggeWVhcnMsIG1vbnRocywgZGF5cyApCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1wbGFpbmRhdGUt
Y29uc3RydWN0b3IKK1RlbXBvcmFsUGxhaW5EYXRlKiBUZW1wb3JhbFBsYWluRGF0ZTo6dHJ5Q3Jl
YXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byBwbGFpbkRhdGUgPSB0b1BsYWluRGF0ZShnbG9iYWxPYmplY3QsIFdURk1v
dmUoZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShwbGFpbkRhdGUpKTsKK30KKworU3RyaW5nIFRlbXBvcmFsUGxhaW5EYXRlOjp0b1N0cmluZyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0
T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0
dXJuIHRvU3RyaW5nKCk7CisKKyAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxEYXRlVG9TdHJp
bmcobV9wbGFpbkRhdGUpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsZGF0ZQorVGVtcG9yYWxQbGFpbkRhdGUqIFRlbXBv
cmFsUGxhaW5EYXRlOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
aXRlbVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92ZXJmbG93VmFsdWUp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIFVOVVNFRF9QQVJBTShvdmVyZmxvd1ZhbHVl
KTsKKworICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaW1wbGVtZW50ZWQ6IGZyb20gb2JqZWN0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIHN0cmluZyA9IGl0ZW1W
YWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIGRhdGVUaW1lID0gSVNPODYwMTo6cGFyc2VEYXRlVGlt
ZShzdHJpbmcpOworICAgIGlmIChkYXRlVGltZSkgeworICAgICAgICBhdXRvIFtwbGFpbkRhdGUs
IHBsYWluVGltZU9wdGlvbmFsLCB0aW1lWm9uZU9wdGlvbmFsXSA9IGRhdGVUaW1lLnZhbHVlKCk7
CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluRGF0ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPnBsYWluRGF0ZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluRGF0ZSkpOworICAgIH0KKwor
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBkYXRlIHN0
cmluZyJfcyk7CisgICAgcmV0dXJuIHsgfTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY29tcGFyZXRlbXBvcmFsZGF0ZQoraW50MzJfdCBU
ZW1wb3JhbFBsYWluRGF0ZTo6Y29tcGFyZShUZW1wb3JhbFBsYWluRGF0ZSogcGxhaW5EYXRlMSwg
VGVtcG9yYWxQbGFpbkRhdGUqIHBsYWluRGF0ZTIpCit7CisgICAgSVNPODYwMTo6UGxhaW5EYXRl
IGQxID0gcGxhaW5EYXRlMS0+cGxhaW5EYXRlKCk7CisgICAgSVNPODYwMTo6UGxhaW5EYXRlIGQy
ID0gcGxhaW5EYXRlMi0+cGxhaW5EYXRlKCk7CisgICAgaWYgKGQxLnllYXIoKSA+IGQyLnllYXIo
KSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGQxLnllYXIoKSA8IGQyLnllYXIoKSkKKyAg
ICAgICAgcmV0dXJuIC0xOworICAgIGlmIChkMS5tb250aCgpID4gZDIubW9udGgoKSkKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgaWYgKGQxLm1vbnRoKCkgPCBkMi5tb250aCgpKQorICAgICAgICBy
ZXR1cm4gLTE7CisgICAgaWYgKGQxLmRheSgpID4gZDIuZGF5KCkpCisgICAgICAgIHJldHVybiAx
OworICAgIGlmIChkMS5kYXkoKSA8IGQyLmRheSgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAg
cmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUyNWVlYjE4
MDZkOTNkMjYyZWE3Mjk4Zjg2ZmIzZmFmYjc2ZWYyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlLmgKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkxhenlQcm9wZXJ0
eS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIFRlbXBvcmFsUGxhaW5EYXRlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+CisgICAgc3RhdGlj
IElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAgICByZXR1cm4g
dm0udGVtcG9yYWxQbGFpbkRhdGVTcGFjZTxtb2RlPigpOworICAgIH0KKworICAgIHN0YXRpYyBU
ZW1wb3JhbFBsYWluRGF0ZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5E
YXRlJiYpOworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZSogdHJ5Q3JlYXRlSWZWYWxpZChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9uJiYpOworICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpbkRh
dGUqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFs
T3ZlcmZsb3c+KTsKKyAgICBzdGF0aWMgaW50MzJfdCBjb21wYXJlKFRlbXBvcmFsUGxhaW5EYXRl
KiwgVGVtcG9yYWxQbGFpbkRhdGUqKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGNhbGVuZGFy
KCkgeyByZXR1cm4gbV9jYWxlbmRhci5nZXQodGhpcyk7IH0KKyAgICBJU084NjAxOjpQbGFpbkRh
dGUgcGxhaW5EYXRlKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpbkRhdGU7IH0KKworI2RlZmluZSBK
U0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX0RBVEVfRklFTEQobmFtZSwgY2FwaXRhbGl6ZWROYW1l
KSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5EYXRlLm5hbWUo
KTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9EQVRFX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9S
QUxfUExBSU5fREFURV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9E
QVRFX0ZJRUxECisKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxEYXRlVG9TdHJpbmcobV9wbGFpbkRhdGUpOwor
ICAgIH0KKworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKK3ByaXZhdGU6CisgICAgVGVt
cG9yYWxQbGFpbkRhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpbkRhdGUmJik7Cisg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hh
cmFjdGVyVHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpQbGFpbkRhdGU+
IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMg
SVNPODYwMTo6UGxhaW5EYXRlIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCop
OworCisgICAgSVNPODYwMTo6UGxhaW5EYXRlIG1fcGxhaW5EYXRlOworICAgIExhenlQcm9wZXJ0
eTxUZW1wb3JhbFBsYWluRGF0ZSwgVGVtcG9yYWxDYWxlbmRhcj4gbV9jYWxlbmRhcjsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zOWU2MGYxNTcxY2ExOTZhOWY3MDlmYTc2ZjBmYWU5M2I0YmYwZDNlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSW50bE9iamVjdElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRh
dGUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBv
cmFsUGxhaW5EYXRlQ29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvckZ1bmNDb21w
YXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvci5sdXQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluRGF0
ZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1w
b3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFC
TEUoVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1w
b3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVtcG9yYWxQbGFpbkRhdGVD
b25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFy
ZSAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3RvciogVGVtcG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKiBwbGFpbkRhdGVQ
cm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yPih2bSkpIFRlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtLCBwbGFpbkRhdGVQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
K30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVt
cG9yYWxQbGFpbkRhdGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3Ry
dWN0VGVtcG9yYWxQbGFpbkRhdGUpOworCitUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yOjpU
ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbFBsYWluRGF0ZSwgY29uc3Ry
dWN0VGVtcG9yYWxQbGFpbkRhdGUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlw
ZSogcGxhaW5EYXRlUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAw
LCAiUGxhaW5EYXRlIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRy
YW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIHBsYWluRGF0ZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIHBsYWluRGF0ZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluRGF0ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxG
cmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9E
RVJJVkVEX1NUUlVDVFVSRSh2bSwgcGxhaW5EYXRlU3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxG
cmFtZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBhdXRvIGFyZ3VtZW50
Q291bnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKKworICAgIGlmIChhcmd1bWVudENv
dW50ID4gMCkgeworICAgICAgICBhdXRvIHZhbHVlID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1
bWVudCgwKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIGlmICgh
c3RkOjppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZSB5ZWFyIHByb3BlcnR5
IG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgZHVyYXRpb24uc2V0WWVhcnModmFsdWUpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIGlm
IChhcmd1bWVudENvdW50ID4gMSkgeworICAgICAgICBhdXRvIHZhbHVlID0gY2FsbEZyYW1lLT51
bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZSBt
b250aCBwcm9wZXJ0eSBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIGR1cmF0aW9uLnNldE1v
bnRocyh2YWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Cisg
ICAgfQorCisgICAgaWYgKGFyZ3VtZW50Q291bnQgPiAyKSB7CisgICAgICAgIGF1dG8gdmFsdWUg
PSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5EYXRlIGRheSBwcm9wZXJ0eSBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIGR1
cmF0aW9uLnNldERheXModmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKFRlbXBvcmFsUGxhaW5EYXRlOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBXVEZNb3ZlKGR1cmF0aW9uKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluRGF0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBsYWluRGF0ZSIpKTsKK30KKworLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW5kYXRlLmZyb20K
K0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yRnVu
Y0Zyb20sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50
bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxPdmVy
ZmxvdyBvdmVyZmxvdyA9IHRvVGVtcG9yYWxPdmVyZmxvdyhnbG9iYWxPYmplY3QsIG9wdGlvbnMp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGl0
ZW1WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmlu
aGVyaXRzPFRlbXBvcmFsUGxhaW5EYXRlPih2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5EYXRlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+cGxhaW5EYXRlU3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFBsYWluRGF0
ZSo+KGl0ZW1WYWx1ZSktPnBsYWluRGF0ZSgpKSkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpbkRhdGU6OmZyb20oZ2xvYmFsT2Jq
ZWN0LCBpdGVtVmFsdWUsIG92ZXJmbG93KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbmRhdGUuY29tcGFyZQorSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogb25lID0gVGVtcG9yYWxQbGFpbkRhdGU6
OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQp
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvKiB0d28g
PSBUZW1wb3JhbFBsYWluRGF0ZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMSksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoVGVtcG9yYWxQbGFpbkRh
dGU6OmNvbXBhcmUob25lLCB0d28pKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVDb25z
dHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRh
dGVDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MjU3ZTEzZjI1ZTM3Njc4N2JkOTgyNDQ3Y2U1
OWRjMzJjYmY4NjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5E
YXRlQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3Rh
dGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZUNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSop
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgVGVt
cG9yYWxQbGFpbkRhdGVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSopOworfTsKK1NUQVRJ
Q19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5EYXRlQ29uc3RydWN0
b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJv
dG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDg4MzBiYmEyOTRlZTczZWQ4ODM0YjZlYjliODY0N2I2
OTNhMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgiCisKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpbkRhdGUuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsUGxhaW5EYXRlUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyWWVhcik7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdl
dHRlck1vbnRoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5EYXRlUHJvdG90eXBlR2V0dGVyRGF5KTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFp
bkRhdGVQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLlBsYWlu
RGF0ZSIsICZCYXNlOjpzX2luZm8sICZwbGFpbkRhdGVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwg
Q1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZSkgfTsKKworLyog
U291cmNlIGZvciBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHBsYWlu
RGF0ZVByb3RvdHlwZVRhYmxlCisgIHRvU3RyaW5nICAgICAgICAgdGVtcG9yYWxQbGFpbkRhdGVQ
cm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgeWVh
ciAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlclllYXIgICAgICAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbW9udGggICAgICAgICAg
ICB0ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoICAgICAgICAgICAgRG9udEVu
dW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgZGF5ICAgICAgICAgICAgICB0ZW1wb3JhbFBs
YWluRGF0ZVByb3RvdHlwZUdldHRlckRheSAgICAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlKiBU
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0byogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5
cGU+KHZtKSkgVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
cHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpUZW1wb3JhbFBsYWlu
RGF0ZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW5kYXRlLnByb3RvdHlw
ZS50b3N0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5EYXRlUHJv
dG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFp
bkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5EYXRlLnByb3Rv
dHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsYWluRGF0ZSJfcyk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgcGxhaW5EYXRlLT50b1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpbkRh
dGVQcm90b3R5cGVHZXR0ZXJZZWFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5E
YXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUueWVhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluRGF0ZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHBsYWluRGF0ZS0+eWVhcigpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlwZUdldHRlck1vbnRoLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5cGUubW9udGggY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpbkRhdGUiX3MpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihwbGFpbkRhdGUtPm1vbnRoKCkpKTsKK30KKworSlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlR2V0dGVyRGF5LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpbkRhdGUg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5EYXRlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluRGF0ZS5wcm90b3R5
cGUuZGF5IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5EYXRlIl9zKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5EYXRlLT5kYXkoKSkpOworfQor
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpbkRhdGVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjY3
OTM5YTY0NjBkMjBhZWMzYTJiZmQ0ZjMzN2U3MTU0OThiYjUyMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5EYXRlUHJvdG90eXBl
LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5E
YXRlUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3Jh
bFBsYWluRGF0ZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZSgpOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluRGF0ZVByb3RvdHlw
ZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMg
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
OworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5EYXRl
UHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYs
IEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5oCmluZGV4IGQ1Mjg2NGU5YTA2MzhmNzFhYTA2ZWU0M2QwYjMyMzA1NDll
NmIxMjUuLmEzZTc3YjM4MWRiMTc4MmM2NDMyNzliMTdkYjJiMmU5ZTYwODhkMWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtNDQ5LDYgKzQ0OSw3IEBAIHB1YmxpYzoKICAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25T
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsSW5z
dGFudFNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxQbGFpbkRhdGVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
KHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5n
ZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMzODFmNmJjYzRkYjBlODMwMTRjZDNkYjFk
OWU5ODc3ZmY1OGQ3MDYuLjgwMTRiMWIzYjM3YTFjZTBiMzI0MjdiZTQ5NGE0M2ZkYTEyOTE0NmUg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMjItMDItMTMgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpbkRhdGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDAzMworICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODMxMjc3NDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU29tZSBiYXNpYyB0ZXN0cyBmb3IgUGxhaW5EYXRlLgorCisgICAg
ICAgICogc3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0ZS5qczogQWRkZWQuCisgICAgICAgIChzaG91
bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91bGRCZS5TdHJpbmcu
VGVtcG9yYWwuUGxhaW5EYXRlLmZyb20pOgorICAgICAgICAobGV0LnRleHQub2YuZmFpbHVyZXMu
c2hvdWxkVGhyb3cpOgorCiAyMDIyLTAyLTA5ICBBbmdlbG9zIE9pa29ub21vcG91bG9zICA8YW5n
ZWxvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNraXAgZmFpbGluZyBzaGFkb3cgcmVhbG1zIHRl
c3RzIG9uIE1JUFMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWluZGF0ZS5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
NDFhNmZkYjhkZjczMDBjMTJkYmVkZjE3MjA3YzFlZWQyNGZjNGZiCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW5kYXRlLmpzCkBAIC0wLDAgKzEsMTYyIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlVGVtcG9yYWw9MSIpCisKK2Z1bmN0aW9uIHNob3Vs
ZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0
dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3Nh
Z2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0g
Y2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9y
IGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3Rl
ZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKQor
ICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKK30KKworc2hvdWxkQmUo
VGVtcG9yYWwuUGxhaW5EYXRlIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUo
VGVtcG9yYWwuUGxhaW5EYXRlLmxlbmd0aCwgMCk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlBsYWluRGF0ZSwgJ3Byb3RvdHlwZScpLndyaXRhYmxl
LCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBv
cmFsLlBsYWluRGF0ZSwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJl
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxhaW5EYXRlLCAncHJv
dG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShUZW1wb3JhbC5QbGFpbkRh
dGUucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBUZW1wb3JhbC5QbGFpbkRhdGUpOworCit7CisgICAg
bGV0IGRhdGUgPSBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDEsIDIsIDMpOworICAgIHNob3VsZEJl
KFN0cmluZyhkYXRlKSwgYDAwMDEtMDItMDNgKTsKKyAgICBzaG91bGRCZShkYXRlLnllYXIsIDEp
OworICAgIHNob3VsZEJlKGRhdGUubW9udGgsIDIpOworICAgIHNob3VsZEJlKGRhdGUuZGF5LCAz
KTsKK30KKworeworICAgIGxldCBkYXRlID0gbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDA3LCAx
LCA5KTsKKyAgICBzaG91bGRCZShTdHJpbmcoZGF0ZSksIGAyMDA3LTAxLTA5YCk7CisgICAgc2hv
dWxkQmUoZGF0ZS55ZWFyLCAyMDA3KTsKKyAgICBzaG91bGRCZShkYXRlLm1vbnRoLCAxKTsKKyAg
ICBzaG91bGRCZShkYXRlLmRheSwgOSk7Cit9CisKKworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFs
LlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwJykpLCBg
MjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcy
MDA3LTAxLTA5dDAzOjI0OjMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRl
bXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwJykpLCBgMjAwNy0wMS0w
OWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5
VDAzOjI0OjMwWicpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCsyMDoyMDo1OScpKSwgYDIwMDctMDEt
MDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0w
OVQwMzoyNDozMC0yMDoyMDo1OScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMFx1MjIxMjIwOjIwOjU5
JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5m
cm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwMjAn
KSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZy
b20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMTAyMDMwJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxk
QmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEw
OjIwOjMwLjA1JykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBs
YWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzEwOjIwOjMwLjEyMzQ1Njc4OScpKSwg
YDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgn
MjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykpLCBgMjAwNy0wMS0w
OWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5
IDAzOjI0OjMwKzAxOjAwW0V1cm9wZS9CcnVzc2Vsc10nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91
bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzAr
MDE6MDBbVU5LTk9XTl0nKSksIGAyMDA3LTAxLTA5YCk7IC8vIFRpbWVab25lIGVycm9yIHNob3Vs
ZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcy
MDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwWy5oZXldJykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1l
Wm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtfXScpKSwgYDIwMDctMDEt
MDlgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJp
bmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbXy1d
JykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4K
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoy
NDozMCswMTowMFtfL19dJykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91
bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgn
MjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtfLS4vXy0uXScpKSwgYDIwMDctMDEtMDlgKTsgLy8g
VGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5EYXRlLmZyb20oJzIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbXy4uL18uLl0nKSks
IGAyMDA3LTAxLTA5YCk7IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hv
dWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMw
KzAxOjAwW18uL18uXScpKSwgYDIwMDctMDEtMDlgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxk
IGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzIw
MDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbRXRjL0dNVCsyMF0nKSksIGAyMDA3LTAxLTA5YCk7IC8v
IFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBv
cmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQtMjBd
JykpLCBgMjAwNy0wMS0wOWApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4K
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoy
NDozMCswMTowMFsrMDFdJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBv
cmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWyswMTowMF0nKSks
IGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20o
JzIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbKzAxOjAwOjAwXScpKSwgYDIwMDctMDEtMDlgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoy
NDozMCswMTowMFsrMDE6MDA6MDAuMTIzXScpKSwgYDIwMDctMDEtMDlgKTsKK3Nob3VsZEJlKFN0
cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFsr
MDE6MDA6MDAuMTIzNDVdJykpLCBgMjAwNy0wMS0wOWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBv
cmFsLlBsYWluRGF0ZS5mcm9tKCcyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4x
MjM0NTY3OF0nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxh
aW5EYXRlLmZyb20oJzIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbKzAxOjAwOjAwLjEyMzQ1Njc4
OV0nKSksIGAyMDA3LTAxLTA5YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5EYXRl
LmZyb20oJzIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbLTAxOjAwXScpKSwgYDIwMDctMDEtMDlg
KTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOSAw
MzoyNDozMCswMTowMFtcdTIyMTIwMTowMF0nKSksIGAyMDA3LTAxLTA5YCk7Cit7CisgICAgbGV0
IGRhdGUgPSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMjAwNy0wMS0wOVQwMzoyNDozMCswMTow
MFtFdXJvcGUvQnJ1c3NlbHNdJykKKyAgICBzaG91bGRCZShkYXRlID09PSBUZW1wb3JhbC5QbGFp
bkRhdGUuZnJvbShkYXRlKSwgZmFsc2UpOworfQorCisKKy8vIEZJWE1FOiBmcm9tKG9iamVjdCkg
aXMgbm90ZSB5ZXQgaW1wbGVtZW50ZWQuCisvLyB7CisvLyAgICAgbGV0IGRhdGUgPSBUZW1wb3Jh
bC5QbGFpbkRhdGUuZnJvbSh7CisvLyAgICAgICB5ZWFyOiAyMDA3LAorLy8gICAgICAgbW9udGg6
IDEsCisvLyAgICAgICBkYXk6IDkKKy8vICAgICB9KTsKKy8vICAgICBzaG91bGRCZShTdHJpbmco
ZGF0ZSksIGAyMDA3LTAxLTA5YCk7CisvLyB9CitzaG91bGRUaHJvdygoKSA9PiB7IFRlbXBvcmFs
LlBsYWluRGF0ZS5mcm9tKHsgeWVhcjogMjAwNywgbW9udGg6IDEsIGRheTogOSB9KTsgfSwgUmFu
Z2VFcnJvcik7CisKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRl
KC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5Q
bGFpbkRhdGUoKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1w
b3JhbC5QbGFpbkRhdGUoMjAwNyk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIwMDcsIDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluRGF0ZSgyMDA3LCAxMywgMSk7IH0sIFJh
bmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKDIw
MDcsIDIsIDMwKTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluRGF0ZShJbmZpbml0eSwgMSwgMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRlKC1JbmZpbml0eSwgMSwgMSk7IH0s
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5EYXRl
KDIwMDcsIEluZmluaXR5LCAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUoMjAwNywgLUluZmluaXR5LCAxKTsgfSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpbkRhdGUoMjAwNywgMSwg
SW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBv
cmFsLlBsYWluRGF0ZSgyMDA3LCAxLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworbGV0
IGZhaWx1cmVzID0gWworICAgICIiLAorICAgICIyMzo1OTo2MS45OTk5OTk5OTkiLAorICAgICIx
OTk1LTEyMDdUMDM6MjQ6MzAiLAorICAgICIxOTk1MTItMDdUMDM6MjQ6MzAiLAorICAgICIyMDA3
LTAxLTA5VDAzOjI0OjMwKzIwOjIwOjYwIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCsyMDoy
MDUwIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCs6IiwKKyAgICAiMjAwNy0wMS0wOVQwMzoy
NDozMCsyOjUwIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFsvXSIsCisgICAgIjIw
MDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLy8vXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzAr
MDE6MDBbSGV5L0hlbGxvIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtdIiwKKyAg
ICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtIZXkvXSIsCisgICAgIjIwMDctMDEtMDlUMDM6
MjQ6MzArMDE6MDBbLi5dIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFsuXSIsCisg
ICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLi8uXSIsCisgICAgIjIwMDctMDEtMDlUMDM6
MjQ6MzArMDE6MDBbLi4vLi5dIiwKKyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFstSGV5
L0hlbGxvXSIsCisgICAgIjIwMDctMDEtMDlUMDM6MjQ6MzArMDE6MDBbLV0iLAorICAgICIyMDA3
LTAxLTA5VDAzOjI0OjMwKzAxOjAwWy0vX10iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAx
OjAwW18vLV0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0NvY29hQ2FwcHVjY2lu
b01hdGNoYV0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQrNTBdIiwK
KyAgICAiMjAwNy0wMS0wOVQwMzoyNDozMCswMTowMFtFdGMvR01UKzBdIiwKKyAgICAiMjAwNy0w
MS0wOVQwMzoyNDozMCswMTowMFtFdGMvR01UMF0iLAorICAgICIyMDA3LTAxLTA5VDAzOjI0OjMw
KzEwOjIwOjMwLjAxMjM0NTY3ODkiLAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwW0V0
Yy9HTVRcdTIyMTIwMV0iLAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWyswMjowMDow
MC4wMTIzNDU2Nzg5XSIsCisgICAgIjIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbMDI6MDA6MDAu
MTIzNDU2Nzg5XSIsCisgICAgIjIwMDctMDEtMDkgMDM6MjQ6MzArMDE6MDBbMDI6MDAwMC4xMjM0
NTY3ODldIiwKKyAgICAiMjAwNy0wMS0wOSAwMzoyNDozMCswMTowMFswMjAwOjAwLjEyMzQ1Njc4
OV0iLAorICAgICIyMDA3LTAxLTA5IDAzOjI0OjMwKzAxOjAwWzAyOjAwOjYwLjEyMzQ1Njc4OV0i
LAorXTsKKworZm9yIChsZXQgdGV4dCBvZiBmYWlsdXJlcykgeworICAgIHNob3VsZFRocm93KCgp
ID0+IHsKKyAgICAgICAgcHJpbnQoU3RyaW5nKFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKHRleHQp
KSk7CisgICAgfSwgUmFuZ2VFcnJvcik7Cit9CisKKy8vIEZJWE1FOiBUaGlzIHJlbGllcyBvbiBU
ZW1wb3JhbC5QbGFpbkRhdGUuZnJvbShvYmplY3QpLgorLy8geworLy8gICAgIGxldCBvbmUgPSBU
ZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMTAwMS0wMS0wMScpOworLy8gICAgIGxldCB0d28gPSBU
ZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMTAwMi0wMS0wMScpOworLy8gICAgIGxldCB0aHJlZSA9
IFRlbXBvcmFsLlBsYWluRGF0ZS5mcm9tKCcxMDAwLTAyLTAyJyk7CisvLyAgICAgbGV0IGZvdXIg
PSBUZW1wb3JhbC5QbGFpbkRhdGUuZnJvbSgnMTAwMS0wMS0wMicpOworLy8gICAgIGxldCBmaXZl
ID0gVGVtcG9yYWwuUGxhaW5EYXRlLmZyb20oJzEwMDEtMDItMDEnKTsKKy8vICAgICBsZXQgc29y
dGVkID0gW29uZSwgdHdvLCB0aHJlZSwgZm91ciwgZml2ZV0uc29ydChUZW1wb3JhbC5QbGFpbkRh
dGUuY29tcGFyZSk7CisvLyAgICAgc2hvdWxkQmUoc29ydGVkLmpvaW4oJyAnKSwgYDEwMDAtMDIt
MDIgMTAwMS0wMS0wMSAxMDAxLTAxLTAyIDEwMDEtMDItMDEgMTAwMi0wMS0wMWApOworLy8gfQo=
</data>
<flag name="review"
          id="478961"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="479228"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>