<?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>48270</bug_id>
          
          <creation_ts>2010-10-25 15:29:55 -0700</creation_ts>
          <short_desc>Remove exec and globalData arguments from jsNumber</short_desc>
          <delta_ts>2010-10-26 16:32:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>48276</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>299133</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-25 15:29:55 -0700</bug_when>
    <thetext>Remove exec and globalData arguments from jsNumber</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299135</commentid>
    <comment_count>1</comment_count>
      <attachid>71803</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-25 15:33:05 -0700</bug_when>
    <thetext>Created attachment 71803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299136</commentid>
    <comment_count>2</comment_count>
      <attachid>71803</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2010-10-25 15:34:24 -0700</bug_when>
    <thetext>Comment on attachment 71803
Patch

Yay!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299154</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-10-25 16:02:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 71803 [details])
&gt; Yay!

Yay, it broke Qt build. :o Could you check it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299156</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-25 16:06:33 -0700</bug_when>
    <thetext>Attachment 71803 did not build on qt:
Build output: http://queues.webkit.org/results/4751005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299883</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-10-26 16:32:19 -0700</bug_when>
    <thetext>Committed r70496: &lt;http://trac.webkit.org/changeset/70496&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71803</attachid>
            <date>2010-10-25 15:33:05 -0700</date>
            <delta_ts>2010-10-25 15:34:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-48270-20101025153304.patch</filename>
            <type>text/plain</type>
            <size>157157</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAppbmRleCBjMjJlOGQ4MjdmNjg0OWU2MmFmZmIxNGEy
OTM0OTY4NjQ0MjQwNDY2Li5iOGRkN2M2ZWQ5YmRhZTM2NGUxODE2OWQ4MTIwYjBmMDA1Yjg4Nzk5
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCkBAIC0yMTksNyArMjE5LDcgQEAgSlNWYWx1
ZVJlZiBKU1ZhbHVlTWFrZU51bWJlcihKU0NvbnRleHRSZWYgY3R4LCBkb3VibGUgdmFsdWUpCiAg
ICAgaWYgKGlzbmFuKHZhbHVlKSkKICAgICAgICAgdmFsdWUgPSBOYU47CiAKLSAgICByZXR1cm4g
dG9SZWYoZXhlYywganNOdW1iZXIoZXhlYywgdmFsdWUpKTsKKyAgICByZXR1cm4gdG9SZWYoZXhl
YywganNOdW1iZXIodmFsdWUpKTsKIH0KIAogSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZyhK
U0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1JlZiBzdHJpbmcpCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggYTIyN2Yx
M2M3MDIyNWJmOGFlNmIxY2RkZDJlOGJiMTlkNjQxMjJhYS4uMDA1ODRlZGIzZmYwMjY5M2M0MDg0
NmE1YTQyZGEzOTM0NmM0ZWU1ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxMC0x
MC0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBleGVjIGFuZCBnbG9iYWxEYXRh
IGFyZ3VtZW50cyBmcm9tIGpzTnVtYmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00ODI3MAorCisgICAgICAgIFJlbW92ZSB0aGUgbm93IHVudXNlZCBl
eGVjIGFuZCBnbG9iYWxEYXRhIGFyZ3VtZW50cyBmcm9tIGpzTnVtYmVyCisgICAgICAgIGFuZCBt
ZWNoYW5pY2FsbHkgdXBkYXRlIGFsbCB1c2VycyBvZiBqc051bWJlci4KKworICAgICAgICAqIEFQ
SS9KU1ZhbHVlUmVmLmNwcDoKKyAgICAgICAgKEpTVmFsdWVNYWtlTnVtYmVyKToKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdExvYWQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgICogaml0L0pJVEFyaXRobWV0aWMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
bW9kKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfamZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX2p0cnVlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpE
RUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0
aW9uUnVuKToKKyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6QXJndW1lbnRz
OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkFycmF5Q29uc3RydWN0b3I6OkFycmF5Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjphcnJheVByb3RvRnVuY1BvcCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jUHVz
aCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jU2hpZnQpOgorICAgICAgICAoSlNDOjph
cnJheVByb3RvRnVuY1NwbGljZSk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlm
dCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jRmlsdGVyKToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNNYXApOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY0V2ZXJ5KToK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNGb3JFYWNoKToKKyAgICAgICAgKEpTQzo6YXJy
YXlQcm90b0Z1bmNTb21lKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZWR1Y2UpOgor
ICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0KToKKyAgICAgICAgKEpTQzo6
YXJyYXlQcm90b0Z1bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNMYXN0
SW5kZXhPZik6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3Rvcik6CisgICAg
ICAgICogcnVudGltZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmg6CisgICAgICAgIChK
U0M6OkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb246Om9wZXJhdG9yKCkpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVj
dG9yOjpEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpkYXRlUGFyc2UpOgorICAgICAg
ICAoSlNDOjpkYXRlTm93KToKKyAgICAgICAgKEpTQzo6ZGF0ZVVUQyk6CisgICAgICAgICogcnVu
dGltZS9EYXRlSW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpEYXRlSW5zdGFuY2U6OkRhdGVJ
bnN0YW5jZSk6CisgICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6ZGF0ZVByb3RvRnVuY0dldEZ1bGxZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3Rv
RnVuY0dldFVUQ0Z1bGxZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1vbnRo
KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ01vbnRoKToKKyAgICAgICAgKEpT
Qzo6ZGF0ZVByb3RvRnVuY0dldERhdGUpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0
VVRDRGF0ZSk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXREYXkpOgorICAgICAgICAo
SlNDOjpkYXRlUHJvdG9GdW5jR2V0VVRDRGF5KToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVu
Y0dldEhvdXJzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ0hvdXJzKToKKyAg
ICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMpOgorICAgICAgICAoSlNDOjpkYXRl
UHJvdG9GdW5jR2V0VVRDTWludXRlcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNHZXRT
ZWNvbmRzKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMpOgorICAg
ICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jR2V0TWlsbGlTZWNvbmRzKToKKyAgICAgICAgKEpTQzo6
ZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90
b0Z1bmNHZXRUaW1lem9uZU9mZnNldCk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNTZXRU
aW1lKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tVGltZUFyZ3MpOgorICAgICAgICAo
SlNDOjpzZXROZXdWYWx1ZUZyb21EYXRlQXJncyk6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1
bmNTZXRZZWFyKToKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY0dldFllYXIpOgorICAgICAg
ICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAoSlNDOjphZGRFcnJvclNvdXJjZUluZm8p
OgorICAgICAgICAoSlNDOjphZGRFcnJvckRpdm90SW5mbyk6CisgICAgICAgICogcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6RXJy
b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3Rv
cik6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uUHJvdG90eXBlOjpGdW5jdGlvblByb3RvdHlwZSk6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlT
bG90KToKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNCeXRl
QXJyYXk6OkpTQnl0ZUFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQnl0ZUFycmF5Lmg6Cisg
ICAgICAgIChKU0M6OkpTQnl0ZUFycmF5OjpnZXRJbmRleCk6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTRnVuY3Rpb246Omxlbmd0aEdldHRlcik6CisgICAgICAgIChKU0M6OkpT
RnVuY3Rpb246OmdldE93blByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZXNldCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6Omdsb2JhbEZ1bmNQYXJzZUludCk6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQYXJz
ZUZsb2F0KToKKyAgICAgICAgKiBydW50aW1lL0pTTnVtYmVyQ2VsbC5oOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjpKU1ZhbHVlKToKKyAgICAgICAgKEpTQzo6anNOYU4pOgorICAgICAgICAoSlND
OjpKU1ZhbHVlOjp0b0pTTnVtYmVyKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjp1bndyYXBCb3hlZFByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6dmFsdWUpOgorICAgICAgICAoSlNDOjpKU09OU3Ry
aW5naWZ5KToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OmdldFN0cmluZ1Byb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6Z2V0U3RyaW5nUHJvcGVydHlT
bG90KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTQzo6anNEb3Vi
bGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpqc051bWJlcik6CisgICAgICAgIChKU0M6OmpzTmFO
KToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6SlNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OnRvSlNOdW1iZXIpOgorICAgICAgICAqIHJ1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL01h
dGhPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpNYXRoT2JqZWN0OjpNYXRoT2JqZWN0KToKKyAg
ICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0Ficyk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1
bmNBQ29zKToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY0FTaW4pOgorICAgICAgICAoSlND
OjptYXRoUHJvdG9GdW5jQVRhbik6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNBVGFuMik6
CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNDZWlsKToKKyAgICAgICAgKEpTQzo6bWF0aFBy
b3RvRnVuY0Nvcyk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNFeHApOgorICAgICAgICAo
SlNDOjptYXRoUHJvdG9GdW5jRmxvb3IpOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jTG9n
KToKKyAgICAgICAgKEpTQzo6bWF0aFByb3RvRnVuY01heCk6CisgICAgICAgIChKU0M6Om1hdGhQ
cm90b0Z1bmNNaW4pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jUG93KToKKyAgICAgICAg
KEpTQzo6bWF0aFByb3RvRnVuY1JhbmRvbSk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNS
b3VuZCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNTaW4pOgorICAgICAgICAoSlNDOjpt
YXRoUHJvdG9GdW5jU3FydCk6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNUYW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6
Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAg
ICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpOdW1iZXJD
b25zdHJ1Y3Rvcjo6TnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpudW1iZXJDb25z
dHJ1Y3Rvck5hTlZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVtYmVyQ29uc3RydWN0b3JOZWdJbmZp
bml0eSk6CisgICAgICAgIChKU0M6Om51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkpOgorICAg
ICAgICAoSlNDOjpudW1iZXJDb25zdHJ1Y3Rvck1heFZhbHVlKToKKyAgICAgICAgKEpTQzo6bnVt
YmVyQ29uc3RydWN0b3JNaW5WYWx1ZSk6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFdpdGhOdW1i
ZXJDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OmNhbGxOdW1iZXJDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpOdW1i
ZXJQcm90b3R5cGU6Ok51bWJlclByb3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Ok9iamVjdENvbnN0cnVjdG9yOjpPYmplY3RD
b25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KEpTQzo6anNBZGRTbG93Q2FzZSk6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6Cisg
ICAgICAgIChKU0M6OmpzQWRkKToKKyAgICAgICAgKiBydW50aW1lL1Byb3RvdHlwZUZ1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJvdG90eXBlRnVuY3Rpb246OlByb3RvdHlwZUZ1bmN0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6UmVnRXhwQ29uc3RydWN0b3I6OlJlZ0V4cENvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
UmVnRXhwTWF0Y2hlc0FycmF5OjpmaWxsQXJyYXlJbnN0YW5jZSk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBPYmplY3RMYXN0SW5kZXgp
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpT
dHJpbmdQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNM
YXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NlYXJjaCk6CisgICAg
ICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUpOgorCiAyMDEwLTEwLTI1ICBE
YXZpZCBUYXB1c2thICA8ZHRhcHVza2FAcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXZpZCBLaWx6ZXIuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBmMzRjMzhjNGNjMjU5M2NiZDU2ZDAyMGE0YmJiZjQ4NzhjYzQ1
NmQ5Li44N2YwYmViZWY2MjBmMzE3NTlmNWI3MWJmZDcxYTcwZmQ2MjM5N2M3IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTEw
ODAsMTAgKzEwODAsMTAgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2Fk
KFJlZ2lzdGVySUQqIGRzdCwgZG91YmxlIG51bWJlcikKICAgICAvLyBGSVhNRTogT3VyIGhhc2gg
dGFibGVzIHdvbid0IGhvbGQgaW5maW5pdHksIHNvIHdlIG1ha2UgYSBuZXcgSlNOdW1iZXJDZWxs
IGVhY2ggdGltZS4KICAgICAvLyBMYXRlciB3ZSBjYW4gZG8gdGhlIGV4dHJhIHdvcmsgdG8gaGFu
ZGxlIHRoYXQgbGlrZSB0aGUgb3RoZXIgY2FzZXMuCiAgICAgaWYgKG51bWJlciA9PSBIYXNoVHJh
aXRzPGRvdWJsZT46OmVtcHR5VmFsdWUoKSB8fCBIYXNoVHJhaXRzPGRvdWJsZT46OmlzRGVsZXRl
ZFZhbHVlKG51bWJlcikpCi0gICAgICAgIHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVtYmVyKGds
b2JhbERhdGEoKSwgbnVtYmVyKSk7CisgICAgICAgIHJldHVybiBlbWl0TG9hZChkc3QsIGpzTnVt
YmVyKG51bWJlcikpOwogICAgIEpTVmFsdWUmIHZhbHVlSW5NYXAgPSBtX251bWJlck1hcC5hZGQo
bnVtYmVyLCBKU1ZhbHVlKCkpLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCF2YWx1ZUluTWFwKQot
ICAgICAgICB2YWx1ZUluTWFwID0ganNOdW1iZXIoZ2xvYmFsRGF0YSgpLCBudW1iZXIpOworICAg
ICAgICB2YWx1ZUluTWFwID0ganNOdW1iZXIobnVtYmVyKTsKICAgICByZXR1cm4gZW1pdExvYWQo
ZHN0LCB2YWx1ZUluTWFwKTsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAppbmRleCA0NDljYWU5NWY0Yzg3ZDAyYzkyMGQ3OTk4MmU0YTUzMTdkMTE4
ODMzLi5mMjgyNTQyMGNhM2ZiZWE3YWViMDg5NmUwZTgxNTRhMjBmODdlODI1IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjA4LDcgKzIwOCw3
IEBAIFJlZ2lzdGVySUQqIEFycmF5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgfQogCiAgICAgaWYgKG1fZWxpc2lvbikg
ewotICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051
bWJlcihnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCBtX2VsaXNpb24gKyBsZW5ndGgpKTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogdmFsdWUgPSBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIobV9l
bGlzaW9uICsgbGVuZ3RoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChhcnJheS5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIHZhbHVlKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcAppbmRleCBkNGZhMTJmMzViM2FiYTAwMzA3
NzkzZGEwYzhjYTNiYWRjYmQ3YTZmLi5mMGEwNDlhZjE3ZWEzY2IzNmYyMzM5ZmY2YThmZjJhNGUw
N2NjMWQ4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwCkBAIC04ODgsNyArODg4
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMik7CiAKLSAgICBh
ZGRTbG93Q2FzZShicmFuY2hQdHIoRXF1YWwsIHJlZ1QyLCBJbW1QdHIoSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKG1fZ2xvYmFsRGF0YSwgMCkpKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0
cihFcXVhbCwgcmVnVDIsIEltbVB0cihKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpKSkpOwog
ICAgIG1fYXNzZW1ibGVyLmNkcSgpOwogICAgIG1fYXNzZW1ibGVyLmlkaXZsX3IocmVnVDIpOwog
ICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMSwgcmVnVDApOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAppbmRleCBlNTNhZjc3ZmNkYmUxY2Q2YzJi
NjRhMDJmYTA3OGEwZDBlZDQ0NWQzLi44NjgzYzc0OTkyMmQxZmM2YjllNWE0ODAzMTk2ZDg5OTA0
ZjhhNzI0IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcApAQCAt
MTMyMyw3ICsxMzIzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgLy8gSWYgdGhlIHJlbWFpbmRlciBpcyB6ZXJvIGFuZCB0aGUg
ZGl2aWRlbmQgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgLTAuCiAgICAgSnVtcCBzdG9yZVJl
c3VsdDEgPSBicmFuY2hUZXN0MzIoTm9uWmVybywgWDg2UmVnaXN0ZXJzOjplZHgpOwogICAgIEp1
bXAgc3RvcmVSZXN1bHQyID0gYnJhbmNoVGVzdDMyKFplcm8sIFg4NlJlZ2lzdGVyczo6ZWJ4LCBJ
bW0zMigweDgwMDAwMDAwKSk7IC8vIG5vdCBuZWdhdGl2ZQotICAgIGVtaXRTdG9yZShkc3QsIGpz
TnVtYmVyKG1fZ2xvYmFsRGF0YSwgLTAuMCkpOworICAgIGVtaXRTdG9yZShkc3QsIGpzTnVtYmVy
KC0wLjApKTsKICAgICBKdW1wIGVuZCA9IGp1bXAoKTsKIAogICAgIHN0b3JlUmVzdWx0MS5saW5r
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IGE0NjhjMThiYzQ0YjgxZGQz
YmRlMGNmZWM0ZWI5NmRiMGQ2MmMzOWUuLjBhOWFjZmJhOGUwNWViMTlhYmRhNTUxNTRjODdmOTMz
OGI0MTc1YzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTcxMSw3ICs3MTEsNyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9qZmFsc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVnVDApOwogCi0gICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBJbW1Q
dHIoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1fZ2xvYmFsRGF0YSwgMCkpKSksIHRhcmdldCk7
CisgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBJbW1QdHIoSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKDApKSkpLCB0YXJnZXQpOwogICAgIEp1bXAgaXNOb25aZXJvID0gZW1pdEp1
bXBJZkltbWVkaWF0ZUludGVnZXIocmVnVDApOwogCiAgICAgYWRkSnVtcChicmFuY2hQdHIoRXF1
YWwsIHJlZ1QwLCBJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSksIHRh
cmdldCk7CkBAIC04MzEsNyArODMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmVnVDApOwogCi0gICAgSnVtcCBpc1plcm8g
PSBicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KG1fZ2xvYmFsRGF0YSwgMCkpKSk7CisgICAgSnVtcCBpc1plcm8gPSBicmFuY2hQdHIoRXF1YWws
IHJlZ1QwLCBJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKSkpOwogICAgIGFkZEp1
bXAoZW1pdEp1bXBJZkltbWVkaWF0ZUludGVnZXIocmVnVDApLCB0YXJnZXQpOwogCiAgICAgYWRk
SnVtcChicmFuY2hQdHIoRXF1YWwsIHJlZ1QwLCBJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbih0cnVlKSkpKSwgdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDgzNDAy
MTEwMDgyZGUyZWJlYTgwNDZhNzBmZDhkMzFhZTNjZDdkN2UuLjA3MTUzMjhiMjEzMzZlMjZmZDI1
NjkwZTQ4MWU2ODM1ODU4MmQwNGIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMTM0Miw3
ICsxMzQyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2FkZCkK
IAogICAgIGRvdWJsZSBsZWZ0ID0gMC4wLCByaWdodDsKICAgICBpZiAodjEuZ2V0TnVtYmVyKGxl
ZnQpICYmIHYyLmdldE51bWJlcihyaWdodCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBsZWZ0ICsgcmlnaHQpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihsZWZ0ICsgcmlnaHQpKTsKIAogICAg
IC8vIEFsbCBvdGhlciBjYXNlcyBhcmUgcHJldHR5IHVuY29tbW9uCiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBqc0FkZFNsb3dDYXNlKGNhbGxGcmFtZSwgdjEsIHYyKTsKQEAgLTEzNTcsNyArMTM1Nyw3
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9wcmVfaW5jKQogICAg
IEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAKICAgICBDYWxsRnJh
bWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCB2LnRvTnVtYmVyKGNhbGxGcmFtZSkg
KyAxKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHYudG9OdW1iZXIoY2FsbEZyYW1l
KSArIDEpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMTkxMywxMCArMTkxMywxMCBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfbXVsKQogICAgIGRvdWJsZSBsZWZ0Owog
ICAgIGRvdWJsZSByaWdodDsKICAgICBpZiAoc3JjMS5nZXROdW1iZXIobGVmdCkgJiYgc3JjMi5n
ZXROdW1iZXIocmlnaHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgbGVmdCAqIHJpZ2h0KSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobGVmdCAqIHJpZ2h0KSk7CiAKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
anNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBzcmMxLnRvTnVtYmVyKGNhbGxGcmFtZSkg
KiBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoc3JjMS50b051bWJlcihjYWxsRnJhbWUpICogc3JjMi50b051bWJlcihjYWxsRnJhbWUpKTsK
ICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKIH0KQEAgLTI0NzUsMTAgKzI0NzUsMTAgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3N1YikKICAgICBkb3VibGUgbGVmdDsKICAgICBkb3Vi
bGUgcmlnaHQ7CiAgICAgaWYgKHNyYzEuZ2V0TnVtYmVyKGxlZnQpICYmIHNyYzIuZ2V0TnVtYmVy
KHJpZ2h0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGFja0Zy
YW1lLmdsb2JhbERhdGEsIGxlZnQgLSByaWdodCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGxlZnQgLSByaWdodCkpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgc3JjMS50b051bWJlcihjYWxsRnJhbWUpIC0gc3JjMi50
b051bWJlcihjYWxsRnJhbWUpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHNyYzEu
dG9OdW1iZXIoY2FsbEZyYW1lKSAtIHNyYzIudG9OdW1iZXIoY2FsbEZyYW1lKSk7CiAgICAgQ0hF
Q0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CiB9CkBAIC0yNjg1LDEwICsyNjg1LDEwIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9uZWdhdGUpCiAKICAgICBkb3VibGUgdjsKICAgICBpZiAoc3JjLmdl
dE51bWJlcih2KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGFj
a0ZyYW1lLmdsb2JhbERhdGEsIC12KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoLXYpKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGFja0ZyYW1lLmdsb2Jh
bERhdGEsIC1zcmMudG9OdW1iZXIoY2FsbEZyYW1lKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcigtc3JjLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJ
T05fQVRfRU5EKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAt
MjgwOCwxMCArMjgwOCwxMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfZGl2KQogICAgIGRvdWJsZSBsZWZ0OwogICAgIGRvdWJsZSByaWdodDsKICAgICBpZiAoc3Jj
MS5nZXROdW1iZXIobGVmdCkgJiYgc3JjMi5nZXROdW1iZXIocmlnaHQpKQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0YWNrRnJhbWUuZ2xvYmFsRGF0YSwgbGVmdCAv
IHJpZ2h0KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobGVmdCAv
IHJpZ2h0KSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRh
LCBzcmMxLnRvTnVtYmVyKGNhbGxGcmFtZSkgLyBzcmMyLnRvTnVtYmVyKGNhbGxGcmFtZSkpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3JjMS50b051bWJlcihjYWxsRnJhbWUpIC8g
c3JjMi50b051bWJlcihjYWxsRnJhbWUpKTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VO
RCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTI4MjMsNyAr
MjgyMyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9wcmVfZGVj
KQogICAgIEpTVmFsdWUgdiA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCB2LnRvTnVtYmVyKGNhbGxG
cmFtZSkgLSAxKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHYudG9OdW1iZXIoY2Fs
bEZyYW1lKSAtIDEpOwogICAgIENIRUNLX0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpAQCAtMjg5MSw3ICsyODkxLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX3Bvc3RfaW5jKQogICAgIEpTVmFs
dWUgbnVtYmVyID0gdi50b0pTTnVtYmVyKGNhbGxGcmFtZSk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQ
VElPTl9BVF9FTkQoKTsKIAotICAgIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKClbc3RhY2tGcmFtZS5h
cmdzWzFdLmludDMyKCldID0ganNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCBudW1iZXIu
dW5jaGVja2VkR2V0TnVtYmVyKCkgKyAxKTsKKyAgICBjYWxsRnJhbWUtPnJlZ2lzdGVycygpW3N0
YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpXSA9IGpzTnVtYmVyKG51bWJlci51bmNoZWNrZWRHZXRO
dW1iZXIoKSArIDEpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobnVtYmVyKTsKIH0KIApA
QCAtMzAxOSw3ICszMDE5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUs
IG9wX2xzaGlmdCkKICAgICBKU1ZhbHVlIHNoaWZ0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFs
dWUoKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGFja0ZyYW1lLmdsb2JhbERhdGEsICh2
YWwudG9JbnQzMihjYWxsRnJhbWUpKSA8PCAoc2hpZnQudG9VSW50MzIoY2FsbEZyYW1lKSAmIDB4
MWYpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKCh2YWwudG9JbnQzMihjYWxsRnJh
bWUpKSA8PCAoc2hpZnQudG9VSW50MzIoY2FsbEZyYW1lKSAmIDB4MWYpKTsKICAgICBDSEVDS19G
T1JfRVhDRVBUSU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTMwMzMsNyArMzAzMyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRK
U1ZhbHVlLCBvcF9iaXRhbmQpCiAKICAgICBBU1NFUlQoIXNyYzEuaXNJbnQzMigpIHx8ICFzcmMy
LmlzSW50MzIoKSk7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHN0YWNrRnJhbWUuZ2xvYmFsRGF0
YSwgc3JjMS50b0ludDMyKGNhbGxGcmFtZSkgJiBzcmMyLnRvSW50MzIoY2FsbEZyYW1lKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvSW50MzIoY2FsbEZyYW1lKSAmIHNy
YzIudG9JbnQzMihjYWxsRnJhbWUpKTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTMwNDYsNyArMzA0
Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yc2hpZnQpCiAg
ICAgSlNWYWx1ZSBzaGlmdCA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7CiAKICAgICBD
YWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUg
cmVzdWx0ID0ganNOdW1iZXIoc3RhY2tGcmFtZS5nbG9iYWxEYXRhLCAodmFsLnRvSW50MzIoY2Fs
bEZyYW1lKSkgPj4gKHNoaWZ0LnRvVUludDMyKGNhbGxGcmFtZSkgJiAweDFmKSk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc051bWJlcigodmFsLnRvSW50MzIoY2FsbEZyYW1lKSkgPj4gKHNoaWZ0
LnRvVUludDMyKGNhbGxGcmFtZSkgJiAweDFmKSk7CiAKICAgICBDSEVDS19GT1JfRVhDRVBUSU9O
X0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTMwNjAs
NyArMzA2MCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9iaXRu
b3QpCiAKICAgICBBU1NFUlQoIXNyYy5pc0ludDMyKCkpOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihzdGFja0ZyYW1lLmdsb2JhbERhdGEsIH5zcmMudG9JbnQzMihjYWxsRnJhbWUpKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKH5zcmMudG9JbnQzMihjYWxsRnJhbWUpKTsKICAgICBD
SEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKIH0KQEAgLTMxMzQsNyArMzEzNCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVu
Y29kZWRKU1ZhbHVlLCBvcF9tb2QpCiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNr
RnJhbWUuY2FsbEZyYW1lOwogICAgIGRvdWJsZSBkID0gZGl2aWRlbmRWYWx1ZS50b051bWJlcihj
YWxsRnJhbWUpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoc3RhY2tGcmFtZS5nbG9i
YWxEYXRhLCBmbW9kKGQsIGRpdmlzb3JWYWx1ZS50b051bWJlcihjYWxsRnJhbWUpKSk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihmbW9kKGQsIGRpdmlzb3JWYWx1ZS50b051bWJlcihj
YWxsRnJhbWUpKSk7CiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zMTYwLDcgKzMxNjAsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfcG9zdF9kZWMpCiAgICAgSlNWYWx1
ZSBudW1iZXIgPSB2LnRvSlNOdW1iZXIoY2FsbEZyYW1lKTsKICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OX0FUX0VORCgpOwogCi0gICAgY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtzdGFja0ZyYW1lLmFy
Z3NbMV0uaW50MzIoKV0gPSBqc051bWJlcihzdGFja0ZyYW1lLmdsb2JhbERhdGEsIG51bWJlci51
bmNoZWNrZWRHZXROdW1iZXIoKSAtIDEpOworICAgIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKClbc3Rh
Y2tGcmFtZS5hcmdzWzFdLmludDMyKCldID0ganNOdW1iZXIobnVtYmVyLnVuY2hlY2tlZEdldE51
bWJlcigpIC0gMSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShudW1iZXIpOwogfQogCkBA
IC0zMTcyLDcgKzMxNzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfdXJzaGlmdCkKICAgICBKU1ZhbHVlIHNoaWZ0ID0gc3RhY2tGcmFtZS5hcmdzWzFdLmpzVmFs
dWUoKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGFja0ZyYW1lLmdsb2JhbERhdGEsICh2
YWwudG9VSW50MzIoY2FsbEZyYW1lKSkgPj4gKHNoaWZ0LnRvVUludDMyKGNhbGxGcmFtZSkgJiAw
eDFmKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcigodmFsLnRvVUludDMyKGNhbGxG
cmFtZSkpID4+IChzaGlmdC50b1VJbnQzMihjYWxsRnJhbWUpICYgMHgxZikpOwogICAgIENIRUNL
X0ZPUl9FWENFUFRJT05fQVRfRU5EKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwogfQpAQCAtMzE4Niw3ICszMTg2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wX2JpdHhvcikKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tG
cmFtZS5jYWxsRnJhbWU7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHN0YWNrRnJh
bWUuZ2xvYmFsRGF0YSwgc3JjMS50b0ludDMyKGNhbGxGcmFtZSkgXiBzcmMyLnRvSW50MzIoY2Fs
bEZyYW1lKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvSW50MzIoY2Fs
bEZyYW1lKSBeIHNyYzIudG9JbnQzMihjYWxsRnJhbWUpKTsKICAgICBDSEVDS19GT1JfRVhDRVBU
SU9OX0FUX0VORCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAg
LTMyMDcsNyArMzIwNyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBv
cF9iaXRvcikKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJh
bWU7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKHN0YWNrRnJhbWUuZ2xvYmFsRGF0
YSwgc3JjMS50b0ludDMyKGNhbGxGcmFtZSkgfCBzcmMyLnRvSW50MzIoY2FsbEZyYW1lKSk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzcmMxLnRvSW50MzIoY2FsbEZyYW1lKSB8IHNy
YzIudG9JbnQzMihjYWxsRnJhbWUpKTsKICAgICBDSEVDS19GT1JfRVhDRVBUSU9OX0FUX0VORCgp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGJhNTA2
ZTQ2YzRlNDBmOWIxN2I5ZTI4MTBmNTBmOTAyYTRkMDE1NmUuLjE2NjQ3ZWMzOTYxMGRjMmZjNWUw
MDU0MDdiZWYzYzNmNGYwYmMyNWEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjIwLDcgKzIyMCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVjKQogICAgIGV2
YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNj
b3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHQuZGF0YSgpLCBmaWxlTmFtZSkpOwogICAgIHN0
b3BXYXRjaC5zdG9wKCk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBzdG9wV2F0Y2guZ2V0RWxhcHNlZE1TKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMo
KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZChFeGVj
U3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAKaW5kZXggNWM1ZTUy
MjJmYjIyN2FkNzNkZDNhNTM5YWYyZjBkYTUyZWRhNTI4YS4uMzk4ODZhODY5NTgwZWQyN2E3ZDM2
NGE4MWQ1ZTMzN2UwNDE0OTBkZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApA
QCAtMTkxLDcgKzE5MSw3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hCiAgICAgfQogCiAgICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoICYmIExJS0VM
WSghZC0+b3ZlcnJvZGVMZW5ndGgpKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUoanNOdW1iZXIo
ZXhlYywgZC0+bnVtQXJndW1lbnRzKSk7CisgICAgICAgIHNsb3Quc2V0VmFsdWUoanNOdW1iZXIo
ZC0+bnVtQXJndW1lbnRzKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMjIy
LDcgKzIyMiw3IEBAIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wCiAgICAgfQogICAgIAogICAgIGlm
IChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCAmJiBMSUtFTFko
IWQtPm92ZXJyb2RlTGVuZ3RoKSkgewotICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Io
anNOdW1iZXIoZXhlYywgZC0+bnVtQXJndW1lbnRzKSwgRG9udEVudW0pOworICAgICAgICBkZXNj
cmlwdG9yLnNldERlc2NyaXB0b3IoanNOdW1iZXIoZC0+bnVtQXJndW1lbnRzKSwgRG9udEVudW0p
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAppbmRleCBlNWQwZGFjNTJmMWYzYjYxN2M1NDAxMTIw
Y2QxMTY3YzU3NmQ3OWQ3Li42MzJkNDY2ZTIyOWY0MmJkMWIzOWIyZmIwOTZkNGQ3NTFjY2MxZDhm
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTQ1
LDcgKzQ1LDcgQEAgQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gbm8uIG9mIGFy
Z3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCAxKSwgUmVhZE9ubHkg
fCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERv
bnRFbnVtIHwgRG9udERlbGV0ZSk7CiAKICAgICAvLyBFUzUKICAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5pc0FycmF5LCBhcnJheUNvbnN0cnVjdG9ySXNBcnJheSksIERvbnRF
bnVtKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggNjAw
MmViYjNkODk1MzE2NDE0Yzk4ZDJlMDY3MzFjZGZmZjFhMzk0Zi4uOGExOWY3NzEyOGY3ZGJmMGY2
ZjdkNDlkN2Q5ZmI3YjE0MjM3MGUyNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHAKQEAgLTM3OSwxMiArMzc5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgcmVz
dWx0OwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAobGVuZ3RoID09IDAp
IHsKLSAgICAgICAgcHV0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgbGVuZ3RoKSk7CisgICAgICAgIHB1dFByb3BlcnR5
KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxl
bmd0aCkpOwogICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVjLCBsZW5ndGggLSAxKTsKICAgICAgICAg
dGhpc09iai0+ZGVsZXRlUHJvcGVydHkoZXhlYywgbGVuZ3RoIC0gMSk7Ci0gICAgICAgIHB1dFBy
b3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKGV4ZWMsIGxlbmd0aCAtIDEpKTsKKyAgICAgICAgcHV0UHJvcGVydHkoZXhlYywgdGhpc09i
aiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3RoIC0gMSkpOwog
ICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CkBAIC0zOTUsNyAr
Mzk1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2go
RXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPT0gMSkgewogICAgICAgICBKU0Fy
cmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVlKTsKICAgICAgICAgYXJyYXktPnB1c2goZXhl
YywgZXhlYy0+YXJndW1lbnQoMCkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGV4ZWMsIGFycmF5LT5sZW5ndGgoKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwogICAgIH0KIAogICAgIEpTT2JqZWN0
KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRvVGhpc09iamVjdChleGVjKTsKQEAgLTQwMyw4ICs0MDMs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKTsgbisrKQogICAgICAgICB0aGlzT2JqLT5wdXQoZXhlYywgbGVuZ3RoICsgbiwgZXhl
Yy0+YXJndW1lbnQobikpOwogICAgIGxlbmd0aCArPSBleGVjLT5hcmd1bWVudENvdW50KCk7Ci0g
ICAgcHV0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0
aCwganNOdW1iZXIoZXhlYywgbGVuZ3RoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c051bWJlcihleGVjLCBsZW5ndGgpKTsKKyAgICBwdXRQcm9wZXJ0eShleGVjLCB0aGlzT2JqLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihsZW5ndGgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGxlbmd0aCkpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4ZWMpCkBA
IC00MzgsNyArNDM4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3Rv
RnVuY1NoaWZ0KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNP
YmotPmdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVj
KTsKICAgICBpZiAobGVuZ3RoID09IDApIHsKLSAgICAgICAgcHV0UHJvcGVydHkoZXhlYywgdGhp
c09iaiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgbGVuZ3Ro
KSk7CisgICAgICAgIHB1dFByb3BlcnR5KGV4ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxlbmd0aCkpOwogICAgICAgICByZXN1bHQgPSBqc1VuZGVm
aW5lZCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IHRoaXNPYmotPmdldChleGVj
LCAwKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU2hpZnQoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgdGhpc09iai0+ZGVsZXRlUHJvcGVydHkoZXhlYywgbGVuZ3RoIC0gMSk7CiAgICAgICAg
IH0KLSAgICAgICAgcHV0UHJvcGVydHkoZXhlYywgdGhpc09iaiwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgbGVuZ3RoIC0gMSkpOworICAgICAgICBwdXRQcm9w
ZXJ0eShleGVjLCB0aGlzT2JqLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJl
cihsZW5ndGggLSAxKSk7CiAgICAgfQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTYwMCw3ICs2MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFy
cmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBmb3IgKHVuc2lnbmVkIGsg
PSAwOyBrIDwgYWRkaXRpb25hbEFyZ3M7ICsraykKICAgICAgICAgdGhpc09iai0+cHV0KGV4ZWMs
IGsgKyBiZWdpbiwgZXhlYy0+YXJndW1lbnQoayArIDIpKTsKIAotICAgIHB1dFByb3BlcnR5KGV4
ZWMsIHRoaXNPYmosIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMs
IGxlbmd0aCAtIGRlbGV0ZUNvdW50ICsgYWRkaXRpb25hbEFyZ3MpKTsKKyAgICBwdXRQcm9wZXJ0
eShleGVjLCB0aGlzT2JqLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihs
ZW5ndGggLSBkZWxldGVDb3VudCArIGFkZGl0aW9uYWxBcmdzKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwogfQogCkBAIC02MjUsNyArNjI1LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQoRXhlY1N0YXRlKiBleGVjKQog
ICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbnJBcmdzOyArK2spCiAgICAgICAg
IHRoaXNPYmotPnB1dChleGVjLCBrLCBleGVjLT5hcmd1bWVudChrKSk7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihleGVjLCBsZW5ndGggKyBuckFyZ3MpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIobGVuZ3RoICsgbnJBcmdzKTsKICAgICBwdXRQcm9wZXJ0eShleGVjLCB0
aGlzT2JqLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCByZXN1bHQpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KQEAgLTY1Niw3ICs2NTYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRmlsdGVyKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IGFycmF5LT5nZXRJbmRleChrKTsKICAgICAgICAg
ICAgIGNhY2hlZENhbGwuc2V0VGhpcyhhcHBseVRoaXMpOwogICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRBcmd1bWVudCgwLCB2KTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQo
MSwganNOdW1iZXIoZXhlYywgaykpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVu
dCgxLCBqc051bWJlcihrKSk7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIs
IHRoaXNPYmopOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNh
Y2hlZENhbGwuY2FsbCgpOwpAQCAtNjc3LDcgKzY3Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNGaWx0ZXIoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwogCiAgICAgICAgIGVhY2hBcmd1bWVu
dHMuYXBwZW5kKHYpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihleGVj
LCBrKSk7CisgICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGspKTsKICAgICAg
ICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7CiAKICAgICAgICAgSlNWYWx1ZSByZXN1
bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGFwcGx5VGhpcywg
ZWFjaEFyZ3VtZW50cyk7CkBAIC03MTQsNyArNzE0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY01hcChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAgICAg
IGNhY2hlZENhbGwuc2V0VGhpcyhhcHBseVRoaXMpOwogICAgICAgICAgICAgY2FjaGVkQ2FsbC5z
ZXRBcmd1bWVudCgwLCBhcnJheS0+Z2V0SW5kZXgoaykpOwotICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRBcmd1bWVudCgxLCBqc051bWJlcihleGVjLCBrKSk7CisgICAgICAgICAgICBjYWNoZWRD
YWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVyKGspKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0QXJndW1lbnQoMiwgdGhpc09iaik7CiAKICAgICAgICAgICAgIHJlc3VsdEFycmF5LT5KU0Fy
cmF5OjpwdXQoZXhlYywgaywgY2FjaGVkQ2FsbC5jYWxsKCkpOwpAQCAtNzMwLDcgKzczMCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNNYXAoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwogCiAg
ICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKHYpOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFw
cGVuZChqc051bWJlcihleGVjLCBrKSk7CisgICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpz
TnVtYmVyKGspKTsKICAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7CiAKICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cyk7CkBAIC03NzEsNyArNzcxLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0V2ZXJ5KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRUaGlzKGFwcGx5
VGhpcyk7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDAsIGFycmF5LT5nZXRJ
bmRleChrKSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIGpzTnVtYmVy
KGV4ZWMsIGspKTsKKyAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwganNOdW1i
ZXIoaykpOwogICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCB0aGlzT2JqKTsK
ICAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FjaGVkQ2FsbC5jYWxsKCk7CiAgICAgICAg
ICAgICBpZiAoIXJlc3VsdC50b0Jvb2xlYW4oY2FjaGVkQ2FsbC5uZXdDYWxsRnJhbWUoZXhlYykp
KQpAQCAtNzg3LDcgKzc4Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGVhY2hBcmd1bWVudHM7CiAKICAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5n
ZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVy
KGV4ZWMsIGspKTsKKyAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwog
ICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKIAogICAgICAgICBib29sIHBy
ZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
YXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7CkBAIC04MjUsNyArODI1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0ZvckVhY2go
RXhlY1N0YXRlKiBleGVjKQogCiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBwbHlU
aGlzKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdldElu
ZGV4KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwganNOdW1iZXIo
ZXhlYywgaykpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgxLCBqc051bWJl
cihrKSk7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRoaXNPYmopOwog
CiAgICAgICAgICAgICBjYWNoZWRDYWxsLmNhbGwoKTsKQEAgLTgzOCw3ICs4MzgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKICAg
ICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5nZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAg
ICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGV4ZWMsIGspKTsKKyAgICAgICAgZWFj
aEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwogICAgICAgICBlYWNoQXJndW1lbnRzLmFw
cGVuZCh0aGlzT2JqKTsKIAogICAgICAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGFwcGx5VGhpcywgZWFjaEFyZ3VtZW50cyk7CkBAIC04NzIsNyArODcyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NvbWUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICAgICAgCiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldFRoaXMoYXBw
bHlUaGlzKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMCwgYXJyYXktPmdl
dEluZGV4KGspKTsKLSAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMSwganNOdW1i
ZXIoZXhlYywgaykpOworICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgxLCBqc051
bWJlcihrKSk7CiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIHRoaXNPYmop
OwogICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWNoZWRDYWxsLmNhbGwoKTsKICAgICAg
ICAgICAgIGlmIChyZXN1bHQudG9Cb29sZWFuKGNhY2hlZENhbGwubmV3Q2FsbEZyYW1lKGV4ZWMp
KSkKQEAgLTg4Niw3ICs4ODYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jU29tZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgZWFjaEFyZ3VtZW50czsKICAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoc2xvdC5n
ZXRWYWx1ZShleGVjLCBrKSk7Ci0gICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVy
KGV4ZWMsIGspKTsKKyAgICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoaykpOwog
ICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZCh0aGlzT2JqKTsKIAogICAgICAgICBib29sIHBy
ZWRpY2F0ZVJlc3VsdCA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
YXBwbHlUaGlzLCBlYWNoQXJndW1lbnRzKS50b0Jvb2xlYW4oZXhlYyk7CkBAIC05NDUsNyArOTQ1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYnJlYWs7
IC8vIGxlbmd0aCBoYXMgYmVlbiBtYWRlIHVuc2FmZSB3aGlsZSB3ZSBlbnVtZXJhdGUgZmFsbGJh
Y2sgdG8gc2xvdyBwYXRoCiAgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDEsIHYp
OwotICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1bWVudCgyLCBqc051bWJlcihleGVjLCBp
KSk7CisgICAgICAgICAgICBjYWNoZWRDYWxsLnNldEFyZ3VtZW50KDIsIGpzTnVtYmVyKGkpKTsK
ICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoMywgYXJyYXkpOwogICAgICAgICAg
ICAgcnYgPSBjYWNoZWRDYWxsLmNhbGwoKTsKICAgICAgICAgfQpAQCAtOTYxLDcgKzk2MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2UoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBlYWNoQXJndW1lbnRzOwog
ICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChydik7CiAgICAgICAgIGVhY2hBcmd1bWVudHMu
YXBwZW5kKHByb3ApOwotICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChqc051bWJlcihleGVj
LCBpKSk7CisgICAgICAgIGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGkpKTsKICAgICAg
ICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQodGhpc09iaik7CiAgICAgICAgIAogICAgICAgICBydiA9
IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwganNOdWxsKCksIGVhY2hB
cmd1bWVudHMpOwpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghYXJyYXktPmNhbkdldEluZGV4KGlkeCkpKQogICAgICAgICAgICAg
ICAgIGJyZWFrOyAvLyBsZW5ndGggaGFzIGJlZW4gbWFkZSB1bnNhZmUgd2hpbGUgd2UgZW51bWVy
YXRlIGZhbGxiYWNrIHRvIHNsb3cgcGF0aAogICAgICAgICAgICAgY2FjaGVkQ2FsbC5zZXRBcmd1
bWVudCgxLCBhcnJheS0+Z2V0SW5kZXgoaWR4KSk7Ci0gICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dEFyZ3VtZW50KDIsIGpzTnVtYmVyKGV4ZWMsIGlkeCkpOworICAgICAgICAgICAgY2FjaGVkQ2Fs
bC5zZXRBcmd1bWVudCgyLCBqc051bWJlcihpZHgpKTsKICAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0QXJndW1lbnQoMywgYXJyYXkpOwogICAgICAgICAgICAgcnYgPSBjYWNoZWRDYWxsLmNhbGwo
KTsKICAgICAgICAgfQpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgZWFjaEFyZ3VtZW50czsKICAgICAgICAgZWFjaEFyZ3Vt
ZW50cy5hcHBlbmQocnYpOwogICAgICAgICBlYWNoQXJndW1lbnRzLmFwcGVuZChwcm9wKTsKLSAg
ICAgICAgZWFjaEFyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoZXhlYywgaWR4KSk7CisgICAgICAg
IGVhY2hBcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKGlkeCkpOwogICAgICAgICBlYWNoQXJndW1l
bnRzLmFwcGVuZCh0aGlzT2JqKTsKICAgICAgICAgCiAgICAgICAgIHJ2ID0gY2FsbChleGVjLCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBqc051bGwoKSwgZWFjaEFyZ3VtZW50cyk7CkBA
IC0xMDUzLDEwICsxMDUzLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKCFlKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBz
ZWFyY2hFbGVtZW50LCBlKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoZXhlYywgaW5kZXgpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoaW5kZXgpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGV4ZWMsIC0xKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigt
MSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFz
dEluZGV4T2YoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTA2Nyw3ICsxMDY3LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHRoaXNPYmotPmdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50b1VJbnQzMihleGVjKTsKICAgICBpZiAoIWxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCAtMSkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKC0xKSk7CiAKICAgICB1bnNpZ25l
ZCBpbmRleCA9IGxlbmd0aCAtIDE7CiAgICAgSlNWYWx1ZSBmcm9tVmFsdWUgPSBleGVjLT5hcmd1
bWVudCgxKTsKQEAgLTEwNzYsNyArMTA3Niw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlm
IChmcm9tRG91YmxlIDwgMCkgewogICAgICAgICAgICAgZnJvbURvdWJsZSArPSBsZW5ndGg7CiAg
ICAgICAgICAgICBpZiAoZnJvbURvdWJsZSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCAtMSkpOworICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZnJvbURvdWJsZSA8IGxlbmd0aCkKICAgICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGZyb21Eb3VibGUpOwpAQCAtMTA4OSwxMCArMTA4OSwxMCBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKiBleGVj
KQogICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKEpT
VmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIHNlYXJjaEVsZW1lbnQsIGUpKQotICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCBpbmRleCkpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbmRleCkpOwogICAgIH0gd2hpbGUg
KGluZGV4LS0pOwogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCAt
MSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoLTEpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xl
YW5Db25zdHJ1Y3Rvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5jcHAKaW5kZXggOTUzYmRkY2ZmNTc3NjBlMGI3Yzc0NmI5MzM3ZjhhZmUzNjUwNjFiNC4u
MDE2N2UwMzdlNzM5MTk1NmVhYjI3OGEzNzFlM2NhYjZjMmU1MGEwMCAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcApAQCAtMzQsNyArMzQsNyBAQCBC
b29sZWFuQ29uc3RydWN0b3I6OkJvb2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIGJvb2xlYW5Qcm90b3R5cGUsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9y
IGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMSksIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwg
RG9udEVudW0pOwogfQogCiAvLyBFQ01BIDE1LjYuMgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaAppbmRleCAwNGY3ZjYyYWYw
NjgwNWQ3MDZiZTAwMzc2MjE1MmYyMGMwZTRjNDllLi42N2M3YWY4Yjk0MDVkZjE0MzViYzdlZTQ1
ZGI3Mzc5MzJlYjgyNDlkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hl
ZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaApAQCAtNTYsMTggKzU2LDE4IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgIGZhc3RGcmVlKG1fY2FjaGUpOwogICAgIH0KIAotICAgIEpTVmFsdWUgb3Bl
cmF0b3IoKSAoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgb3BlcmFuZCkKKyAgICBKU1ZhbHVlIG9w
ZXJhdG9yKCkgKGRvdWJsZSBvcGVyYW5kKQogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFt
X2NhY2hlKSkKICAgICAgICAgICAgIGluaXRpYWxpemUoKTsKICAgICAgICAgQ2FjaGVFbnRyeSog
ZW50cnkgPSAmbV9jYWNoZVtoYXNoKG9wZXJhbmQpXTsKIAogICAgICAgICBpZiAoZW50cnktPm9w
ZXJhbmQgPT0gb3BlcmFuZCkKLSAgICAgICAgICAgIHJldHVybiBqc0RvdWJsZU51bWJlcihleGVj
LCBlbnRyeS0+cmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBqc0RvdWJsZU51bWJlcihlbnRy
eS0+cmVzdWx0KTsKICAgICAgICAgZG91YmxlIHJlc3VsdCA9IG9yaWduYWxGdW5jdGlvbihvcGVy
YW5kKTsKICAgICAgICAgZW50cnktPm9wZXJhbmQgPSBvcGVyYW5kOwogICAgICAgICBlbnRyeS0+
cmVzdWx0ID0gcmVzdWx0OwotICAgICAgICByZXR1cm4ganNEb3VibGVOdW1iZXIoZXhlYywgcmVz
dWx0KTsKKyAgICAgICAgcmV0dXJuIGpzRG91YmxlTnVtYmVyKHJlc3VsdCk7CiAgICAgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwCmluZGV4
IDQ5ZTA0MDVjYzM1MTRjNjdhNGNkOTY4ZWFkMDBhMmM4NmQyMWNiOTQuLmRjYmUxMmRhMjM2MTc2
NzRhNzcyOGMxNzc5MjgzYWNhNzQzZGZhNjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRGF0ZUNvbnN0cnVjdG9yOjpEYXRl
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4
ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCA3LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuVVRDLCBkYXRlVVRDKSwg
RG9udEVudW0pOwogICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubm93LCBk
YXRlTm93KSwgRG9udEVudW0pOwogCi0gICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCA3KSwgUmVhZE9ubHkg
fCBEb250RW51bSB8IERvbnREZWxldGUpOworICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoNyksIFJlYWRPbmx5IHwg
RG9udEVudW0gfCBEb250RGVsZXRlKTsKIH0KIAogLy8gRUNNQSAxNS45LjMKQEAgLTE1OSwxMiAr
MTU5LDEyIEBAIENhbGxUeXBlIERhdGVDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEm
IGNhbGxEYXRhKQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUGFy
c2UoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIoZXhlYywgcGFyc2VEYXRlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMp
KSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VEYXRlKGV4ZWMs
IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSkpOwogfQogCi1zdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlTm93KEV4ZWNTdGF0ZSogZXhlYykKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVOb3coRXhlY1N0YXRlKikKIHsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIGpzQ3VycmVudFRpbWUoKSkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoanNDdXJyZW50VGltZSgpKSk7CiB9
CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRl
KiBleGVjKSAKQEAgLTE4Niw3ICsxODYsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlVVRDKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHx8IChuID49IDUg
JiYgaXNuYW4oZG91YmxlQXJndW1lbnRzWzRdKSkKICAgICAgICAgICAgIHx8IChuID49IDYgJiYg
aXNuYW4oZG91YmxlQXJndW1lbnRzWzVdKSkKICAgICAgICAgICAgIHx8IChuID49IDcgJiYgaXNu
YW4oZG91YmxlQXJndW1lbnRzWzZdKSkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOYU4oZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwog
CiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgdDsKICAgICBpbnQgeWVhciA9IEpTQzo6dG9JbnQzMihk
b3VibGVBcmd1bWVudHNbMF0pOwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVVVEMoRXhlY1N0YXRlKiBleGVjKQogICAgIHQubWludXRl
ID0gSlNDOjp0b0ludDMyKGRvdWJsZUFyZ3VtZW50c1s0XSk7CiAgICAgdC5zZWNvbmQgPSBKU0M6
OnRvSW50MzIoZG91YmxlQXJndW1lbnRzWzVdKTsKICAgICBkb3VibGUgbXMgPSAobiA+PSA3KSA/
IGRvdWJsZUFyZ3VtZW50c1s2XSA6IDA7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihleGVjLCB0aW1lQ2xpcChncmVnb3JpYW5EYXRlVGltZVRvTVMoZXhlYywgdCwgbXMsIHRy
dWUpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGltZUNsaXAoZ3Jl
Z29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIHQsIG1zLCB0cnVlKSkpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5j
ZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZS5jcHAKaW5kZXggYjQz
YjE4M2UyN2VhMzk3NDA2NmUxZTJkM2ZhYjc0ZDE2ZTg0ZDU1Yy4uODU2MmUyZDQ2Mzc2NmI2OWVk
NGRhODI2NDEwNjZmNzJjNDk3YzcyNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EYXRlSW5zdGFuY2UuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3Rh
bmNlLmNwcApAQCAtMzQsMjIgKzM0LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFz
c0luZm8gRGF0ZUluc3RhbmNlOjppbmZvID0geyJEYXRlIiwgMCwgMCwgMH07CiAKLURhdGVJbnN0
YW5jZTo6RGF0ZUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBzdHJ1Y3R1cmUpCitEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZShFeGVjU3RhdGUq
LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSkKICAgICA6IEpTV3JhcHBl
ck9iamVjdChzdHJ1Y3R1cmUpCiB7Ci0gICAgc2V0SW50ZXJuYWxWYWx1ZShqc05hTihleGVjKSk7
CisgICAgc2V0SW50ZXJuYWxWYWx1ZShqc05hTigpKTsKIH0KIAotRGF0ZUluc3RhbmNlOjpEYXRl
SW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0
cnVjdHVyZSwgZG91YmxlIHRpbWUpCitEYXRlSW5zdGFuY2U6OkRhdGVJbnN0YW5jZShFeGVjU3Rh
dGUqLCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgZG91YmxlIHRpbWUp
CiAgICAgOiBKU1dyYXBwZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldEludGVybmFsVmFs
dWUoanNOdW1iZXIoZXhlYywgdGltZUNsaXAodGltZSkpKTsKKyAgICBzZXRJbnRlcm5hbFZhbHVl
KGpzTnVtYmVyKHRpbWVDbGlwKHRpbWUpKSk7CiB9CiAKIERhdGVJbnN0YW5jZTo6RGF0ZUluc3Rh
bmNlKEV4ZWNTdGF0ZSogZXhlYywgZG91YmxlIHRpbWUpCiAgICAgOiBKU1dyYXBwZXJPYmplY3Qo
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5kYXRlU3RydWN0dXJlKCkpCiB7Ci0gICAgc2V0
SW50ZXJuYWxWYWx1ZShqc051bWJlcihleGVjLCB0aW1lQ2xpcCh0aW1lKSkpOworICAgIHNldElu
dGVybmFsVmFsdWUoanNOdW1iZXIodGltZUNsaXAodGltZSkpKTsKIH0KIAogY29uc3QgR3JlZ29y
aWFuRGF0ZVRpbWUqIERhdGVJbnN0YW5jZTo6Y2FsY3VsYXRlR3JlZ29yaWFuRGF0ZVRpbWUoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKaW5kZXggYzc1NWVlOTBiYzJmNTE4NWFkMDJmMDBmYmFhZTllMWY2ZTAwNmYwNi4uMDg1Y2Iz
M2MxNTQ2ODVkNTFlZDI2NjM1N2JhY2UzMWFiNTJlMjViZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC01ODUsOCArNTg1LDggQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0Rh
dGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oZXhlYykpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgMTkwMCArIGdyZWdvcmlhbkRhdGVU
aW1lLT55ZWFyKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigxOTAwICsgZ3JlZ29yaWFuRGF0ZVRp
bWUtPnllYXIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9G
dW5jR2V0VVRDRnVsbFllYXIoRXhlY1N0YXRlKiBleGVjKQpAQCAtNTk5LDggKzU5OSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0Z1bGxZZWFyKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5E
YXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKICAgICBp
ZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TmFOKGV4ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIDE5
MDAgKyBncmVnb3JpYW5EYXRlVGltZS0+eWVhcikpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTmFOKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMTkw
MCArIGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZGF0ZVByb3RvRnVuY1RvR01UU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTYz
MSw4ICs2MzEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRNb250aChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSog
Z3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7
CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05hTihleGVjKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihl
eGVjLCBncmVnb3JpYW5EYXRlVGltZS0+bW9udGgpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc05hTigpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdy
ZWdvcmlhbkRhdGVUaW1lLT5tb250aCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNb250aChFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NDUsOCAr
NjQ1LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRD
TW9udGgoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdy
ZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMp
OwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOYU4oZXhlYykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
ZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWUtPm1vbnRoKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOYU4oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihn
cmVnb3JpYW5EYXRlVGltZS0+bW9udGgpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02NTksOCArNjU5
LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFu
RGF0ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CiAgICAgaWYg
KCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05h
TihleGVjKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCBncmVn
b3JpYW5EYXRlVGltZS0+bW9udGhEYXkpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05hTigpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlh
bkRhdGVUaW1lLT5tb250aERheSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENEYXRlKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTY3Myw4ICs2NzMs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENEYXRl
KEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3Jp
YW5EYXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKICAg
ICBpZiAoIWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKGV4ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMs
IGdyZWdvcmlhbkRhdGVUaW1lLT5tb250aERheSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTmFOKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3Jl
Z29yaWFuRGF0ZVRpbWUtPm1vbnRoRGF5KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZGF0ZVByb3RvRnVuY0dldERheShFeGVjU3RhdGUqIGV4ZWMpCkBAIC02ODcsOCArNjg3
LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0RGF5KEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5E
YXRlVGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAo
IWdyZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFO
KGV4ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIGdyZWdv
cmlhbkRhdGVUaW1lLT53ZWVrRGF5KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOYU4oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5E
YXRlVGltZS0+d2Vla0RheSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRVVENEYXkoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzAxLDggKzcwMSw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ0RheShFeGVj
U3RhdGUqIGV4ZWMpCiAKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0
ZVRpbWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEMoZXhlYyk7CiAgICAgaWYg
KCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05h
TihleGVjKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCBncmVn
b3JpYW5EYXRlVGltZS0+d2Vla0RheSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWUtPndlZWtEYXkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBk
YXRlUHJvdG9GdW5jR2V0SG91cnMoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzE1LDggKzcxNSw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldEhvdXJzKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRl
VGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAoIWdy
ZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKGV4
ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIGdyZWdvcmlh
bkRhdGVUaW1lLT5ob3VyKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4o
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGlt
ZS0+aG91cikpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1
bmNHZXRVVENIb3VycyhFeGVjU3RhdGUqIGV4ZWMpCkBAIC03MjksOCArNzI5LDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VVRDSG91cnMoRXhlY1N0YXRl
KiBleGVjKQogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1l
ID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgIGlmICghZ3Jl
Z29yaWFuRGF0ZVRpbWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oZXhl
YykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgZ3JlZ29yaWFu
RGF0ZVRpbWUtPmhvdXIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigp
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1l
LT5ob3VyKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVu
Y0dldE1pbnV0ZXMoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzQzLDggKzc0Myw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldE1pbnV0ZXMoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0g
dGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOwogICAgIGlmICghZ3JlZ29yaWFu
RGF0ZVRpbWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oZXhlYykpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgZ3JlZ29yaWFuRGF0ZVRp
bWUtPm1pbnV0ZSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWUtPm1p
bnV0ZSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNH
ZXRVVENNaW51dGVzKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTc1Nyw4ICs3NTcsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNHZXRVVENNaW51dGVzKEV4ZWNTdGF0
ZSogZXhlYykKIAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRlVGlt
ZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhleGVjKTsKICAgICBpZiAoIWdy
ZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKGV4
ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIGdyZWdvcmlh
bkRhdGVUaW1lLT5taW51dGUpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05h
TigpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVU
aW1lLT5taW51dGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJv
dG9GdW5jR2V0U2Vjb25kcyhFeGVjU3RhdGUqIGV4ZWMpCkBAIC03NzEsOCArNzcxLDggQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0U2Vjb25kcyhFeGVjU3Rh
dGUqIGV4ZWMpCiAKICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRp
bWUgPSB0aGlzRGF0ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoZXhlYyk7CiAgICAgaWYgKCFncmVn
b3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTihleGVj
KSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCBncmVnb3JpYW5E
YXRlVGltZS0+c2Vjb25kKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4o
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGlt
ZS0+c2Vjb25kKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3Rv
RnVuY0dldFVUQ1NlY29uZHMoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzg1LDggKzc4NSw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ1NlY29uZHMoRXhl
Y1N0YXRlKiBleGVjKQogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRh
dGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRDKGV4ZWMpOwogICAgIGlm
ICghZ3JlZ29yaWFuRGF0ZVRpbWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
YU4oZXhlYykpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgZ3Jl
Z29yaWFuRGF0ZVRpbWUtPnNlY29uZCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZ3JlZ29yaWFu
RGF0ZVRpbWUtPnNlY29uZCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRh
dGVQcm90b0Z1bmNHZXRNaWxsaVNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQpAQCAtNzk4LDExICs3
OTgsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0TWls
bGlTZWNvbmRzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBEYXRlSW5zdGFuY2UqIHRoaXNEYXRlT2Jq
ID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsgCiAgICAgZG91YmxlIG1pbGxpID0gdGhpc0Rh
dGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKGlzbmFuKG1pbGxpKSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTihleGVjKSk7CisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOYU4oKSk7CiAKICAgICBkb3VibGUgc2VjcyA9IGZsb29yKG1pbGxpIC8g
bXNQZXJTZWNvbmQpOwogICAgIGRvdWJsZSBtcyA9IG1pbGxpIC0gc2VjcyAqIG1zUGVyU2Vjb25k
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgbXMpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKG1zKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFVUQ01pbGxpc2Vjb25kcyhFeGVjU3RhdGUq
IGV4ZWMpCkBAIC04MTQsMTEgKzgxNCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGRhdGVQcm90b0Z1bmNHZXRVVENNaWxsaXNlY29uZHMoRXhlY1N0YXRlKiBleGVjKQogICAgIERh
dGVJbnN0YW5jZSogdGhpc0RhdGVPYmogPSBhc0RhdGVJbnN0YW5jZSh0aGlzVmFsdWUpOyAKICAg
ICBkb3VibGUgbWlsbGkgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsKICAgICBpZiAo
aXNuYW4obWlsbGkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKGV4ZWMp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKIAogICAgIGRvdWJs
ZSBzZWNzID0gZmxvb3IobWlsbGkgLyBtc1BlclNlY29uZCk7CiAgICAgZG91YmxlIG1zID0gbWls
bGkgLSBzZWNzICogbXNQZXJTZWNvbmQ7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihleGVjLCBtcykpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobXMp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jR2V0VGlt
ZXpvbmVPZmZzZXQoRXhlY1N0YXRlKiBleGVjKQpAQCAtODMxLDggKzgzMSw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFRpbWV6b25lT2Zmc2V0KEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIGNvbnN0IEdyZWdvcmlhbkRhdGVUaW1lKiBncmVnb3JpYW5EYXRl
VGltZSA9IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShleGVjKTsKICAgICBpZiAoIWdy
ZWdvcmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKGV4
ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIC1ncmVnb3Jp
YW5EYXRlVGltZS0+dXRjT2Zmc2V0IC8gbWludXRlc1BlckhvdXIpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKC1ncmVnb3JpYW5EYXRlVGltZS0+dXRjT2Zmc2V0IC8gbWludXRlc1BlckhvdXIpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShF
eGVjU3RhdGUqIGV4ZWMpCkBAIC04NDQsNyArODQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBkYXRlUHJvdG9GdW5jU2V0VGltZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRGF0ZUlu
c3RhbmNlKiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7IAogCiAgICAg
ZG91YmxlIG1pbGxpID0gdGltZUNsaXAoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykp
OwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgbWlsbGkpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIobWlsbGkpOwogICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5h
bFZhbHVlKHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQpA
QCAtODU5LDcgKzg1OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21U
aW1lQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgZG91YmxlIG1p
bGxpID0gdGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgCiAgICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkgfHwgaXNuYW4obWlsbGkpKSB7Ci0gICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOYU4oZXhlYyk7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOYU4oKTsKICAg
ICAgICAgdGhpc0RhdGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogICAgIH0KQEAgLTg3MSwxNyArODcxLDE3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1ZUZyb21UaW1lQXJncyhFeGVjU3RhdGUq
IGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAgICAgICAgID8gdGhpc0RhdGVPYmotPmdyZWdvcmlh
bkRhdGVUaW1lVVRDKGV4ZWMpCiAgICAgICAgIDogdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVU
aW1lKGV4ZWMpOwogICAgIGlmICghb3RoZXIpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOYU4oZXhlYykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkp
OwogCiAgICAgR3JlZ29yaWFuRGF0ZVRpbWUgZ3JlZ29yaWFuRGF0ZVRpbWU7CiAgICAgZ3JlZ29y
aWFuRGF0ZVRpbWUuY29weUZyb20oKm90aGVyKTsKICAgICBpZiAoIWZpbGxTdHJ1Y3R1cmVzVXNp
bmdUaW1lQXJncyhleGVjLCBudW1BcmdzVG9Vc2UsICZtcywgJmdyZWdvcmlhbkRhdGVUaW1lKSkg
ewotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKGV4ZWMpOworICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzTmFOKCk7CiAgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVl
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9
IAogICAgIAotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgZ3JlZ29yaWFuRGF0
ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdy
ZWdvcmlhbkRhdGVUaW1lLCBtcywgaW5wdXRJc1VUQykpOwogICAgIHRoaXNEYXRlT2JqLT5zZXRJ
bnRlcm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OwogfQpAQCAtODk0LDcgKzg5NCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBzZXROZXdWYWx1
ZUZyb21EYXRlQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBudW1BcmdzVG9Vc2UsCiAKICAgICBE
YXRlSW5zdGFuY2UqIHRoaXNEYXRlT2JqID0gYXNEYXRlSW5zdGFuY2UodGhpc1ZhbHVlKTsKICAg
ICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgewotICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzTmFOKGV4ZWMpOworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7CiAgICAgICAg
IHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9ICAgICAgCkBAIC05MTEsMTcgKzkxMSwxNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0ZUFyZ3MoRXhlY1N0YXRl
KiBleGVjLCBpbnQgbnVtQXJnc1RvVXNlLAogICAgICAgICAgICAgPyB0aGlzRGF0ZU9iai0+Z3Jl
Z29yaWFuRGF0ZVRpbWVVVEMoZXhlYykKICAgICAgICAgICAgIDogdGhpc0RhdGVPYmotPmdyZWdv
cmlhbkRhdGVUaW1lKGV4ZWMpOwogICAgICAgICBpZiAoIW90aGVyKQotICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTihleGVjKSk7CisgICAgICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogICAgICAgICBncmVnb3JpYW5EYXRlVGltZS5jb3B5RnJv
bSgqb3RoZXIpOwogICAgIH0KICAgICAKICAgICBpZiAoIWZpbGxTdHJ1Y3R1cmVzVXNpbmdEYXRl
QXJncyhleGVjLCBudW1BcmdzVG9Vc2UsICZtcywgJmdyZWdvcmlhbkRhdGVUaW1lKSkgewotICAg
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKGV4ZWMpOworICAgICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGpzTmFOKCk7CiAgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHJlc3Vs
dCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKICAgICB9IAogICAg
ICAgICAgICAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGV4ZWMsIGdyZWdvcmlhbkRh
dGVUaW1lVG9NUyhleGVjLCBncmVnb3JpYW5EYXRlVGltZSwgbXMsIGlucHV0SXNVVEMpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVUaW1lVG9NUyhleGVjLCBn
cmVnb3JpYW5EYXRlVGltZSwgbXMsIGlucHV0SXNVVEMpKTsKICAgICB0aGlzRGF0ZU9iai0+c2V0
SW50ZXJuYWxWYWx1ZShyZXN1bHQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKIH0KQEAgLTEwMTgsNyArMTAxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZGF0ZVByb3RvRnVuY1NldFllYXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgRGF0ZUluc3RhbmNl
KiB0aGlzRGF0ZU9iaiA9IGFzRGF0ZUluc3RhbmNlKHRoaXNWYWx1ZSk7ICAgICAKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkgeyAKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05h
TihleGVjKTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05hTigpOwogICAgICAgICB0aGlz
RGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQpAQCAtMTA0MCwxMyArMTA0MCwxMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNTZXRZZWFyKEV4ZWNTdGF0ZSogZXhl
YykKICAgICAKICAgICBkb3VibGUgeWVhciA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvSW50ZWdlclBy
ZXNlcnZlTmFOKGV4ZWMpOwogICAgIGlmICghaXNmaW5pdGUoeWVhcikpIHsKLSAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBqc05hTihleGVjKTsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc05h
TigpOwogICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZShyZXN1bHQpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiAgICAgfQogICAgICAgICAgICAg
CiAgICAgZ3JlZ29yaWFuRGF0ZVRpbWUueWVhciA9IHRvSW50MzIoKHllYXIgPiA5OSB8fCB5ZWFy
IDwgMCkgPyB5ZWFyIC0gMTkwMCA6IHllYXIpOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoZXhlYywgZ3JlZ29yaWFuRGF0ZVRpbWVUb01TKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLCBt
cywgZmFsc2UpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGdyZWdvcmlhbkRhdGVU
aW1lVG9NUyhleGVjLCBncmVnb3JpYW5EYXRlVGltZSwgbXMsIGZhbHNlKSk7CiAgICAgdGhpc0Rh
dGVPYmotPnNldEludGVybmFsVmFsdWUocmVzdWx0KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CkBAIC0xMDYxLDEwICsxMDYxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZGF0ZVByb3RvRnVuY0dldFllYXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
Y29uc3QgR3JlZ29yaWFuRGF0ZVRpbWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmot
PmdyZWdvcmlhbkRhdGVUaW1lKGV4ZWMpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRpbWUpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oZXhlYykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKCkpOwogCiAgICAgLy8gTk9URTogSUUgcmV0dXJucyB0
aGUgZnVsbCB5ZWFyIGV2ZW4gaW4gZ2V0WWVhci4KLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGV4ZWMsIGdyZWdvcmlhbkRhdGVUaW1lLT55ZWFyKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihncmVnb3JpYW5EYXRlVGltZS0+eWVhcikpOwogfQogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1bmNUb0pTT04oRXhlY1N0YXRl
KiBleGVjKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCA2YjI3ZDdkYWUxOTdlZTg1NGIw
ZWExNTM4MDVjMzVlZDc5MDYyOTY4Li5mZDk3YmViMDg1NDhjODI4ODBiZGQ5ZmZhZDY1MjEwNWY4
NjhhOTcyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtMTI1LDE5ICsxMjUsMTkgQEAg
c3RhdGljIHZvaWQgYWRkRXJyb3JTb3VyY2VJbmZvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
SlNPYmplY3QqIGVycm9yLCBpbnQgbGkKICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VVUkwgPSBz
b3VyY2UucHJvdmlkZXIoKS0+dXJsKCk7CiAKICAgICBpZiAobGluZSAhPSAtMSkKLSAgICAgICAg
ZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFsRGF0
YSwgbGluZVByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGdsb2JhbERhdGEsIGxpbmUpLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFs
RGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBsaW5lUHJvcGVydHlOYW1lKSwganNOdW1iZXIo
bGluZSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKHNvdXJjZUlEICE9IC0xKQot
ICAgICAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihn
bG9iYWxEYXRhLCBzb3VyY2VJZFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGdsb2JhbERhdGEsIChk
b3VibGUpc291cmNlSUQpLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBlcnJvci0+
cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBzb3Vy
Y2VJZFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKChkb3VibGUpc291cmNlSUQpLCBSZWFkT25seSB8
IERvbnREZWxldGUpOwogICAgIGlmICghc291cmNlVVJMLmlzTnVsbCgpKQogICAgICAgICBlcnJv
ci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBz
b3VyY2VVUkxQcm9wZXJ0eU5hbWUpLCBqc1N0cmluZyhnbG9iYWxEYXRhLCBzb3VyY2VVUkwpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwogfQogCiBzdGF0aWMgdm9pZCBhZGRFcnJvckRpdm90SW5m
byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBlcnJvciwgaW50IGRpdm90UG9p
bnQsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgYm9vbCB3aXRoQ2FyZXQpCiB7Ci0g
ICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFs
RGF0YSwgZXhwcmVzc2lvbkJlZ2luT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZ2xvYmFs
RGF0YSwgZGl2b3RQb2ludCAtIHN0YXJ0T2Zmc2V0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
LSAgICBlcnJvci0+cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9i
YWxEYXRhLCBleHByZXNzaW9uRW5kT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZ2xvYmFs
RGF0YSwgZGl2b3RQb2ludCArIGVuZE9mZnNldCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Cisg
ICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFs
RGF0YSwgZXhwcmVzc2lvbkJlZ2luT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZGl2b3RQ
b2ludCAtIHN0YXJ0T2Zmc2V0KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICBlcnJvci0+
cHV0V2l0aEF0dHJpYnV0ZXMoZ2xvYmFsRGF0YSwgSWRlbnRpZmllcihnbG9iYWxEYXRhLCBleHBy
ZXNzaW9uRW5kT2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZGl2b3RQb2ludCArIGVuZE9m
ZnNldCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CiAgICAgaWYgKHdpdGhDYXJldCkKLSAgICAg
ICAgZXJyb3ItPnB1dFdpdGhBdHRyaWJ1dGVzKGdsb2JhbERhdGEsIElkZW50aWZpZXIoZ2xvYmFs
RGF0YSwgZXhwcmVzc2lvbkNhcmV0T2Zmc2V0UHJvcGVydHlOYW1lKSwganNOdW1iZXIoZ2xvYmFs
RGF0YSwgZGl2b3RQb2ludCksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGVycm9y
LT5wdXRXaXRoQXR0cmlidXRlcyhnbG9iYWxEYXRhLCBJZGVudGlmaWVyKGdsb2JhbERhdGEsIGV4
cHJlc3Npb25DYXJldE9mZnNldFByb3BlcnR5TmFtZSksIGpzTnVtYmVyKGRpdm90UG9pbnQpLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOwogfQogCiBKU09iamVjdCogYWRkRXJyb3JJbmZvKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckNvbnN0cnVjdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYTA4NzRkNGE3MjIwMzYxYzkxYjU0ZGJmYzhlYjhlMzEyNDZhMTU0Ni4uNDMy
NmE0ZGYyMzM4YmNjZTk0YTA1MTZkNGI1NGM4M2YwZjEzNGJkMyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBAIEVycm9yQ29u
c3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiB7CiAgICAgLy8gRUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBl
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgZXJyb3JQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5
KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCku
bGVuZ3RoLCBqc051bWJlcihleGVjLCAxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CiB9CiAKIC8vIEVDTUEgMTUuOS4zCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcAppbmRleCBiYzIxNThlYjNjZDE2ZGE0YzkzYzhlOTdkM2ExZjE1MjBi
NDNhYzY3Li40NWI0ODAyM2Y4MGViZDZkYTcyMTQ1MmQ4ODhhYjI2N2RmN2Q0ZmM0IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTQzLDcg
KzQzLDcgQEAgRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6RnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBmdW5jdGlvblByb3RvdHlw
ZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwogCiAgICAgLy8gTnVtYmVyIG9m
IGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVjLCAxKSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdFdpdGhGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhl
YykKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKaW5kZXgg
ZWY0MmNkYzZlNjhhZjQ3YjE2MTJiZWI5ZWQxODViNzMyMWVjMDM3MC4uY2Q3NzM5ZDE5Y2Y3Yjg4
NzZmY2U3MTJjMDE2MjA4N2YwOWRiZjUzYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKEV4ZWNTdGF0ZSopOwogRnVu
Y3Rpb25Qcm90b3R5cGU6OkZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
Y3R1cmUpCiAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKCZleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIp
CiB7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwganNOdW1iZXIoZXhlYywgMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubGVuZ3RoLCBqc051bWJlcigwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQogCiB2b2lkIEZ1bmN0aW9uUHJvdG90eXBlOjphZGRGdW5jdGlvblByb3BlcnRpZXMoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCBOYXRpdmVGdW5jdGlvbldyYXBwZXIqKiBjYWxsRnVu
Y3Rpb24sIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcioqIGFwcGx5RnVuY3Rpb24pCmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmNwcAppbmRleCBkYWU4MDdmN2M2YWNhODllMzk3ODM5NmE3NTZkMTNiNTA3
M2Q4Nzc0Li5mOTM4NGVjMWFhZWVkY2ExOWY4OGQ3MWRkMDYyNjEwYmQ3Mzg2YmVkIDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCBib29sIEpTQXJyYXk6
OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGksIFByb3BlcnR5
U2xvdCYgc2xvdAogYm9vbCBKU0FycmF5OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKLSAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051bWJlcihleGVjLCBsZW5ndGgoKSkpOworICAg
ICAgICBzbG90LnNldFZhbHVlKGpzTnVtYmVyKGxlbmd0aCgpKSk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIApAQCAtMjkzLDcgKzI5Myw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJv
cGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
CiBib29sIEpTQXJyYXk6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCkgewotICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoanNOdW1iZXIoZXhl
YywgbGVuZ3RoKCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0pOworICAgICAgICBkZXNjcmlwdG9y
LnNldERlc2NyaXB0b3IoanNOdW1iZXIobGVuZ3RoKCkpLCBEb250RGVsZXRlIHwgRG9udEVudW0p
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5
dGVBcnJheS5jcHAKaW5kZXggODg1MTljZmI4MDUxZWM1ZjhkMDczY2UwMDFhYzcyYTU3NDcwMGZi
MS4uNmFmOWQ3NWYxMzRlYjk1OWZjMGI3OTg4YzRkMmVlN2NiOGNkMWM5YyAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0J5dGVBcnJheS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNCeXRlQXJyYXk6
OkpTQnl0ZUFycmF5KEV4ZWNTdGF0ZSogZXhlYywgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1Y3R1cmUKICAgICAsIG1fc3RvcmFnZShzdG9yYWdlKQogICAgICwgbV9jbGFzc0luZm8o
Y2xhc3NJbmZvKQogewotICAgIHB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcihleGVjLCBtX3N0b3JhZ2UtPmxlbmd0aCgpKSwgUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIobV9zdG9yYWdlLT5sZW5ndGgoKSksIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSk7CiB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggZTlhNmM2NGYyNDQ3NzJlNmQ0ZDNiYTc5M2FkN2ViYzY2
ZjhjZTg3Zi4uMmVhOWQyOTUzYjM2ODFhZjA2OTI2NWNhODc3NjdjOGUyN2FhZDRhZiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaApAQCAtMzYsMTAgKzM2LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIHB1YmxpYzoK
ICAgICAgICAgYm9vbCBjYW5BY2Nlc3NJbmRleCh1bnNpZ25lZCBpKSB7IHJldHVybiBpIDwgbV9z
dG9yYWdlLT5sZW5ndGgoKTsgfQotICAgICAgICBKU1ZhbHVlIGdldEluZGV4KEV4ZWNTdGF0ZSog
ZXhlYywgdW5zaWduZWQgaSkKKyAgICAgICAgSlNWYWx1ZSBnZXRJbmRleChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY2FuQWNjZXNzSW5kZXgo
aSkpOwotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIG1fc3RvcmFnZS0+ZGF0YSgp
W2ldKTsKKyAgICAgICAgICAgIHJldHVybiBqc051bWJlcihtX3N0b3JhZ2UtPmRhdGEoKVtpXSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHNldEluZGV4KHVuc2lnbmVkIGksIGludCB2YWx1
ZSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IGZkYWE1MDk5YjEyYzg5
Yjk1M2VlMmQ5OWI0ZjgyZDlkYmFmYzgwNTEuLjA2OTdmYzNlNDVhZTliYzFmZmFhNmQ2NTQ5YmE4
NmY3MzhmNDM2NzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNzQs
NyArNzQsNyBAQCBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhcwogICAgICwgbV9zY29wZUNoYWluKGds
b2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpKQogewogICAgIHB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSwganNTdHJpbmcoZXhlYywgbmFtZS5pc051
bGwoKSA/ICIiIDogbmFtZS51c3RyaW5nKCkpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKGV4ZWMsIGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAg
ICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIobGVuZ3Ro
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogI2VuZGlmCiAKQEAgLTg3
LDcgKzg3LDcgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vbk51bGxQYXMKIHsKICAgICBwdXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzU3RyaW5nKGV4ZWMsIG5hbWUu
aXNOdWxsKCkgPyAiIiA6IG5hbWUudXN0cmluZygpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOwogI2lmIEVOQUJMRShKSVQpCi0gICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFk
T25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIobGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obGVuZ3RoKTsKICAgICBVTlVTRURfUEFSQU0oZnVu
Yyk7CkBAIC0xOTIsMTEgKzE5MiwxMSBAQCBKU1ZhbHVlIEpTRnVuY3Rpb246OmNhbGxlckdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aQogICAgIHJl
dHVybiBleGVjLT5pbnRlcnByZXRlcigpLT5yZXRyaWV2ZUNhbGxlcihleGVjLCB0aGlzT2JqKTsK
IH0KIAotSlNWYWx1ZSBKU0Z1bmN0aW9uOjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgSlNGdW5jdGlvbjo6
bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZp
ZXImKQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmogPSBhc0Z1bmN0aW9uKHNsb3RCYXNlKTsK
ICAgICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIHJldHVybiBqc051
bWJlcihleGVjLCB0aGlzT2JqLT5qc0V4ZWN1dGFibGUoKS0+cGFyYW1ldGVyQ291bnQoKSk7Cisg
ICAgcmV0dXJuIGpzTnVtYmVyKHRoaXNPYmotPmpzRXhlY3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3Vu
dCgpKTsKIH0KIAogYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xv
dCkKQEAgLTI2Niw3ICsyNjYsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBybwogICAgIH0KICAg
ICAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgp
IHsKLSAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKGV4ZWMsIGpzRXhl
Y3V0YWJsZSgpLT5wYXJhbWV0ZXJDb3VudCgpKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnRE
ZWxldGUpOworICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoanNOdW1iZXIoanNFeGVj
dXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNWE2Mzc3NDBmYmE4YmIxNWYzZjVjZWQ2
YzQ0ZTBmOWM4NDAwNjE4Ny4uYThmYjdiZjFlYTY4MGQxNjk2ODM1YzA5NTY0N2NhMmI4OTc3ZDI3
NiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMwMSw4
ICszMDEsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkK
ICAgICAvLyBTZXQgZ2xvYmFsIHZhbHVlcy4KICAgICBHbG9iYWxQcm9wZXJ0eUluZm8gc3RhdGlj
R2xvYmFsc1tdID0gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRpZmllcihleGVj
LCAiTWF0aCIpLCBuZXcgKGV4ZWMpIE1hdGhPYmplY3QoZXhlYywgdGhpcywgTWF0aE9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSksIERvbnRFbnVtIHwgRG9udERl
bGV0ZSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJOYU4i
KSwganNOYU4oZXhlYyksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIkluZmluaXR5IiksIGpzTnVt
YmVyKGV4ZWMsIEluZiksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKKyAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKElkZW50aWZpZXIoZXhlYywgIk5hTiIpLCBqc05hTigpLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyhJZGVudGlmaWVyKGV4ZWMsICJJbmZpbml0eSIpLCBqc051bWJlcihJbmYpLCBEb250RW51
bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJ
ZGVudGlmaWVyKGV4ZWMsICJ1bmRlZmluZWQiKSwganNVbmRlZmluZWQoKSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRlbnRp
ZmllcihleGVjLCAiSlNPTiIpLCBuZXcgKGV4ZWMpIEpTT05PYmplY3QodGhpcywgSlNPTk9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+b2JqZWN0UHJvdG90eXBlKSksIERvbnRFbnVtIHwgRG9u
dERlbGV0ZSkKICAgICB9OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCBlZDA2ZmE1Njk5ZTMxOGI5MzZkN2U0OGVmNzE4NmM1
MmI3Yjg5NzQzLi5kMTQ2ZTg3MGQ3YWQ3YzExMmIwMDdhNzY3Y2MyZDUwOTgyMGU1Mjc1IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cApAQCAtNDY0LDcgKzQ2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2xvYmFs
RnVuY1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpbnQzMl90IHJhZGl4ID0gZXhlYy0+
YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKIAogICAgIGlmIChyYWRpeCAhPSAwICYmIHJhZGl4
ICE9IDEwKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIHBh
cnNlSW50KHZhbHVlLnRvU3RyaW5nKGV4ZWMpLCByYWRpeCkpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZUludCh2YWx1ZS50b1N0cmluZyhleGVjKSwgcmFk
aXgpKSk7CiAKICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHZhbHVlKTsKQEAgLTQ3MiwxOCArNDcyLDE4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1BhcnNlSW50KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAo
dmFsdWUuaXNEb3VibGUoKSkgewogICAgICAgICBkb3VibGUgZCA9IHZhbHVlLmFzRG91YmxlKCk7
CiAgICAgICAgIGlmIChpc2Zpbml0ZShkKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOdW1iZXIoZXhlYywgKGQgPiAwKSA/IGZsb29yKGQpIDogY2VpbChkKSkpOworICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcigoZCA+IDApID8gZmxvb3Io
ZCkgOiBjZWlsKGQpKSk7CiAgICAgICAgIGlmIChpc25hbihkKSB8fCBpc2luZihkKSkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oZXhlYykpOwotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIDApKTsKKyAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoMCkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoZXhlYywgcGFyc2VJbnQodmFsdWUudG9TdHJpbmcoZXhlYyksIHJhZGl4KSkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGFyc2VJbnQodmFsdWUudG9TdHJpbmco
ZXhlYyksIHJhZGl4KSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNQYXJzZUZsb2F0KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIHBhcnNlRmxvYXQoZXhlYy0+YXJndW1lbnQoMCkudG9TdHJp
bmcoZXhlYykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwYXJzZUZs
b2F0KGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpKSkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNJc05hTihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5oIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU051bWJlckNlbGwuaAppbmRleCBhMjVjNTMxY2JlNTM2MThhYTNiNjIx
Y2ExZmY5MGNiNzAxZmM1M2Y4Li4wMDQwMDY3N2YxYzdkZDI2MGNhMzAxNDhmNDYyNTNlOGNkNDQx
MmYzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTnVtYmVyQ2VsbC5oCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOdW1iZXJDZWxsLmgKQEAgLTM2LDgxICszNiw2
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBleHRlcm4gY29uc3QgZG91YmxlIEluZjsKIAogI2lm
IFVTRShKU1ZBTFVFNjQpCi0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVuY29k
ZUFzRG91YmxlVGFnLCBFeGVjU3RhdGUqLCBkb3VibGUgZCkKKyAgICBBTFdBWVNfSU5MSU5FIEpT
VmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQogICAgIHsKICAgICAg
ICAgKnRoaXMgPSBKU0ltbWVkaWF0ZTo6ZnJvbU51bWJlck91dHNpZGVJbnRlZ2VyUmFuZ2UoZCk7
CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoRXhlY1N0YXRlKiwgZG91Ymxl
IGQpCisgICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoZG91YmxlIGQpCiAgICAgewogICAgICAg
ICBKU1ZhbHVlIHYgPSBKU0ltbWVkaWF0ZTo6ZnJvbShkKTsKICAgICAgICAgQVNTRVJUKHYpOwog
ICAgICAgICAqdGhpcyA9IHY7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
RXhlY1N0YXRlKiwgaW50IGkpCisgICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoaW50IGkpCiAg
ICAgewogICAgICAgICBKU1ZhbHVlIHYgPSBKU0ltbWVkaWF0ZTo6ZnJvbShpKTsKICAgICAgICAg
QVNTRVJUKHYpOwogICAgICAgICAqdGhpcyA9IHY7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoRXhlY1N0YXRlKiwgdW5zaWduZWQgaSkKKyAgICBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZSh1bnNpZ25lZCBpKQogICAgIHsKICAgICAgICAgSlNWYWx1ZSB2ID0gSlNJbW1lZGlh
dGU6OmZyb20oaSk7CiAgICAgICAgIEFTU0VSVCh2KTsKICAgICAgICAgKnRoaXMgPSB2OwogICAg
IH0KIAotICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEV4ZWNTdGF0ZSosIGxvbmcgaSkKKyAg
ICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGkpCiAgICAgewogICAgICAgICBKU1ZhbHVl
IHYgPSBKU0ltbWVkaWF0ZTo6ZnJvbShpKTsKICAgICAgICAgQVNTRVJUKHYpOwogICAgICAgICAq
dGhpcyA9IHY7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoRXhlY1N0YXRl
KiwgdW5zaWduZWQgbG9uZyBpKQorICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVk
IGxvbmcgaSkKICAgICB7CiAgICAgICAgIEpTVmFsdWUgdiA9IEpTSW1tZWRpYXRlOjpmcm9tKGkp
OwogICAgICAgICBBU1NFUlQodik7CiAgICAgICAgICp0aGlzID0gdjsKICAgICB9CiAKLSAgICBp
bmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShFeGVjU3RhdGUqLCBsb25nIGxvbmcgaSkKKyAgICBpbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZShsb25nIGxvbmcgaSkKICAgICB7CiAgICAgICAgIEpTVmFsdWUg
diA9IEpTSW1tZWRpYXRlOjpmcm9tKHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOwogICAgICAgICBB
U1NFUlQodik7CiAgICAgICAgICp0aGlzID0gdjsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNWYWx1
ZTo6SlNWYWx1ZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIGxvbmcgaSkKKyAgICBpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBsb25nIGxvbmcgaSkKICAgICB7CiAgICAgICAgIEpT
VmFsdWUgdiA9IEpTSW1tZWRpYXRlOjpmcm9tKHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOwogICAg
ICAgICBBU1NFUlQodik7CiAgICAgICAgICp0aGlzID0gdjsKICAgICB9CiAKLSAgICBpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShKU0dsb2JhbERhdGEqLCBkb3VibGUgZCkKLSAgICB7Ci0gICAgICAg
IEpTVmFsdWUgdiA9IEpTSW1tZWRpYXRlOjpmcm9tKGQpOwotICAgICAgICBBU1NFUlQodik7Ci0g
ICAgICAgICp0aGlzID0gdjsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShK
U0dsb2JhbERhdGEqLCBpbnQgaSkKLSAgICB7Ci0gICAgICAgIEpTVmFsdWUgdiA9IEpTSW1tZWRp
YXRlOjpmcm9tKGkpOwotICAgICAgICBBU1NFUlQodik7Ci0gICAgICAgICp0aGlzID0gdjsKLSAg
ICB9Ci0KLSAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0dsb2JhbERhdGEqLCB1bnNpZ25l
ZCBpKQotICAgIHsKLSAgICAgICAgSlNWYWx1ZSB2ID0gSlNJbW1lZGlhdGU6OmZyb20oaSk7Ci0g
ICAgICAgIEFTU0VSVCh2KTsKLSAgICAgICAgKnRoaXMgPSB2OwotICAgIH0KLQogICAgIGlubGlu
ZSBib29sIEpTVmFsdWU6OmlzRG91YmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBK
U0ltbWVkaWF0ZTo6aXNEb3VibGUoYXNWYWx1ZSgpKTsKQEAgLTEzNiw0NSArMTE1LDQwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIAotICAgIGlubGluZSBKU1ZhbHVl
OjpKU1ZhbHVlKEV4ZWNTdGF0ZSosIGNoYXIgaSkKKyAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShjaGFyIGkpCiAgICAgewogICAgICAgICBBU1NFUlQoSlNJbW1lZGlhdGU6OmZyb20oaSkpOwog
ICAgICAgICAqdGhpcyA9IEpTSW1tZWRpYXRlOjpmcm9tKGkpOwogICAgIH0KIAotICAgIGlubGlu
ZSBKU1ZhbHVlOjpKU1ZhbHVlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNoYXIgaSkKKyAgICBpbmxp
bmUgSlNWYWx1ZTo6SlNWYWx1ZSh1bnNpZ25lZCBjaGFyIGkpCiAgICAgewogICAgICAgICBBU1NF
UlQoSlNJbW1lZGlhdGU6OmZyb20oaSkpOwogICAgICAgICAqdGhpcyA9IEpTSW1tZWRpYXRlOjpm
cm9tKGkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEV4ZWNTdGF0ZSos
IHNob3J0IGkpCisgICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoc2hvcnQgaSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChKU0ltbWVkaWF0ZTo6ZnJvbShpKSk7CiAgICAgICAgICp0aGlzID0gSlNJ
bW1lZGlhdGU6OmZyb20oaSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUo
RXhlY1N0YXRlKiwgdW5zaWduZWQgc2hvcnQgaSkKKyAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZSh1bnNpZ25lZCBzaG9ydCBpKQogICAgIHsKICAgICAgICAgQVNTRVJUKEpTSW1tZWRpYXRlOjpm
cm9tKGkpKTsKICAgICAgICAgKnRoaXMgPSBKU0ltbWVkaWF0ZTo6ZnJvbShpKTsKICAgICB9CiAK
LSAgICBpbmxpbmUgSlNWYWx1ZSBqc05hTihFeGVjU3RhdGUqIGV4ZWMpCi0gICAgewotICAgICAg
ICByZXR1cm4ganNOdW1iZXIoZXhlYywgTmFOKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNWYWx1
ZSBqc05hTihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgaW5saW5lIEpTVmFsdWUganNO
YU4oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGdsb2JhbERhdGEsIE5hTik7Cisg
ICAgICAgIHJldHVybiBqc051bWJlcihOYU4pOwogICAgIH0KIAogICAgIC8vIC0tLSBKU1ZhbHVl
IGlubGluZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIEpTVmFsdWU6OnRvSlNOdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
IHsKLSAgICAgICAgcmV0dXJuIGlzTnVtYmVyKCkgPyBhc1ZhbHVlKCkgOiBqc051bWJlcihleGVj
LCB0aGlzLT50b051bWJlcihleGVjKSk7CisgICAgICAgIHJldHVybiBpc051bWJlcigpID8gYXNW
YWx1ZSgpIDoganNOdW1iZXIodGhpcy0+dG9OdW1iZXIoZXhlYykpOwogICAgIH0KIAogICAgIGlu
bGluZSBib29sIEpTVmFsdWU6OmdldE51bWJlcihkb3VibGUgJnJlc3VsdCkgY29uc3QKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IGJiZGNiZDQyZTY2NjI5MDQzMTlkNDU0
NDU1NjYzODAxYTA0MWZhM2MuLmI1NDc3YTEyM2U2ZjJhNWQ1MDk2NzM5ZGM5OWEwYjVjMTdjMDg3
YTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMTMzLDcgKzEzMyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSB1bndyYXBCb3hlZFByaW1pdGl2ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZO
dW1iZXJPYmplY3Q6OmluZm8pKQotICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgb2JqZWN0
LT50b051bWJlcihleGVjKSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihvYmplY3QtPnRvTnVt
YmVyKGV4ZWMpKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0cygmU3RyaW5nT2JqZWN0OjppbmZv
KSkKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIG9iamVjdC0+dG9TdHJpbmcoZXhlYykp
OwogICAgIGlmIChvYmplY3QtPmluaGVyaXRzKCZCb29sZWFuT2JqZWN0OjppbmZvKSkKQEAgLTE4
OSw3ICsxODksNyBAQCBKU1ZhbHVlIFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6dmFsdWUo
RXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgICAgICBpZiAobV9pZGVudGlmaWVyKQogICAgICAg
ICAgICAgbV92YWx1ZSA9IGpzU3RyaW5nKGV4ZWMsIG1faWRlbnRpZmllci0+dXN0cmluZygpKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV92YWx1ZSA9IGpzTnVtYmVyKGV4ZWMsIG1fbnVt
YmVyKTsKKyAgICAgICAgICAgIG1fdmFsdWUgPSBqc051bWJlcihtX251bWJlcik7CiAgICAgfQog
ICAgIHJldHVybiBtX3ZhbHVlOwogfQpAQCAtODY4LDcgKzg2OCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMpCiAK
IFVTdHJpbmcgSlNPTlN0cmluZ2lmeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGluZGVudCkKIHsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lmaWVyKGV4ZWMs
IGpzTnVsbCgpLCBqc051bWJlcihleGVjLCBpbmRlbnQpKS5zdHJpbmdpZnkodmFsdWUpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gU3RyaW5naWZpZXIoZXhlYywganNOdWxsKCksIGpzTnVtYmVyKGlu
ZGVudCkpLnN0cmluZ2lmeSh2YWx1ZSk7CiAgICAgaWYgKHJlc3VsdC5pc1VuZGVmaW5lZE9yTnVs
bCgpKQogICAgICAgICByZXR1cm4gVVN0cmluZygpOwogICAgIHJldHVybiByZXN1bHQuZ2V0U3Ry
aW5nKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAppbmRleCBiYzAxMjBmNDAy
NWM1ZDk4ZTI1YmI5ZmMyOTg1ZWFkZjg3ZTBkZWVmLi4zNDBhODk4M2JlYjhlOGJlZGRkYmQwZmIx
MWQ0NzMyZDQwN2VkOGIyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcApAQCAtMjM2
LDcgKzIzNiw3IEBAIGJvb2wgSlNTdHJpbmc6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtCiBib29sIEpTU3RyaW5nOjpnZXRT
dHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBp
ZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKLSAgICAg
ICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKGpzTnVtYmVyKGV4ZWMsIG1fbGVuZ3RoKSwgRG9u
dEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgICAgICBkZXNjcmlwdG9yLnNldERl
c2NyaXB0b3IoanNOdW1iZXIobV9sZW5ndGgpLCBEb250RW51bSB8IERvbnREZWxldGUgfCBSZWFk
T25seSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAppbmRleCAxMmNlZDEwZGU2MmFkMDZmODA0MDAwYzk5NDAzZDk1ODA4MzY2OTA5
Li43MTAxZDE2MzU1NmVmZTJiYjY3YjAzY2ZkNzkwY2UzYWJjNzE1ZGE2IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCkBAIC01NTksNyArNTU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
QUxXQVlTX0lOTElORSBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQcm9wZXJ0eVNsb3QoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYg
c2xvdCkKICAgICB7CiAgICAgICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkgewotICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051bWJlcihleGVj
LCBtX2xlbmd0aCkpOworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051bWJlcihtX2xlbmd0
aCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaAppbmRleCBiNWRjYmVjZjM3ZDI2ZmQ0OTMxNmUyMDg0MzNiNzY4MTU4YmRiY2Ez
Li4wNTYwYmMwZDc4MjYzYjVjODQyYTViMzg1MGQzMmM1NzAxZTRiMWYwIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuaApAQCAtMTAxLDIxICsxMDEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTVmFsdWUoY29uc3QgSlNDZWxsKiBwdHIpOwogCiAgICAgICAgIC8vIE51bWJlcnMKLSAg
ICAgICAgSlNWYWx1ZShFbmNvZGVBc0RvdWJsZVRhZywgRXhlY1N0YXRlKiwgZG91YmxlKTsKLSAg
ICAgICAgSlNWYWx1ZShFeGVjU3RhdGUqLCBkb3VibGUpOwotICAgICAgICBKU1ZhbHVlKEV4ZWNT
dGF0ZSosIGNoYXIpOwotICAgICAgICBKU1ZhbHVlKEV4ZWNTdGF0ZSosIHVuc2lnbmVkIGNoYXIp
OwotICAgICAgICBKU1ZhbHVlKEV4ZWNTdGF0ZSosIHNob3J0KTsKLSAgICAgICAgSlNWYWx1ZShF
eGVjU3RhdGUqLCB1bnNpZ25lZCBzaG9ydCk7Ci0gICAgICAgIEpTVmFsdWUoRXhlY1N0YXRlKiwg
aW50KTsKLSAgICAgICAgSlNWYWx1ZShFeGVjU3RhdGUqLCB1bnNpZ25lZCk7Ci0gICAgICAgIEpT
VmFsdWUoRXhlY1N0YXRlKiwgbG9uZyk7Ci0gICAgICAgIEpTVmFsdWUoRXhlY1N0YXRlKiwgdW5z
aWduZWQgbG9uZyk7Ci0gICAgICAgIEpTVmFsdWUoRXhlY1N0YXRlKiwgbG9uZyBsb25nKTsKLSAg
ICAgICAgSlNWYWx1ZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBsb25nIGxvbmcpOwotICAgICAgICBK
U1ZhbHVlKEpTR2xvYmFsRGF0YSosIGRvdWJsZSk7Ci0gICAgICAgIEpTVmFsdWUoSlNHbG9iYWxE
YXRhKiwgaW50KTsKLSAgICAgICAgSlNWYWx1ZShKU0dsb2JhbERhdGEqLCB1bnNpZ25lZCk7Cisg
ICAgICAgIEpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSk7CisgICAgICAgIGV4cGxp
Y2l0IEpTVmFsdWUoZG91YmxlKTsKKyAgICAgICAgZXhwbGljaXQgSlNWYWx1ZShjaGFyKTsKKyAg
ICAgICAgZXhwbGljaXQgSlNWYWx1ZSh1bnNpZ25lZCBjaGFyKTsKKyAgICAgICAgZXhwbGljaXQg
SlNWYWx1ZShzaG9ydCk7CisgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgc2hvcnQp
OworICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGludCk7CisgICAgICAgIGV4cGxpY2l0IEpTVmFs
dWUodW5zaWduZWQpOworICAgICAgICBleHBsaWNpdCBKU1ZhbHVlKGxvbmcpOworICAgICAgICBl
eHBsaWNpdCBKU1ZhbHVlKHVuc2lnbmVkIGxvbmcpOworICAgICAgICBleHBsaWNpdCBKU1ZhbHVl
KGxvbmcgbG9uZyk7CisgICAgICAgIGV4cGxpY2l0IEpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25n
KTsKIAogICAgICAgICBvcGVyYXRvciBib29sKCkgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBKU1ZhbHVlJiBvdGhlcikgY29uc3Q7CkBAIC0yOTQsNzkgKzI5MSw2NCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIGIgPyBKU1ZhbHVlKEpTVmFsdWU6OkpTVHJ1
ZSkgOiBKU1ZhbHVlKEpTVmFsdWU6OkpTRmFsc2UpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJ
TkUgSlNWYWx1ZSBqc0RvdWJsZU51bWJlcihFeGVjU3RhdGUqIGV4ZWMsIGRvdWJsZSBkKQorICAg
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc0RvdWJsZU51bWJlcihkb3VibGUgZCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBKU1ZhbHVlKEpTVmFsdWU6OkVuY29kZUFzRG91YmxlLCBleGVjLCBkKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIGQpOwogICAg
IH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihFeGVjU3RhdGUqIGV4ZWMs
IGRvdWJsZSBkKQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihkb3VibGUgZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKGV4ZWMsIGQpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZShkKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIo
RXhlY1N0YXRlKiBleGVjLCBjaGFyIGkpCisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVt
YmVyKGNoYXIgaSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKGV4ZWMsIGkpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZShpKTsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUganNOdW1iZXIoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBjaGFyIGkpCisgICAgQUxXQVlT
X0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVkIGNoYXIgaSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBKU1ZhbHVlKGV4ZWMsIGkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZShpKTsKICAg
ICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoRXhlY1N0YXRlKiBleGVj
LCBzaG9ydCBpKQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihzaG9ydCBpKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWUoZXhlYywgaSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlKGkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihF
eGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHNob3J0IGkpCisgICAgQUxXQVlTX0lOTElORSBKU1Zh
bHVlIGpzTnVtYmVyKHVuc2lnbmVkIHNob3J0IGkpCiAgICAgewotICAgICAgICByZXR1cm4gSlNW
YWx1ZShleGVjLCBpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoaSk7CiAgICAgfQogCi0gICAg
QUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgaW50IGkpCisg
ICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGludCBpKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWUoZXhlYywgaSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAg
IH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcihFeGVjU3RhdGUqIGV4ZWMs
IHVuc2lnbmVkIGkpCisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKHVuc2lnbmVk
IGkpCiAgICAgewotICAgICAgICByZXR1cm4gSlNWYWx1ZShleGVjLCBpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoaSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVt
YmVyKEV4ZWNTdGF0ZSogZXhlYywgbG9uZyBpKQorICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBq
c051bWJlcihsb25nIGkpCiAgICAgewotICAgICAgICByZXR1cm4gSlNWYWx1ZShleGVjLCBpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWUoaSk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBK
U1ZhbHVlIGpzTnVtYmVyKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbG9uZyBpKQorICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBsb25nIGkpCiAgICAgewotICAg
ICAgICByZXR1cm4gSlNWYWx1ZShleGVjLCBpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoaSk7
CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKEV4ZWNTdGF0ZSog
ZXhlYywgbG9uZyBsb25nIGkpCisgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKGxv
bmcgbG9uZyBpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWUoZXhlYywgaSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1
ZSBqc051bWJlcihFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGxvbmcgbG9uZyBpKQorICAgIEFM
V0FZU19JTkxJTkUgSlNWYWx1ZSBqc051bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgaSkKICAgICB7
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKGV4ZWMsIGkpOwotICAgIH0KLQotICAgIEFMV0FZU19J
TkxJTkUgSlNWYWx1ZSBqc051bWJlcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGRvdWJsZSBk
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWUoZ2xvYmFsRGF0YSwgZCk7Ci0gICAgfQot
Ci0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGpzTnVtYmVyKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGkpCi0gICAgewotICAgICAgICByZXR1cm4gSlNWYWx1ZShnbG9iYWxEYXRhLCBp
KTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNOdW1iZXIoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCB1bnNpZ25lZCBpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWUoZ2xvYmFsRGF0YSwgaSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlKGkpOwogICAgIH0KIAog
ICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSlNWYWx1ZSBhLCBjb25zdCBKU0NlbGwq
IGIpIHsgcmV0dXJuIGEgPT0gSlNWYWx1ZShiKTsgfQpAQCAtMzk3LDkgKzM3OSw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIH0KIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgaW5saW5lIEpT
VmFsdWUganNOYU4oRXhlY1N0YXRlKiBleGVjKQorICAgIGlubGluZSBKU1ZhbHVlIGpzTmFOKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlKGV4ZWMsIG5vbklubGluZU5hTigpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWUobm9uSW5saW5lTmFOKCkpOwogICAgIH0KIAogICAgIC8vIEpT
VmFsdWUgbWVtYmVyIGZ1bmN0aW9ucy4KQEAgLTU3MywxMTUgKzU1NSw5MCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4odS5hc0JpdHMu
cGF5bG9hZCk7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlOjpKU1ZhbHVlKEVu
Y29kZUFzRG91YmxlVGFnLCBFeGVjU3RhdGUqLCBkb3VibGUgZCkKKyAgICBBTFdBWVNfSU5MSU5F
IEpTVmFsdWU6OkpTVmFsdWUoRW5jb2RlQXNEb3VibGVUYWcsIGRvdWJsZSBkKQogICAgIHsKICAg
ICAgICAgdS5hc0RvdWJsZSA9IGQ7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCBkb3VibGUgZCkKKyAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1
ZShkb3VibGUgZCkKICAgICB7CiAgICAgICAgIGNvbnN0IGludDMyX3QgYXNJbnQzMiA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KGQpOwogICAgICAgICBpZiAoYXNJbnQzMiAhPSBkIHx8ICghYXNJbnQz
MiAmJiBzaWduYml0KGQpKSkgeyAvLyB0cnVlIGZvciAtMC4wCiAgICAgICAgICAgICB1LmFzRG91
YmxlID0gZDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqdGhpcyA9
IEpTVmFsdWUoZXhlYywgc3RhdGljX2Nhc3Q8aW50MzJfdD4oZCkpOworICAgICAgICAqdGhpcyA9
IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oZCkpOwogICAgIH0KIAotICAgIGlubGluZSBK
U1ZhbHVlOjpKU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgY2hhciBpKQorICAgIGlubGluZSBKU1Zh
bHVlOjpKU1ZhbHVlKGNoYXIgaSkKICAgICB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShleGVj
LCBzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7CisgICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0
aWNfY2FzdDxpbnQzMl90PihpKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFs
dWUoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBjaGFyIGkpCisgICAgaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUodW5zaWduZWQgY2hhciBpKQogICAgIHsKLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVl
KGV4ZWMsIHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKKyAgICAgICAgKnRoaXMgPSBKU1ZhbHVl
KHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNWYWx1ZTo6
SlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIHNob3J0IGkpCisgICAgaW5saW5lIEpTVmFsdWU6OkpT
VmFsdWUoc2hvcnQgaSkKICAgICB7Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShleGVjLCBzdGF0
aWNfY2FzdDxpbnQzMl90PihpKSk7CisgICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2Fz
dDxpbnQzMl90PihpKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFsdWU6OkpTVmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCB1bnNpZ25lZCBzaG9ydCBpKQorICAgIGlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKHVuc2lnbmVkIHNob3J0IGkpCiAgICAgewotICAgICAgICAqdGhpcyA9IEpTVmFsdWUoZXhl
Yywgc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworICAgICAgICAqdGhpcyA9IEpTVmFsdWUoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oaSkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1ZhbHVlOjpKU1Zh
bHVlKEV4ZWNTdGF0ZSosIGludCBpKQorICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGludCBp
KQogICAgIHsKICAgICAgICAgdS5hc0JpdHMudGFnID0gSW50MzJUYWc7CiAgICAgICAgIHUuYXNC
aXRzLnBheWxvYWQgPSBpOwogICAgIH0KIAotICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaSkKKyAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZSh1
bnNpZ25lZCBpKQogICAgIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpIDwg
MCkgewotICAgICAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKGV4ZWMsIHN0YXRpY19jYXN0PGRvdWJs
ZT4oaSkpOworICAgICAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGRvdWJsZT4o
aSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgICp0aGlzID0gSlNW
YWx1ZShleGVjLCBzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7CisgICAgICAgICp0aGlzID0gSlNW
YWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90PihpKSk7CiAgICAgfQogCi0gICAgaW5saW5lIEpTVmFs
dWU6OkpTVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBsb25nIGkpCisgICAgaW5saW5lIEpTVmFsdWU6
OkpTVmFsdWUobG9uZyBpKQogICAgIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+
KGkpICE9IGkpIHsKLSAgICAgICAgICAgICp0aGlzID0gSlNWYWx1ZShleGVjLCBzdGF0aWNfY2Fz
dDxkb3VibGU+KGkpKTsKKyAgICAgICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxk
b3VibGU+KGkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqdGhp
cyA9IEpTVmFsdWUoZXhlYywgc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworICAgICAgICAqdGhp
cyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwogICAgIH0KIAotICAgIGlubGlu
ZSBKU1ZhbHVlOjpKU1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbG9uZyBpKQorICAg
IGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKHVuc2lnbmVkIGxvbmcgaSkKICAgICB7CiAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oaSkgIT0gaSkgewotICAgICAgICAgICAgKnRoaXMg
PSBKU1ZhbHVlKGV4ZWMsIHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOworICAgICAgICAgICAgKnRo
aXMgPSBKU1ZhbHVlKHN0YXRpY19jYXN0PGRvdWJsZT4oaSkpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShleGVjLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4oaSkpOworICAgICAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGkpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIGxvbmcgbG9uZyBpKQorICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKGxvbmcgbG9u
ZyBpKQogICAgIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludDMyX3Q+KGkpICE9IGkpIHsK
LSAgICAgICAgICAgICp0aGlzID0gSlNWYWx1ZShleGVjLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkp
KTsKKyAgICAgICAgICAgICp0aGlzID0gSlNWYWx1ZShzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICAqdGhpcyA9IEpTVmFsdWUo
ZXhlYywgc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOworICAgICAgICAqdGhpcyA9IEpTVmFsdWUo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkpOwogICAgIH0KIAotICAgIGlubGluZSBKU1ZhbHVlOjpK
U1ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgbG9uZyBsb25nIGkpCisgICAgaW5saW5l
IEpTVmFsdWU6OkpTVmFsdWUodW5zaWduZWQgbG9uZyBsb25nIGkpCiAgICAgewogICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGkpICE9IGkpIHsKLSAgICAgICAgICAgICp0aGlzID0g
SlNWYWx1ZShleGVjLCBzdGF0aWNfY2FzdDxkb3VibGU+KGkpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotICAgICAgICAqdGhpcyA9IEpTVmFsdWUoZXhlYywgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGkpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgSlNWYWx1ZTo6SlNWYWx1ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGRvdWJsZSBkKQotICAgIHsKLSAgICAgICAgY29uc3QgaW50
MzJfdCBhc0ludDMyID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oZCk7Ci0gICAgICAgIGlmIChhc0lu
dDMyICE9IGQgfHwgKCFhc0ludDMyICYmIHNpZ25iaXQoZCkpKSB7IC8vIHRydWUgZm9yIC0wLjAK
LSAgICAgICAgICAgIHUuYXNEb3VibGUgPSBkOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgICAgICp0aGlzID0gSlNWYWx1ZShnbG9iYWxEYXRhLCBzdGF0aWNfY2FzdDxpbnQz
Ml90PihkKSk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSBKU1ZhbHVlOjpKU1ZhbHVlKEpTR2xv
YmFsRGF0YSosIGludCBpKQotICAgIHsKLSAgICAgICAgdS5hc0JpdHMudGFnID0gSW50MzJUYWc7
Ci0gICAgICAgIHUuYXNCaXRzLnBheWxvYWQgPSBpOwotICAgIH0KLSAgICAKLSAgICBpbmxpbmUg
SlNWYWx1ZTo6SlNWYWx1ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHVuc2lnbmVkIGkpCi0g
ICAgewotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4oaSkgPCAwKSB7Ci0gICAgICAg
ICAgICAqdGhpcyA9IEpTVmFsdWUoZ2xvYmFsRGF0YSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7
CisgICAgICAgICAgICAqdGhpcyA9IEpTVmFsdWUoc3RhdGljX2Nhc3Q8ZG91YmxlPihpKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgKnRoaXMgPSBKU1ZhbHVlKGds
b2JhbERhdGEsIHN0YXRpY19jYXN0PGludDMyX3Q+KGkpKTsKKyAgICAgICAgKnRoaXMgPSBKU1Zh
bHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihpKSk7CiAgICAgfQogCiAgICAgaW5saW5lIGJvb2wg
SlNWYWx1ZTo6aXNOdW1iZXIoKSBjb25zdApAQCAtNzIyLDcgKzY3OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIEpTVmFsdWU6OnRvSlNOdW1iZXIoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzTnVtYmVyKCkgPyBh
c1ZhbHVlKCkgOiBqc051bWJlcihleGVjLCB0aGlzLT50b051bWJlcihleGVjKSk7CisgICAgICAg
IHJldHVybiBpc051bWJlcigpID8gYXNWYWx1ZSgpIDoganNOdW1iZXIodGhpcy0+dG9OdW1iZXIo
ZXhlYykpOwogICAgIH0KIAogICAgIGlubGluZSBib29sIEpTVmFsdWU6OmdldE51bWJlcihkb3Vi
bGUmIHJlc3VsdCkgY29uc3QKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0
ZXJhbFBhcnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CmluZGV4IGYxZGYxNWZkOTJjMWY0MDllNDhlMzI0MGQwNmYxYmUwMmVlNmE3NDUuLmVkNjlmNGRi
MjdmOGVjMDcxY2E0OTNlZTllNjlkNWYzNTJlYjRiYmQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtMzkzLDcgKzM5Myw3IEBAIEpTVmFsdWUgTGl0ZXJhbFBh
cnNlcjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAgICAg
ICBjYXNlIFRva051bWJlcjogewogICAgICAgICAgICAgICAgICAgICAgICAgTGV4ZXI6OkxpdGVy
YWxQYXJzZXJUb2tlbiBudW1iZXJUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2xleGVyLm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxhc3RWYWx1ZSA9IGpzTnVtYmVyKG1fZXhlYywgbnVtYmVyVG9rZW4ubnVtYmVyVG9rZW4p
OworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0ganNOdW1iZXIobnVtYmVyVG9r
ZW4ubnVtYmVyVG9rZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY2FzZSBUb2tOdWxsOgpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAKaW5kZXggOGQyYWUyZGQ0Mjg3MGFjOGU1MTQxZTgz
YmI2NTQ1YWE5ZjdmMmMwZC4uMDgwZDdkMjFlOTE0ZTQyOGEzNTBjODQxMjAzZmM0YTE5ODZlOWMw
OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCkBAIC04OSwxNCArODksMTQg
QEAgY29uc3QgQ2xhc3NJbmZvIE1hdGhPYmplY3Q6OmluZm8gPSB7ICJNYXRoIiwgMCwgMCwgRXhl
Y1N0YXRlOjptYXRoVGFibGUgfTsKIE1hdGhPYmplY3Q6Ok1hdGhPYmplY3QoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBOb25OdWxsUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSkKICAgICA6IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSkKIHsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVu
dGlmaWVyKGV4ZWMsICJFIiksIGpzTnVtYmVyKGV4ZWMsIGV4cCgxLjApKSwgRG9udERlbGV0ZSB8
IERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElk
ZW50aWZpZXIoZXhlYywgIkxOMiIpLCBqc051bWJlcihleGVjLCBsb2coMi4wKSksIERvbnREZWxl
dGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihJZGVudGlmaWVyKGV4ZWMsICJMTjEwIiksIGpzTnVtYmVyKGV4ZWMsIGxvZygxMC4wKSksIERv
bnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cyRSIpLCBqc051bWJlcihleGVjLCAxLjAgLyBs
b2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKLSAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVyKGV4ZWMsICJMT0cxMEUiKSwganNOdW1iZXIo
ZXhlYywgMS4wIC8gbG9nKDEwLjApKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlBJIiks
IGpzTnVtYmVyKGV4ZWMsIHBpRG91YmxlKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9u
bHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIoZXhlYywgIlNR
UlQxXzIiKSwganNOdW1iZXIoZXhlYywgc3FydCgwLjUpKSwgRG9udERlbGV0ZSB8IERvbnRFbnVt
IHwgUmVhZE9ubHkpOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZpZXIo
ZXhlYywgIlNRUlQyIiksIGpzTnVtYmVyKGV4ZWMsIHNxcnQoMi4wKSksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVu
dGlmaWVyKGV4ZWMsICJFIiksIGpzTnVtYmVyKGV4cCgxLjApKSwgRG9udERlbGV0ZSB8IERvbnRF
bnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKElkZW50aWZp
ZXIoZXhlYywgIkxOMiIpLCBqc051bWJlcihsb2coMi4wKSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVy
KGV4ZWMsICJMTjEwIiksIGpzTnVtYmVyKGxvZygxMC4wKSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVudGlmaWVy
KGV4ZWMsICJMT0cyRSIpLCBqc051bWJlcigxLjAgLyBsb2coMi4wKSksIERvbnREZWxldGUgfCBE
b250RW51bSB8IFJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihJZGVu
dGlmaWVyKGV4ZWMsICJMT0cxMEUiKSwganNOdW1iZXIoMS4wIC8gbG9nKDEwLjApKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKElkZW50aWZpZXIoZXhlYywgIlBJIiksIGpzTnVtYmVyKHBpRG91YmxlKSwgRG9udERlbGV0
ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KElkZW50aWZpZXIoZXhlYywgIlNRUlQxXzIiKSwganNOdW1iZXIoc3FydCgwLjUpKSwgRG9udERl
bGV0ZSB8IERvbnRFbnVtIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKElkZW50aWZpZXIoZXhlYywgIlNRUlQyIiksIGpzTnVtYmVyKHNxcnQoMi4wKSksIERvbnRE
ZWxldGUgfCBEb250RW51bSB8IFJlYWRPbmx5KTsKIH0KIAogLy8gRUNNQSAxNS44CkBAIC0xMTUs
NTQgKzExNSw1NCBAQCBib29sIE1hdGhPYmplY3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBybwogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNBYnMoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgZmFicyhleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGZhYnMoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FDb3MoRXhlY1N0YXRlKiBleGVjKQog
ewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoZXhlYywgYWNvcyhl
eGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGFjb3MoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FT
aW4oRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3Vi
bGVOdW1iZXIoZXhlYywgYXNpbihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGFzaW4oZXhlYy0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgbWF0aFByb3RvRnVuY0FUYW4oRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoZXhlYywgYXRhbihleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91Ymxl
TnVtYmVyKGF0YW4oZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY0FUYW4yKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBkb3VibGUgYXJnMCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpOwogICAgIGRvdWJsZSBhcmcxID0gZXhlYy0+YXJndW1lbnQoMSkudG9OdW1iZXIoZXhlYyk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcihleGVjLCBhdGFuMihh
cmcwLCBhcmcxKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIo
YXRhbjIoYXJnMCwgYXJnMSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jQ2VpbChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihleGVjLCBjZWlsKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoY2VpbChleGVjLT5h
cmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYXRoUHJvdG9GdW5jQ29zKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGV4ZWMsIGNvcyhleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91Ymxl
TnVtYmVyKGNvcyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGV4ZWMsIGV4
cChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGV4cChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihl
eGVjKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5j
Rmxvb3IoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
dW1iZXIoZXhlYywgZmxvb3IoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihmbG9vcihleGVjLT5hcmd1bWVudCgw
KS50b051bWJlcihleGVjKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBt
YXRoUHJvdG9GdW5jTG9nKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGV4ZWMsIGxvZyhleGVjLT5hcmd1bWVudCgwKS50b051bWJl
cihleGVjKSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGxv
ZyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jTWF4KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE3
OCw3ICsxNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNN
YXgoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBpZiAodmFsID4gcmVzdWx0IHx8ICh2YWwgPT0g
MCAmJiByZXN1bHQgPT0gMCAmJiAhc2lnbmJpdCh2YWwpKSkKICAgICAgICAgICAgIHJlc3VsdCA9
IHZhbDsKICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCBy
ZXN1bHQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHJlc3VsdCkpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNNaW4oRXhlY1N0
YXRlKiBleGVjKQpAQCAtMTk0LDcgKzE5NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgbWF0aFByb3RvRnVuY01pbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGlmICh2YWwgPCBy
ZXN1bHQgfHwgKHZhbCA9PSAwICYmIHJlc3VsdCA9PSAwICYmIHNpZ25iaXQodmFsKSkpCiAgICAg
ICAgICAgICByZXN1bHQgPSB2YWw7CiAgICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOdW1iZXIoZXhlYywgcmVzdWx0KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihyZXN1bHQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJv
dG9GdW5jUG93KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTIwNSwzNyArMjA1LDM3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1BvdyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgZG91YmxlIGFyZzIgPSBleGVjLT5hcmd1bWVudCgxKS50b051bWJlcihleGVjKTsKIAogICAg
IGlmIChpc25hbihhcmcyKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTihl
eGVjKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgaWYg
KGlzaW5mKGFyZzIpICYmIGZhYnMoYXJnKSA9PSAxKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTmFOKGV4ZWMpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KGV4ZWMsIHBvdyhhcmcsIGFyZzIpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOYU4oKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwb3coYXJnLCBh
cmcyKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNS
YW5kb20oRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNE
b3VibGVOdW1iZXIoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT53ZWFrUmFuZG9t
TnVtYmVyKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+d2Vha1JhbmRvbU51bWJlcigpKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1JvdW5kKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBkb3VibGUgYXJnID0gZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
Yyk7CiAgICAgZG91YmxlIGludGVnZXIgPSBjZWlsKGFyZyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcihleGVjLCBpbnRlZ2VyIC0gKGludGVnZXIgLSBhcmcgPiAwLjUpKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihpbnRlZ2VyIC0gKGludGVnZXIg
LSBhcmcgPiAwLjUpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY1NpbihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT5nbG9iYWxEYXRhKCkuY2FjaGVkU2luKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRv
TnVtYmVyKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxE
YXRhKCkuY2FjaGVkU2luKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NxcnQoRXhlY1N0YXRl
KiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNEb3VibGVOdW1iZXIoZXhl
Yywgc3FydChleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKHNxcnQoZXhlYy0+YXJndW1lbnQoMCkudG9O
dW1iZXIoZXhlYykpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFBy
b3RvRnVuY1RhbihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0RvdWJsZU51bWJlcihleGVjLCB0YW4oZXhlYy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhl
YykpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0RvdWJsZU51bWJlcih0YW4oZXhl
Yy0+YXJndW1lbnQoMCkudG9OdW1iZXIoZXhlYykpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggMzFmOWJjMzg5ZGIyNmNjOTExMDhhZTAyYmI3ZDlmODE4NmQzYzFkOS4uZWI1MDhl
YmQzYTg4YWJlZGQ2MmVhZjk0M2JmMTdlZTQyYWUwMGQxNCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBA
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I6Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCoKIHsKICAgICBOYXRpdmVFcnJvclByb3RvdHlwZSogcHJv
dG90eXBlID0gbmV3IChleGVjKSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZVN0cnVjdHVyZSwgbmFtZUFuZE1lc3NhZ2UsIHRoaXMpOwogCi0gICAgcHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDEpLCBE
b250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CisgICAg
cHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDEpLCBEb250
RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7IC8vIEVDTUEgMTUuMTEuNy41CiAgICAgcHV0
RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIG1fZXJyb3JTdHJ1Y3R1cmUgPSBFcnJv
ckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUocHJvdG90eXBlKTsKIH0KZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTE5Nzk1MjM5YjJkMmQ5ZTMw
MWVlNWQwMmI0NGUyY2ZjY2VkMmU4Ny4uNTM2OWNhMGNmZGQyYWIwNGI0MDYwNzY5YzIyMmYyMTZi
ZjM4YTcxOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5j
cHAKQEAgLTYxLDcgKzYxLDcgQEAgTnVtYmVyQ29uc3RydWN0b3I6Ok51bWJlckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBudW1i
ZXJQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKIAogICAgIC8v
IG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMSks
IFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVh
ZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCiBib29sIE51bWJlckNvbnN0cnVj
dG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTc0LDI5ICs3NCwyOSBAQCBi
b29sIE51bWJlckNvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaQogICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZURlc2NyaXB0
b3I8TnVtYmVyQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24+KGV4ZWMsIEV4ZWNTdGF0ZTo6
bnVtYmVyVGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAK
LXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTmFOVmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0
cnVjdG9yTmFOVmFsdWUoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCiB7
Ci0gICAgcmV0dXJuIGpzTmFOKGV4ZWMpOworICAgIHJldHVybiBqc05hTigpOwogfQogCi1zdGF0
aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1
Y3Rvck5lZ0luZmluaXR5KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKQog
ewotICAgIHJldHVybiBqc051bWJlcihleGVjLCAtSW5mKTsKKyAgICByZXR1cm4ganNOdW1iZXIo
LUluZik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHko
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikKK3N0YXRpYyBKU1Zh
bHVlIG51bWJlckNvbnN0cnVjdG9yUG9zSW5maW5pdHkoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29u
c3QgSWRlbnRpZmllciYpCiB7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIEluZik7CisgICAg
cmV0dXJuIGpzTnVtYmVyKEluZik7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVj
dG9yTWF4VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJikK
K3N0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWF4VmFsdWUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCiB7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIDEu
Nzk3NjkzMTM0ODYyMzE1N0UrMzA4KTsKKyAgICByZXR1cm4ganNOdW1iZXIoMS43OTc2OTMxMzQ4
NjIzMTU3RSszMDgpOwogfQogCi1zdGF0aWMgSlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1pblZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpCitzdGF0aWMg
SlNWYWx1ZSBudW1iZXJDb25zdHJ1Y3Rvck1pblZhbHVlKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNv
bnN0IElkZW50aWZpZXImKQogewotICAgIHJldHVybiBqc051bWJlcihleGVjLCA1RS0zMjQpOwor
ICAgIHJldHVybiBqc051bWJlcig1RS0zMjQpOwogfQogCiAvLyBFQ01BIDE1LjcuMQpAQCAtMTA0
LDcgKzEwNCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dFdpdGhOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4CiB7CiAgICAgTnVtYmVyT2JqZWN0
KiBvYmplY3QgPSBuZXcgKGV4ZWMpIE51bWJlck9iamVjdChleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPm51bWJlck9iamVjdFN0cnVjdHVyZSgpKTsKICAgICBkb3VibGUgbiA9IGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpIDogMDsKLSAg
ICBvYmplY3QtPnNldEludGVybmFsVmFsdWUoanNOdW1iZXIoZXhlYywgbikpOworICAgIG9iamVj
dC0+c2V0SW50ZXJuYWxWYWx1ZShqc051bWJlcihuKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShvYmplY3QpOwogfQogCkBAIC0xMTcsNyArMTE3LDcgQEAgQ29uc3RydWN0VHlwZSBOdW1i
ZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3RE
YXRhKQogLy8gRUNNQSAxNS43LjIKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNhbGxOdW1iZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCAhZXhlYy0+YXJndW1lbnRDb3VudCgpID8gMCA6
IGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4ZWMpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcighZXhlYy0+YXJndW1lbnRDb3VudCgpID8gMCA6IGV4ZWMtPmFyZ3Vt
ZW50KDApLnRvTnVtYmVyKGV4ZWMpKSk7CiB9CiAKIENhbGxUeXBlIE51bWJlckNvbnN0cnVjdG9y
OjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggNGEyY2E3NDFkN2MwYmQyNzIyMmIzZTY4MzdhOGI3
YTJhYzJlNzA1MC4uMGI4NmMwMDRhYTBhMDZlODM0Mjk0ZGE2NmZkZmM3ZmNmZDU3YWI3ZSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNDksNyArNDks
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBudW1iZXJQcm90b0Z1bmNU
b1ByZWNpc2lvbihFeGVjU3RhdGUqKTsKIE51bWJlclByb3RvdHlwZTo6TnVtYmVyUHJvdG90eXBl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rp
b25TdHJ1Y3R1cmUpCiAgICAgOiBOdW1iZXJPYmplY3Qoc3RydWN0dXJlKQogewotICAgIHNldElu
dGVybmFsVmFsdWUoanNOdW1iZXIoZXhlYywgMCkpOworICAgIHNldEludGVybmFsVmFsdWUoanNO
dW1iZXIoMCkpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIs
IGFmdGVyIE51bWJlckNvbnN0cnVjdG9yIGhhcyBiZWVuIGNvbnN0cnVjdGVkCiAKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjFmOWQ3MGUzZjBh
YmRhZGY4OGZmMjhjNWZmYTRmNGZlZjYyYzU3ZC4uY2EzZGNkN2MyZDUzOTNjYTg4ZTE1ZDQxYjlj
M2RlNGRkYzdmMjJlZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgT2JqZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKICAg
ICAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3RvcgotICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVy
KGV4ZWMsIDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CisgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1i
ZXIoMSksIFJlYWRPbmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKICAgICAKICAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVu
Y3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5nZXRQcm90b3R5cGVPZiwgb2JqZWN0Q29uc3Ry
dWN0b3JHZXRQcm90b3R5cGVPZiksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4
ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIG9iamVjdENvbnN0cnVjdG9y
R2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSwgRG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3BlcmF0aW9ucy5jcHAKaW5kZXggY2YyMzZiZjVlM2Y1ZGY5NjNmNWQzYzA0NjVmZmFmY2RlZTMy
ODZjNC4uZGUyM2UxN2RlNzFlNjJkZGFkMzA1YThiMjBkZmFmMjgzNGM0YmFiNyAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuY3BwCkBAIC01NSw3ICs1NSw3IEBAIE5FVkVSX0lOTElO
RSBKU1ZhbHVlIGpzQWRkU2xvd0Nhc2UoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUgdjEs
IEpTVmFsdWUgdjIpCiAgICAgaWYgKHAyLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBqc1N0
cmluZyhjYWxsRnJhbWUsIHAxLnRvU3RyaW5nKGNhbGxGcmFtZSksIGFzU3RyaW5nKHAyKSk7CiAK
LSAgICByZXR1cm4ganNOdW1iZXIoY2FsbEZyYW1lLCBwMS50b051bWJlcihjYWxsRnJhbWUpICsg
cDIudG9OdW1iZXIoY2FsbEZyYW1lKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHAxLnRvTnVtYmVy
KGNhbGxGcmFtZSkgKyBwMi50b051bWJlcihjYWxsRnJhbWUpKTsKIH0KIAogSlNWYWx1ZSBqc1R5
cGVTdHJpbmdGb3JWYWx1ZShDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSB2KQpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAppbmRleCA5MjI2OTUzZTczYjJlMTE1ZjdjMWYyYTRhZGFl
NTMxODUyZDEyYzVlLi44MDU4MGM3YzdiMmZjNjljNGI3YTU2NjEyMWJlNTE0Yjg2MTZjMWVlIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtMzk4LDcgKzM5OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICAgICAgZG91YmxlIGxlZnQgPSAwLjAsIHJpZ2h0OwogICAg
ICAgICBpZiAodjEuZ2V0TnVtYmVyKGxlZnQpICYmIHYyLmdldE51bWJlcihyaWdodCkpCi0gICAg
ICAgICAgICByZXR1cm4ganNOdW1iZXIoY2FsbEZyYW1lLCBsZWZ0ICsgcmlnaHQpOworICAgICAg
ICAgICAgcmV0dXJuIGpzTnVtYmVyKGxlZnQgKyByaWdodCk7CiAgICAgICAgIAogICAgICAgICBp
ZiAodjEuaXNTdHJpbmcoKSkgewogICAgICAgICAgICAgcmV0dXJuIHYyLmlzU3RyaW5nKCkKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvdG90eXBlRnVuY3Rpb24uY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5cGVGdW5jdGlvbi5jcHAKaW5kZXggYjBiZjJi
ZDU1ZGU4M2NmMDAwNTIxYWM1NzllY2VlOTQwYjM2MGYwNC4uMzUyOTA4MDVjYzkxNjIxOWEwMmE4
ZGNiNDJmM2ZkNWUyOGVmZjVmMCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm90b3R5cGVGdW5jdGlvbi5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm90b3R5
cGVGdW5jdGlvbi5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgUHJvdG90eXBlRnVuY3Rpb246OlByb3Rv
dHlwZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
ICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUX0FSRyhmdW5jdGlvbiwg
ZnVuY3Rpb24pOwotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcihleGVjLCBsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGxl
bmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KIAogUHJvdG90eXBl
RnVuY3Rpb246OlByb3RvdHlwZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC00NSw3ICs0NSw3IEBAIFByb3RvdHlwZUZ1bmN0aW9u
OjpQcm90b3R5cGVGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9BUkcoZnVu
Y3Rpb24sIGZ1bmN0aW9uKTsKLSAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoZXhlYywgbGVuZ3RoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcihsZW5ndGgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CiAgICAg
CiBDYWxsVHlwZSBQcm90b3R5cGVGdW5jdGlvbjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNhbGxE
YXRhKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAppbmRl
eCBiOWFhNTg3NGIwOTVhZGM5NGYzOWY5ZDY1NTZkNjM4OGRmZWIzNzA0Li4yMWNhMTcwYjZiODVh
ZTg5MWZiMzFhZjQxYmE4ZGEwNDliYjk5NmZhIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFJlZ0V4cENvbnN0cnVj
dG9yOjpSZWdFeHBDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgcmVnRXhwUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSk7CiAKICAgICAvLyBuby4gb2YgYXJndW1lbnRzIGZvciBjb25zdHJ1Y3Rvcgot
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKGV4ZWMsIDIpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKIH0K
IAogUmVnRXhwTWF0Y2hlc0FycmF5OjpSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGRhdGEpCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9p
ZCBSZWdFeHBNYXRjaGVzQXJyYXk6OmZpbGxBcnJheUluc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB9CiAKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBKU0FycmF5OjpwdXQoZXhl
YywgZXhlYy0+cHJvcGVydHlOYW1lcygpLmluZGV4LCBqc051bWJlcihleGVjLCBkLT5sYXN0T3Zl
Y3RvcigpWzBdKSwgc2xvdCk7CisgICAgSlNBcnJheTo6cHV0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5pbmRleCwganNOdW1iZXIoZC0+bGFzdE92ZWN0b3IoKVswXSksIHNsb3QpOwogICAg
IEpTQXJyYXk6OnB1dChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaW5wdXQsIGpzU3RyaW5n
KGV4ZWMsIGQtPmlucHV0KSwgc2xvdCk7CiAKICAgICBkZWxldGUgZDsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAppbmRleCA3ZDE0ODE0OWI3MmFjYjI2MjA2YTgzZDVkMGVk
ZGJjMjIwOTkwMjM0Li43ZmRhNWIxNGQ4N2ZiMTBmZjg0M2QxOWVhZTkzMjljODY5ZjQ0Y2NiIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCkBAIC0xMDEsOSArMTAxLDkg
QEAgSlNWYWx1ZSByZWdFeHBPYmplY3RTb3VyY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNs
b3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgYXNS
ZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5yZWdFeHAoKS0+cGF0dGVybigpKTsKIH0KIAotSlNWYWx1
ZSByZWdFeHBPYmplY3RMYXN0SW5kZXgoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNl
LCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgcmVnRXhwT2JqZWN0TGFzdEluZGV4KEV4ZWNT
dGF0ZSosIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQogewotICAgIHJldHVy
biBqc051bWJlcihleGVjLCBhc1JlZ0V4cE9iamVjdChzbG90QmFzZSktPmxhc3RJbmRleCgpKTsK
KyAgICByZXR1cm4ganNOdW1iZXIoYXNSZWdFeHBPYmplY3Qoc2xvdEJhc2UpLT5sYXN0SW5kZXgo
KSk7CiB9CiAKIHZvaWQgUmVnRXhwT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYg
c2xvdCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggMTU5Mzg2ZDdhZmQ0Mjk3Yjg3Y2QwYmJjZGRjYjFlNjA1NzVhZjE1ZS4uMTAxNjUwYzNjMjFi
NWRiMjgyYWQwODY3ZDYzM2Y0NzViOTg5MWY0MSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgU3RyaW5nQ29uc3RydWN0
b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamUKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5l
dyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5mcm9tQ2hhckNv
ZGUsIHN0cmluZ0Zyb21DaGFyQ29kZSksIERvbnRFbnVtKTsKICNlbmRpZgogICAgIC8vIG5vLiBv
ZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24oZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMSksIFJlYWRP
bmx5IHwgRG9udEVudW0gfCBEb250RGVsZXRlKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkg
fCBEb250RW51bSB8IERvbnREZWxldGUpOwogfQogCiAvLyBFQ01BIDE1LjUuMgpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDM3NDM2ZjlkZmJlZjc3MTY5
NjBjNmNlZWJjNDU2MDdhM2NhNWM3OWMuLmY2NTVjMzM1ZTVmMzVkOGQ4YTFlZTM3MjFlMDRlYjhm
MTkyYmI0M2IgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
QEAgLTEzNiw3ICsxMzYsNyBAQCBTdHJpbmdQcm90b3R5cGU6OlN0cmluZ1Byb3RvdHlwZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgcHV0QW5v
bnltb3VzVmFsdWUoMCwgZ2xvYmFsT2JqZWN0KTsKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2ls
bCBiZSBhZGRlZCBsYXRlciwgYWZ0ZXIgU3RyaW5nQ29uc3RydWN0b3IgaGFzIGJlZW4gYnVpbHQK
LSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcihleGVjLCAwKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9
CiAKIGJvb2wgU3RyaW5nUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCAmc2xvdCkK
QEAgLTM1MSw3ICszNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1By
b3RvRnVuY1JlcGxhY2UoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpLCBqc1N1YnN0cmluZyhleGVjLCBzb3VyY2UsIG1hdGNo
U3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAg
Y2FjaGVkQ2FsbC5zZXRBcmd1bWVudChpKyssIGpzTnVtYmVyKGV4ZWMsIGNvbXBsZXRlTWF0Y2hT
dGFydCkpOworICAgICAgICAgICAgICAgIGNhY2hlZENhbGwuc2V0QXJndW1lbnQoaSsrLCBqc051
bWJlcihjb21wbGV0ZU1hdGNoU3RhcnQpKTsKICAgICAgICAgICAgICAgICBjYWNoZWRDYWxsLnNl
dEFyZ3VtZW50KGkrKywgc291cmNlVmFsKTsKIAogICAgICAgICAgICAgICAgIGNhY2hlZENhbGwu
c2V0VGhpcyhleGVjLT5nbG9iYWxUaGlzVmFsdWUoKSk7CkBAIC0zOTgsNyArMzk4LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChqc1N1YnN0
cmluZyhleGVjLCBzb3VyY2UsIG1hdGNoU3RhcnQsIG1hdGNoTGVuKSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZChqc051bWJlcihleGVj
LCBjb21wbGV0ZU1hdGNoU3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQo
anNOdW1iZXIoY29tcGxldGVNYXRjaFN0YXJ0KSk7CiAgICAgICAgICAgICAgICAgICAgIGFyZ3Mu
YXBwZW5kKHNvdXJjZVZhbCk7CiAKICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLmFw
cGVuZChjYWxsKGV4ZWMsIHJlcGxhY2VtZW50LCBjYWxsVHlwZSwgY2FsbERhdGEsIGV4ZWMtPmds
b2JhbFRoaXNWYWx1ZSgpLCBhcmdzKS50b1N0cmluZyhleGVjKSk7CkBAIC00NTQsNyArNDU0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNSZXBsYWNlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CiAgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzU3Vi
c3RyaW5nKGV4ZWMsIHNvdXJjZSwgbWF0Y2hQb3MsIG1hdGNoTGVuKSk7Ci0gICAgICAgIGFyZ3Mu
YXBwZW5kKGpzTnVtYmVyKGV4ZWMsIG1hdGNoUG9zKSk7CisgICAgICAgIGFyZ3MuYXBwZW5kKGpz
TnVtYmVyKG1hdGNoUG9zKSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKHNvdXJjZVZhbCk7CiAKICAg
ICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBjYWxsKGV4ZWMsIHJlcGxhY2VtZW50LCBjYWxsVHlw
ZSwgY2FsbERhdGEsIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpLCBhcmdzKS50b1N0cmluZyhleGVj
KTsKQEAgLTUxMCwxMyArNTEwLDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3Ry
aW5nUHJvdG9GdW5jQ2hhckNvZGVBdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGEwLmlzVUlu
dDMyKCkpIHsKICAgICAgICAgdWludDMyX3QgaSA9IGEwLmFzVUludDMyKCk7CiAgICAgICAgIGlm
IChpIDwgbGVuKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihl
eGVjLCBzLmNoYXJhY3RlcnMoKVtpXSkpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTmFOKGV4ZWMpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1i
ZXIocy5jaGFyYWN0ZXJzKClbaV0pKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05hTigpKTsKICAgICB9CiAgICAgZG91YmxlIGRwb3MgPSBhMC50b0ludGVnZXIoZXhlYyk7CiAg
ICAgaWYgKGRwb3MgPj0gMCAmJiBkcG9zIDwgbGVuKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIHNbc3RhdGljX2Nhc3Q8aW50PihkcG9zKV0pKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTmFOKGV4ZWMpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihzW3N0YXRpY19jYXN0PGludD4oZHBvcyldKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05hTigpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiBleGVjKQpAQCAtNTYwLDgg
KzU2MCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSW5k
ZXhPZihFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBzaXplX3QgcmVzdWx0ID0gcy5maW5kKHUyLCBw
b3MpOwogICAgIGlmIChyZXN1bHQgPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZXhlYywgLTEpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGV4ZWMsIHJlc3VsdCkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKC0xKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihyZXN1
bHQpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNM
YXN0SW5kZXhPZihFeGVjU3RhdGUqIGV4ZWMpCkBAIC01ODksOCArNTg5LDggQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBzaXplX3QgcmVzdWx0ID0gcy5yZXZlcnNlRmluZCh1Miwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRwb3MpKTsKICAgICBpZiAocmVzdWx0ID09IG5vdEZvdW5kKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGV4ZWMsIC0xKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCByZXN1bHQpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcigtMSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIocmVzdWx0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jTWF0Y2goRXhlY1N0YXRlKiBleGVjKQpAQCAtNjcyLDcgKzY3Miw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU2VhcmNoKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpbnQgcG9zOwogICAgIGludCBtYXRjaExlbmd0aCA9IDA7CiAgICAg
cmVnRXhwQ29uc3RydWN0b3ItPnBlcmZvcm1NYXRjaChyZWcuZ2V0KCksIHUsIDAsIHBvcywgbWF0
Y2hMZW5ndGgpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZXhlYywgcG9z
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwb3MpKTsKIH0KIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUq
IGV4ZWMpCkBAIC05MDksNyArOTA5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNUb1VwcGVyQ2FzZShFeGVjU3RhdGUqIGV4ZWMpCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihleGVjLCAwKSk7CisgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKTsKIAogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwogICAgIGlmICh0aGlzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkg
Ly8gQ2hlY2tPYmplY3RDb2VyY2libGUKQEAgLTkxNyw3ICs5MTcsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgVVN0cmluZyBzID0gdGhpc1ZhbHVlLnRvVGhpc1N0cmluZyhleGVjKTsKICAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihleGVjLCBsb2NhbGVDb21wYXJlKHMsIGEwLnRvU3RyaW5nKGV4ZWMpKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobG9jYWxlQ29tcGFyZShzLCBh
MC50b1N0cmluZyhleGVjKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNCaWcoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCmluZGV4IDk3N2JhYTQ0
ODFkNGZlOWM3NjRkZDc5MzI4OWEzZDc2MDg3ZDk4OTEuLjllNTg2ODVkOTk4MTgxMjFhZDkxMzRi
NDk0NDMyMGRhZGY1Njk1OGMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwor
KysgYi9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMC0y
NSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBleGVjIGFuZCBnbG9iYWxEYXRhIGFy
Z3VtZW50cyBmcm9tIGpzTnVtYmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODI3MAorCisgICAgICAgIERvbid0IHBhc3MgZXhlYyB0byBqc051bWJl
cgorCisgICAgICAgICogSlNVdGlscy5jcHA6CisgICAgICAgIChKU09iamVjdEtKU1ZhbHVlKToK
KyAgICAgICAgKiBVc2VyT2JqZWN0SW1wLmNwcDoKKyAgICAgICAgKFVzZXJPYmplY3RJbXA6OnRv
UHJpbWl0aXZlKToKKwogMjAxMC0xMC0yNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjcwNDUxLgpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdEdsdWUvSlNVdGlscy5jcHAgYi9KYXZhU2NyaXB0R2x1ZS9K
U1V0aWxzLmNwcAppbmRleCA1Yzg1NDc1ZjUwYjJkNWY5YTJkNjljNzkyMWFlN2I1OTkyZjJhOTIw
Li41ODE5OTljMDU4NDEyNDY1NWU3MzhkY2VjODNlNDNkZjQ1ODM2MGEyIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNwcAorKysgYi9KYXZhU2NyaXB0R2x1ZS9KU1V0aWxzLmNw
cApAQCAtMTY0LDcgKzE2NCw3IEBAIEpTVmFsdWUgSlNPYmplY3RLSlNWYWx1ZShKU1VzZXJPYmpl
Y3QqIHB0cikKICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIG51bTsKICAgICAgICAgICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoKENG
TnVtYmVyUmVmKWNmVHlwZSwga0NGTnVtYmVyRG91YmxlVHlwZSwgJm51bSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgPSBqc051bWJlcihnZXRUaHJlYWRHbG9iYWxFeGVjU3RhdGUo
KSwgbnVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKG51bSk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlSUQgPT0gQ0ZCb29sZWFu
R2V0VHlwZUlEKCkpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmNw
cCBiL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCmluZGV4IDIxNzZmMTYzNWM4MGQ2
YWQ2MDAzMzhhNjk4ZjViNmQyMmE0OGRkM2UuLjE3MjhhN2U4NDYzNTM1ZWE4OTZjOWFmNjc0MzFj
NzQyNGVkNjVhYjcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3Bw
CisrKyBiL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuY3BwCkBAIC0xOTAsNyArMTkwLDcg
QEAgSlNWYWx1ZSBVc2VyT2JqZWN0SW1wOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUgKmV4ZWMsIEpT
VHlwZSkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjZlR5cGUgPT0gQ0ZOdW1iZXJHZXRUeXBl
SUQoKSkgewogICAgICAgICAgICAgZG91YmxlIGQgPSAwLjA7CiAgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKChDRk51bWJlclJlZiljZlZhbHVlLCBrQ0ZOdW1iZXJEb3VibGVUeXBlLCAmZCk7
Ci0gICAgICAgICAgICByZXN1bHQgPSBqc051bWJlcihleGVjLCBkKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IGpzTnVtYmVyKGQpOwogICAgICAgICB9IGVsc2UgaWYgKGNmVHlwZSA9PSBDRlVSTEdl
dFR5cGVJRCgpKSB7CiAgICAgICAgICAgICBDRlVSTFJlZiBhYnNVUkwgPSBDRlVSTENvcHlBYnNv
bHV0ZVVSTCgoQ0ZVUkxSZWYpY2ZWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoYWJzVVJMKSB7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDFj
ODUzNjNmYWQ0YWMwYTNlMWFhOGZmNGJhNGYwOGNiYTRhMDI3MGQuLjZiYWMwYjA3MTA3MzY2MTFm
ZGY0MGYzNDAwZWExODQ5NWEyMjRkM2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODMgQEAKKzIwMTAtMTAtMjUgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZXhlYyBhbmQgZ2xvYmFsRGF0YSBhcmd1bWVudHMg
ZnJvbSBqc051bWJlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDgyNzAKKworICAgICAgICBNZWNoYW5pY2FsIHJlbW92YWwgb2YgZXhlYyBwYXJhbWV0
ZXIgdG8ganNOdW1iZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBdWRpb0NvbnN0cnVjdG9yOjpKU0F1ZGlvQ29u
c3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NTU1N0eWxlRGVjbGFyYXRpb246Om5hbWVH
ZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ29vcmRpbmF0ZXNDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNDb29yZGluYXRlczo6YWx0aXR1ZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDb29yZGluYXRlczo6YWx0aXR1ZGVBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0Nvb3JkaW5hdGVzOjpoZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ29vcmRpbmF0
ZXM6OnNwZWVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0VGltZW91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6c2V0SW50ZXJ2YWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
QWNjZWxlcmF0aW9uT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJvdGF0aW9uUmF0
ZU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RldmljZU1vdGlvbkV2ZW50OjppbnRlcnZh
bCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6YWxwaGEp
OgorICAgICAgICAoV2ViQ29yZTo6SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpiZXRhKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Z2FtbWEpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTElu
cHV0RWxlbWVudDo6c2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MSW5w
dXRFbGVtZW50OjpzZWxlY3Rpb25FbmQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSFRNTE9wdGlv
bnNDb2xsZWN0aW9uOjpsZW5ndGgpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSURCS2V5Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVj
dGVkU2NyaXB0SG9zdDo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6
SlNJbmplY3RlZFNjcmlwdEhvc3Q6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNPcHRpb25Db25zdHJ1Y3Rvcjo6SlNPcHRpb25Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTU1FMUmVzdWx0U2V0Um93TGlzdDo6aXRlbSk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNTVkdMZW5ndGhDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OnZh
bHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU2NyaXB0UHJvZmlsZU5vZGU6OmNhbGxVSUQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHQ6OnNldFRp
bWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjpzZXRJbnRlcnZhbCk6
CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudCk6
CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGJyaWRnZS9j
L2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjpudW1i
ZXJWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL2MvY191dGlsaXR5LmNwcDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6OmNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKToKKyAgICAgICAgKiBicmlkZ2Uv
am5pL2pzYy9KTklCcmlkZ2VKU0MuY3BwOgorICAgICAgICAoSmF2YUZpZWxkOjp2YWx1ZUZyb21J
bnN0YW5jZSk6CisgICAgICAgIChKYXZhQXJyYXk6OnZhbHVlQXQpOgorICAgICAgICAqIGJyaWRn
ZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChKYXZhSW5zdGFuY2U6Om51
bWJlclZhbHVlKToKKyAgICAgICAgKEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKToKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqY0luc3RhbmNl
OjpudW1iZXJWYWx1ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY191dGlsaXR5Lm1tOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Y29udmVydE9iamNWYWx1ZVRvVmFsdWUpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX2FycmF5LmNwcDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5
OjpsZW5ndGhHZXR0ZXIpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5jcHA6Cisg
ICAgICAgIChKU0M6OlJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcik6CisKIDIwMTAtMTAtMjUg
IENyaXMgTmVja2FyICA8Y2RuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b25zdHJ1Y3Rvci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5j
cHAKaW5kZXggNWJiYWY0MWE1NThlMTljMzc3OTUxZDFiYWIxN2FiYzZjM2M4NjVmNy4uMWVhNWFl
NDAxZGRkMGE0NjdkMTNjODY1YmVkNzA5NjcwNDg3MzhjMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0F1ZGlvQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNBdWRpb0NvbnN0cnVjdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBKU0F1ZGlvQ29uc3Ry
dWN0b3I6OkpTQXVkaW9Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYQogICAgIDogRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQoSlNBdWRpb0NvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSks
IGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgSlNIVE1MQXVkaW9FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9i
amVjdCksIE5vbmUpOwotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
LCBqc051bWJlcihleGVjLCAxKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcigxKSwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwogfQogCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RBdWRpbyhFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAK
aW5kZXggM2IzNDY1ZTQ2OWU5YmFiN2M2MjM1NTk1ZmZhZGNhNzgzNjc5MzY5YS4uNDU4YWQ1YjNh
NDlmZjEyZTgzN2JjOTM3ODVlYzFkZmYzNjJlYzQ1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcApAQCAtMTU2LDcgKzE1Niw3
IEBAIEpTVmFsdWUgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uCiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2ID0gdGhp
c09iai0+aW1wbCgpLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3ApOwogICAgIGlmICh2KSB7CiAg
ICAgICAgIGlmIChwaXhlbE9yUG9zICYmIHYtPmNzc1ZhbHVlVHlwZSgpID09IENTU1ZhbHVlOjpD
U1NfUFJJTUlUSVZFX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHN0
YXRpY19wb2ludGVyX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHYpLT5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpKTsKKyAgICAgICAgICAgIHJldHVybiBqc051bWJlcihz
dGF0aWNfcG9pbnRlcl9jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2KS0+Z2V0RmxvYXRWYWx1ZShD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKSk7CiAgICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVs
bChleGVjLCB2LT5jc3NUZXh0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
b29yZGluYXRlc0N1c3RvbS5jcHAKaW5kZXggNzIwYmI5Yjk1YzA5YjI5MjJkNmI1ZGFkOTdkMDBi
OWMxZDk3MzYyZi4uOGVmMzRhZDQxM2Q3YTE1NDkyNTZhNWEwN2IwZjFjZDVkYWRkNzFjZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29vcmRpbmF0ZXNDdXN0b20uY3BwCkBAIC0zMiwzNiAr
MzIsMzYgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IAotSlNWYWx1ZSBKU0Nvb3JkaW5hdGVzOjphbHRpdHVkZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CitKU1ZhbHVlIEpTQ29vcmRpbmF0ZXM6OmFsdGl0dWRlKEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAg
ICAgQ29vcmRpbmF0ZXMqIGltcCA9IGltcGwoKTsKICAgICBpZiAoIWltcC0+Y2FuUHJvdmlkZUFs
dGl0dWRlKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4ganNOdW1iZXIo
ZXhlYywgaW1wLT5hbHRpdHVkZSgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wLT5hbHRpdHVk
ZSgpKTsKIH0KIAotSlNWYWx1ZSBKU0Nvb3JkaW5hdGVzOjphbHRpdHVkZUFjY3VyYWN5KEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKK0pTVmFsdWUgSlNDb29yZGluYXRlczo6YWx0aXR1ZGVBY2N1cmFj
eShFeGVjU3RhdGUqKSBjb25zdAogewogICAgIENvb3JkaW5hdGVzKiBpbXAgPSBpbXBsKCk7CiAg
ICAgaWYgKCFpbXAtPmNhblByb3ZpZGVBbHRpdHVkZUFjY3VyYWN5KCkpCiAgICAgICAgIHJldHVy
biBqc051bGwoKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW1wLT5hbHRpdHVkZUFjY3Vy
YWN5KCkpOworICAgIHJldHVybiBqc051bWJlcihpbXAtPmFsdGl0dWRlQWNjdXJhY3koKSk7CiB9
CiAKLUpTVmFsdWUgSlNDb29yZGluYXRlczo6aGVhZGluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CitKU1ZhbHVlIEpTQ29vcmRpbmF0ZXM6OmhlYWRpbmcoRXhlY1N0YXRlKikgY29uc3QKIHsKICAg
ICBDb29yZGluYXRlcyogaW1wID0gaW1wbCgpOwogICAgIGlmICghaW1wLT5jYW5Qcm92aWRlSGVh
ZGluZygpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0dXJuIGpzTnVtYmVyKGV4
ZWMsIGltcC0+aGVhZGluZygpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wLT5oZWFkaW5nKCkp
OwogfQogCi1KU1ZhbHVlIEpTQ29vcmRpbmF0ZXM6OnNwZWVkKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKK0pTVmFsdWUgSlNDb29yZGluYXRlczo6c3BlZWQoRXhlY1N0YXRlKikgY29uc3QKIHsKICAg
ICBDb29yZGluYXRlcyogaW1wID0gaW1wbCgpOwogICAgIGlmICghaW1wLT5jYW5Qcm92aWRlU3Bl
ZWQoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiBqc051bWJlcihleGVj
LCBpbXAtPnNwZWVkKCkpOworICAgIHJldHVybiBqc051bWJlcihpbXAtPnNwZWVkKCkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uY3BwCmluZGV4IGVjYjM3ZjMwMTFlMmFhZWZlY2M4ZTM5ZjUyNGU5N2JmYjBlYzUwZWYu
LjcxMTllYTZiODZlMDUwYjgxNzM5NmE1YjhkNzE1MDA1ODdhMjcxNmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC05MTAsNyArOTEwLDcgQEAgSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6c2V0VGltZW91dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaW50IHJlc3Vs
dCA9IGltcGwoKS0+c2V0VGltZW91dChhY3Rpb24ucmVsZWFzZSgpLCBkZWxheSwgZWMpOwogICAg
IHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywg
cmVzdWx0KTsKKyAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKIH0KIAogSlNWYWx1ZSBKU0RP
TVdpbmRvdzo6c2V0SW50ZXJ2YWwoRXhlY1N0YXRlKiBleGVjKQpAQCAtOTI0LDcgKzkyNCw3IEBA
IEpTVmFsdWUgSlNET01XaW5kb3c6OnNldEludGVydmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICBp
bnQgcmVzdWx0ID0gaW1wbCgpLT5zZXRJbnRlcnZhbChhY3Rpb24ucmVsZWFzZSgpLCBkZWxheSwg
ZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAKLSAgICByZXR1cm4ganNOdW1i
ZXIoZXhlYywgcmVzdWx0KTsKKyAgICByZXR1cm4ganNOdW1iZXIocmVzdWx0KTsKIH0KIAogSlNW
YWx1ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3Bw
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRl
eCBmMWMxYmMwYTc4NTZhMWFiN2Q1ZjdmNTcxN2I5Njg3N2QxOWMyOTMyLi43YmIwOWE5Y2E3NjQw
NDBhYWNkM2JhYjRhZTc5Y2MzMDgwNWNkMzRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTExNCwxOCArMTE0LDE4IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE6OlJvdGF0aW9uUmF0ZT4gcmVhZFJvdGF0
aW9uUmF0ZUFyZ3VtZW50KEpTVmFsCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZUFjY2VsZXJhdGlv
bk9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24qIGFjY2VsZXJhdGlv
biwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMs
ICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgoKSA/IGpzTnVtYmVyKGV4ZWMsIGFjY2Vs
ZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlm
aWVyKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVkoKSA/IGpzTnVtYmVyKGV4
ZWMsIGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERpcmVj
dChJZGVudGlmaWVyKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVooKSA/IGpz
TnVtYmVyKGV4ZWMsIGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3Qt
PnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJ4IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJvdmlk
ZVgoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eCgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmpl
Y3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJ5IiksIGFjY2VsZXJhdGlvbi0+Y2FuUHJv
dmlkZVkoKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eSgpKSA6IGpzTnVsbCgpKTsKKyAgICBv
YmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJ6IiksIGFjY2VsZXJhdGlvbi0+Y2Fu
UHJvdmlkZVooKSA/IGpzTnVtYmVyKGFjY2VsZXJhdGlvbi0+eigpKSA6IGpzTnVsbCgpKTsKICAg
ICByZXR1cm4gb2JqZWN0OwogfQogCiBzdGF0aWMgSlNPYmplY3QqIGNyZWF0ZVJvdGF0aW9uUmF0
ZU9iamVjdChjb25zdCBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGUqIHJvdGF0aW9uUmF0
ZSwgRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMs
ICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1iZXIoZXhl
Yywgcm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKLSAgICBvYmplY3QtPnB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVC
ZXRhKCkgID8ganNOdW1iZXIoZXhlYywgcm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgp
KTsKLSAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpLCByb3Rh
dGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIoZXhlYywgcm90YXRpb25SYXRl
LT5nYW1tYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJhbHBoYSIpLCByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVBbHBoYSgpID8ganNOdW1i
ZXIocm90YXRpb25SYXRlLT5hbHBoYSgpKSA6IGpzTnVsbCgpKTsKKyAgICBvYmplY3QtPnB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsICJiZXRhIiksICByb3RhdGlvblJhdGUtPmNhblByb3ZpZGVC
ZXRhKCkgID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5iZXRhKCkpICA6IGpzTnVsbCgpKTsKKyAg
ICBvYmplY3QtPnB1dERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJnYW1tYSIpLCByb3RhdGlvblJh
dGUtPmNhblByb3ZpZGVHYW1tYSgpID8ganNOdW1iZXIocm90YXRpb25SYXRlLT5nYW1tYSgpKSA6
IGpzTnVsbCgpKTsKICAgICByZXR1cm4gb2JqZWN0OwogfQogCkBAIC0xNTgsNyArMTU4LDcgQEAg
SlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50OjppbnRlcnZhbChFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiAgICAgRGV2aWNlTW90aW9uRXZlbnQqIGltcCA9IHN0YXRpY19jYXN0PERldmljZU1vdGlv
bkV2ZW50Kj4oaW1wbCgpKTsKICAgICBpZiAoIWltcC0+ZGV2aWNlTW90aW9uRGF0YSgpLT5jYW5Q
cm92aWRlSW50ZXJ2YWwoKSkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwotICAgIHJldHVybiBq
c051bWJlcihleGVjLCBpbXAtPmRldmljZU1vdGlvbkRhdGEoKS0+aW50ZXJ2YWwoKSk7CisgICAg
cmV0dXJuIGpzTnVtYmVyKGltcC0+ZGV2aWNlTW90aW9uRGF0YSgpLT5pbnRlcnZhbCgpKTsKIH0K
IAogSlNWYWx1ZSBKU0RldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnQoRXhl
Y1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9y
aWVudGF0aW9uRXZlbnRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RldmljZU9y
aWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IDA1Zjg3NTUxMDNkMTI3MDBhODExZTA1ZGU4
OTQzZWM0ZDQ1NzQ0N2IuLjkwNzRhNmI2YTcxYzUzYWJlNGE0YjZkZDBkYjZjNDczNjRiMmMyNWMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50
Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGV2aWNlT3JpZW50YXRpb25F
dmVudEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0
aW9uRXZlbnQ6OmFscGhhKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICBEZXZpY2VPcmllbnRh
dGlvbkV2ZW50KiBpbXAgPSBzdGF0aWNfY2FzdDxEZXZpY2VPcmllbnRhdGlvbkV2ZW50Kj4oaW1w
bCgpKTsKICAgICBpZiAoIWltcC0+b3JpZW50YXRpb24oKS0+Y2FuUHJvdmlkZUFscGhhKCkpCiAg
ICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW1wLT5v
cmllbnRhdGlvbigpLT5hbHBoYSgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoaW1wLT5vcmllbnRh
dGlvbigpLT5hbHBoYSgpKTsKIH0KIAogSlNWYWx1ZSBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQ6
OmJldGEoRXhlY1N0YXRlKiBleGVjKSBjb25zdApAQCAtNDgsNyArNDgsNyBAQCBKU1ZhbHVlIEpT
RGV2aWNlT3JpZW50YXRpb25FdmVudDo6YmV0YShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAg
RGV2aWNlT3JpZW50YXRpb25FdmVudCogaW1wID0gc3RhdGljX2Nhc3Q8RGV2aWNlT3JpZW50YXRp
b25FdmVudCo+KGltcGwoKSk7CiAgICAgaWYgKCFpbXAtPm9yaWVudGF0aW9uKCktPmNhblByb3Zp
ZGVCZXRhKCkpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKLSAgICByZXR1cm4ganNOdW1iZXIo
ZXhlYywgaW1wLT5vcmllbnRhdGlvbigpLT5iZXRhKCkpOworICAgIHJldHVybiBqc051bWJlcihp
bXAtPm9yaWVudGF0aW9uKCktPmJldGEoKSk7CiB9CiAKIEpTVmFsdWUgSlNEZXZpY2VPcmllbnRh
dGlvbkV2ZW50OjpnYW1tYShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CkBAIC01Niw3ICs1Niw3IEBA
IEpTVmFsdWUgSlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgRGV2aWNlT3JpZW50YXRpb25FdmVudCogaW1wID0gc3RhdGljX2Nhc3Q8RGV2
aWNlT3JpZW50YXRpb25FdmVudCo+KGltcGwoKSk7CiAgICAgaWYgKCFpbXAtPm9yaWVudGF0aW9u
KCktPmNhblByb3ZpZGVHYW1tYSgpKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgcmV0
dXJuIGpzTnVtYmVyKGV4ZWMsIGltcC0+b3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7CisgICAgcmV0
dXJuIGpzTnVtYmVyKGltcC0+b3JpZW50YXRpb24oKS0+Z2FtbWEoKSk7CiB9CiAKIEpTVmFsdWUg
SlNEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojppbml0RGV2aWNlT3JpZW50YXRpb25FdmVudChFeGVj
U3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNw
cAppbmRleCBiZDM2ZGY4NzQ2ODYxYjZiODliNWNhNjNkYTNmODQzNzgyYmQyMDlkLi4xZTQwZjg2
ZmM4ODg0ZGEwNzA2YjIzNzliOWYxNjc3MTc5ZTA0MzA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTE4MSw3ICsxODEsNyBAQCBKU1ZhbHVlIEpT
R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIEFTU0VSVChw
b3NpdGlvbk9wdGlvbnMpOwogCiAgICAgaW50IHdhdGNoSUQgPSBtX2ltcGwtPndhdGNoUG9zaXRp
b24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxl
YXNlKCksIHBvc2l0aW9uT3B0aW9ucy5yZWxlYXNlKCkpOwotICAgIHJldHVybiBqc051bWJlcihl
eGVjLCB3YXRjaElEKTsKKyAgICByZXR1cm4ganNOdW1iZXIod2F0Y2hJRCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1M
SW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRF
bGVtZW50Q3VzdG9tLmNwcAppbmRleCA0MTJhMDk2MWFjOGI4ZjI1MTc5MjdiM2Y3ZTIxYTExZDMz
NzFjN2QxLi4xNzFhMWY5MDk1MzMyNjRkMzRlYmY0N2ZiYzhlMzliZTkxMmEwYzMxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAKKysr
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCkBAIC0z
OSw3ICszOSw3IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25TdGFydChF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgaWYgKCFpbnB1dC0+Y2FuSGF2ZVNlbGVjdGlvbigp
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAKLSAgICByZXR1cm4ganNO
dW1iZXIoZXhlYywgaW5wdXQtPnNlbGVjdGlvblN0YXJ0KCkpOworICAgIHJldHVybiBqc051bWJl
cihpbnB1dC0+c2VsZWN0aW9uU3RhcnQoKSk7CiB9CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50
OjpzZXRTZWxlY3Rpb25TdGFydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCkBAIC01
Nyw3ICs1Nyw3IEBAIEpTVmFsdWUgSlNIVE1MSW5wdXRFbGVtZW50OjpzZWxlY3Rpb25FbmQoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICghaW5wdXQtPmNhbkhhdmVTZWxlY3Rpb24oKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwogCi0gICAgcmV0dXJuIGpzTnVt
YmVyKGV4ZWMsIGlucHV0LT5zZWxlY3Rpb25FbmQoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGlu
cHV0LT5zZWxlY3Rpb25FbmQoKSk7CiB9CiAKIHZvaWQgSlNIVE1MSW5wdXRFbGVtZW50OjpzZXRT
ZWxlY3Rpb25FbmQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRl
eCA2MTQzYzFlNjU0MGQ1MGJhYTY2M2NiZmY4Yzg2Y2ViNDQ2MWMwNWY3Li5kMTY5YmM0MzlhYTYx
NjEzODdmYzc4NmUwOTk4M2YyMzE4NTBkYzJjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzUsMTAgKzM1LDEw
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNWYWx1
ZSBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbjo6bGVuZ3RoKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QK
K0pTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Omxlbmd0aChFeGVjU3RhdGUqKSBjb25z
dAogewogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1wID0gc3RhdGljX2Nhc3Q8SFRNTE9w
dGlvbnNDb2xsZWN0aW9uKj4oaW1wbCgpKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW1w
LT5sZW5ndGgoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGltcC0+bGVuZ3RoKCkpOwogfQogCiB2
b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lEQktleUN1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3VzdG9tLmNwcAppbmRleCA5
OGM5MzE1OGExNzFhYmY0ZTNmZTIyMzAyMWQ2ZGM1NDYxYjc0Mjg1Li5mMGZhZWY1MTMwN2RmZGMy
NzliMGFmNjBiNWU1YWRhZTE4YTRkMTE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSURCS2V5Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSURCS2V5Q3Vz
dG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCosIElEQktleSoga2V5KQogICAgIGNhc2UgSURCS2V5OjpOdWxsVHlw
ZToKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBl
OgotICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywga2V5LT5udW1iZXIoKSk7CisgICAgICAg
IHJldHVybiBqc051bWJlcihrZXktPm51bWJlcigpKTsKICAgICBjYXNlIElEQktleTo6U3RyaW5n
VHlwZToKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGtleS0+c3RyaW5nKCkpOwogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZGF0ZXMuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IGFjNTIyNWU1NDliMjg3MGY5Nzg2
YTYwMTk3MGIyM2IzNWU4MmJmYzEuLjgxOGQ1NDk2ODZjZmI2ZDg4YWRhNDg3OGRjZTU3YTk3MTY0
ZmFmZTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwCkBAIC05NSw3ICs5NSw3IEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlw
dEhvc3Q6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpCiAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pTKHNjcmlw
dFN0YXRlLCBnbG9iYWxPYmplY3QsIHRoaXMpKTsKICAgICBhcmdzLmFwcGVuZChnbG9iYWxUaGlz
VmFsdWUpOwotICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKHNjcmlwdFN0YXRlLCBpZCkpOworICAg
IGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGlkKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoc2Ny
aXB0U3RhdGUsIFN0cmluZygiSlNDIikpKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2Fs
bChzY3JpcHRTdGF0ZSwgZnVuY3Rpb25WYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxU
aGlzVmFsdWUsIGFyZ3MpOwogICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKQEAgLTE0OSw3ICsx
NDksNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpwdXNoTm9kZVBhdGhUb0Zyb250
ZW5kKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIGJvb2wgd2l0aENoaWxkcmVuID0gZXhlYy0+YXJn
dW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMpOwogICAgIGJvb2wgc2VsZWN0SW5VSSA9IGV4ZWMtPmFy
Z3VtZW50KDIpLnRvQm9vbGVhbihleGVjKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgaW1w
bCgpLT5wdXNoTm9kZVBhdGhUb0Zyb250ZW5kKG5vZGUsIHdpdGhDaGlsZHJlbiwgc2VsZWN0SW5V
SSkpOworICAgIHJldHVybiBqc051bWJlcihpbXBsKCktPnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQo
bm9kZSwgd2l0aENoaWxkcmVuLCBzZWxlY3RJblVJKSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQUJB
U0UpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3Iu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBk
MGE1MWNkMzIyMmIyY2YxNDJjY2M1YjAwNWE0ZGNmNjRjNDZlZDIyLi40ZWNmZTU4NTJjODM4NDQ5
NmFhMzhjNjcxN2JmYmEzYjRlZTQ0NDE3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTT3B0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRp
b25Db25zdHJ1Y3Rvci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgSlNPcHRpb25Db25zdHJ1Y3Rvcjo6
SlNPcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG8KICAgICA6IERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50KEpTT3B0aW9uQ29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgZ2xvYmFs
T2JqZWN0KQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBKU0hUTUxPcHRpb25FbGVtZW50UHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCks
IE5vbmUpOwotICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051
bWJlcihleGVjLCA0KSwgUmVhZE9ubHl8RG9udERlbGV0ZXxEb250RW51bSk7CisgICAgcHV0RGly
ZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDQpLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEhUTUxPcHRpb25FbGVtZW50KEV4ZWNTdGF0ZSogZXhlYykKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNw
cAppbmRleCBlOWE5N2VkMThmYTA0NWNjM2EyZDczMGEzYjFiNTNiMzc5ZTE5ZTViLi43Mjc0Y2Qw
ZjJhNGFkMmUwNmYzNDBmY2Q1YTZiNTI4ZmVkZjI1NjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwCkBAIC02OCw3ICs2OCw3
IEBAIEpTVmFsdWUgSlNTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICAgICAgICAgICAganNWYWx1ZSA9IGpzTnVsbCgpOwogICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICBjYXNlIFNRTFZhbHVlOjpOdW1iZXJWYWx1ZToKLSAgICAgICAgICAgICAganNW
YWx1ZSA9IGpzTnVtYmVyKGV4ZWMsIHZhbHVlLm51bWJlcigpKTsKKyAgICAgICAgICAgICAganNW
YWx1ZSA9IGpzTnVtYmVyKHZhbHVlLm51bWJlcigpKTsKICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHTGVuZ3RoQ3VzdG9tLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCmluZGV4IGNiNWU4NzlmMTVk
ZDcwNTY4MTZjZmQ4MDExYzcxZWM5YWM1NjdiYzguLjBjYzdjNmRjZWZjMzhlZjJiODYxMDU3MTM1
ZGUwODA5NjY5NTdmYWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5n
dGhDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20u
Y3BwCkBAIC0yOCwxMCArMjgsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1KU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CitKU1ZhbHVlIEpTU1ZHTGVuZ3RoOjp2YWx1ZShFeGVjU3RhdGUqKSBjb25zdAogewog
ICAgIFNWR0xlbmd0aCYgcG9kSW1wID0gaW1wbCgpLT5wcm9wZXJ0eVJlZmVyZW5jZSgpOwotICAg
IHJldHVybiBqc051bWJlcihleGVjLCBwb2RJbXAudmFsdWUoaW1wbCgpLT5jb250ZXh0RWxlbWVu
dCgpKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKHBvZEltcC52YWx1ZShpbXBsKCktPmNvbnRleHRF
bGVtZW50KCkpKTsKIH0KIAogSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVk
VW5pdHMoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTY3Jp
cHRQcm9maWxlTm9kZUN1c3RvbS5jcHAKaW5kZXggMTI3MjI3ZTRlOTlkZTM3ODQzOTc1MzhhMzJm
YmU3ODk0NTk4MDJmZi4uMGMyYTZhMmIxZTA1N2MxYzM1YzdjY2Q1NTA2MzdlNzI5Y2M2YWU2ZiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NjcmlwdFByb2ZpbGVOb2RlQ3VzdG9t
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2NyaXB0UHJvZmlsZU5vZGVDdXN0b20u
Y3BwCkBAIC00MCw5ICs0MCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogCi1KU1ZhbHVlIEpTU2NyaXB0UHJvZmlsZU5vZGU6OmNhbGxV
SUQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorSlNWYWx1ZSBKU1NjcmlwdFByb2ZpbGVOb2RlOjpj
YWxsVUlEKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJl
cihleGVjLCBpbXBsKCktPmNhbGxJZGVudGlmaWVyKCkuaGFzaCgpKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IGpzTnVtYmVyKGltcGwoKS0+Y2FsbElkZW50aWZpZXIoKS5oYXNoKCkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggNGIzMTY1OTQ3YmY0NzllZmI0ZDlhOTQz
ZjkwMzZiZGE1Y2M4MTYxMi4uNjQzY2U2NDk4ZTE4ZDcwMGQwZjczMzBhNThmN2FkMzZiMmFkMDUz
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKQEAgLTgxLDE1ICs4MSwxNSBAQCBzdGF0aWMgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgV2Vi
RwogICAgICAgICByZXR1cm4gY29uc3RydWN0QXJyYXkoZXhlYywgbGlzdCk7CiAgICAgfQogICAg
IGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZUZsb2F0OgotICAgICAgICByZXR1cm4ganNOdW1iZXIo
ZXhlYywgaW5mby5nZXRGbG9hdCgpKTsKKyAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGluZm8uZ2V0
RmxvYXQoKSk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlTG9uZzoKLSAgICAgICAgcmV0
dXJuIGpzTnVtYmVyKGV4ZWMsIGluZm8uZ2V0TG9uZygpKTsKKyAgICAgICAgcmV0dXJuIGpzTnVt
YmVyKGluZm8uZ2V0TG9uZygpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6a1R5cGVOdWxsOgog
ICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAgICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlU3Ry
aW5nOgogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW5mby5nZXRTdHJpbmcoKSk7CiAg
ICAgY2FzZSBXZWJHTEdldEluZm86OmtUeXBlVW5zaWduZWRMb25nOgotICAgICAgICByZXR1cm4g
anNOdW1iZXIoZXhlYywgaW5mby5nZXRVbnNpZ25lZExvbmcoKSk7CisgICAgICAgIHJldHVybiBq
c051bWJlcihpbmZvLmdldFVuc2lnbmVkTG9uZygpKTsKICAgICBjYXNlIFdlYkdMR2V0SW5mbzo6
a1R5cGVXZWJHTEJ1ZmZlcjoKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0
LCBpbmZvLmdldFdlYkdMQnVmZmVyKCkpOwogICAgIGNhc2UgV2ViR0xHZXRJbmZvOjprVHlwZVdl
YkdMRmxvYXRBcnJheToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAppbmRleCBiZTQ3YjE2OWY0MjMyZTA5N2VlNjg4OTVlNDg1MDhlYTk3MTM1MjlmLi44
YzFjYWVmNWJhYzZmNzcxOTUzNTQxYTIwZjlhNDE5NjAyYmIzOTFhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
SlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6OnNldFRpbWVvdXQoRXhlY1N0YXRlKiBleGVjKQogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgaW50IGRlbGF5ID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKLSAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYywgaW1wbCgpLT5zZXRUaW1lb3V0KGFjdGlvbi5yZWxlYXNlKCks
IGRlbGF5KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+c2V0VGltZW91dChhY3Rpb24u
cmVsZWFzZSgpLCBkZWxheSkpOwogfQogCiBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6c2V0SW50
ZXJ2YWwoRXhlY1N0YXRlKiBleGVjKQpAQCAtMTM1LDcgKzEzNSw3IEBAIEpTVmFsdWUgSlNXb3Jr
ZXJDb250ZXh0OjpzZXRJbnRlcnZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpbnQgZGVs
YXkgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwotICAgIHJldHVybiBqc051bWJl
cihleGVjLCBpbXBsKCktPnNldEludGVydmFsKGFjdGlvbi5yZWxlYXNlKCksIGRlbGF5KSk7Cisg
ICAgcmV0dXJuIGpzTnVtYmVyKGltcGwoKS0+c2V0SW50ZXJ2YWwoYWN0aW9uLnJlbGVhc2UoKSwg
ZGVsYXkpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5jcHAKaW5kZXggODVmYzQ5NmM5YWQxZTQ4Y2M4NTdiZGNkMjlkNTBk
NTVlNjg3ZWE1ZC4uZjdkMmIwMmFjMjIzNzAwNzhmNTA1ZDkzODBmYmNhOTg3MDlhYjU3NSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIu
Y3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
LmNwcApAQCAtODYsNyArODYsNyBAQCB2b2lkIEpTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlcjo6
aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlYwogICAgICAgICBN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhl
eGVjLCBlcnJvckV2ZW50LT5tZXNzYWdlKCkpKTsKICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJp
bmcoZXhlYywgZXJyb3JFdmVudC0+ZmlsZW5hbWUoKSkpOwotICAgICAgICBhcmdzLmFwcGVuZChq
c051bWJlcihleGVjLCBlcnJvckV2ZW50LT5saW5lbm8oKSkpOworICAgICAgICBhcmdzLmFwcGVu
ZChqc051bWJlcihlcnJvckV2ZW50LT5saW5lbm8oKSkpOwogCiAgICAgICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwogICAgICAgICBEeW5h
bWljR2xvYmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xvYmFsRGF0YS5k
eW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xv
YmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rp
b25DYWxsLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RnVuY3Rpb25DYWxsLmNwcApp
bmRleCA3NzVlM2FkODZkNjk2YTc2MzBhZGY5YTczNzNhYjQ3MGQ5ODg5OTRiLi5mNzdjNjkxYmY0
MGJkYWZhOTQ2ZjE3ZmYwNDgyZDQ1ZDhmODMzZWQ3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdEZ1bmN0aW9uQ2FsbC5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRGdW5jdGlvbkNhbGwuY3BwCkBAIC04MiwzMSArODIsMzEgQEAgdm9pZCBTY3JpcHRDYWxs
QXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChKU0M6OkpTVmFsdWUgYXJndW1lbnQpCiB2
b2lkIFNjcmlwdENhbGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGxvbmcgYXJndW1l
bnQpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAgICBtX2Fy
Z3VtZW50cy5hcHBlbmQoanNOdW1iZXIobV9leGVjLCBhcmd1bWVudCkpOworICAgIG1fYXJndW1l
bnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENhbGxBcmd1
bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGxvbmcgbG9uZyBhcmd1bWVudCkKIHsKICAgICBK
U0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIG1fYXJndW1lbnRzLmFwcGVu
ZChqc051bWJlcihtX2V4ZWMsIGFyZ3VtZW50KSk7CisgICAgbV9hcmd1bWVudHMuYXBwZW5kKGpz
TnVtYmVyKGFyZ3VtZW50KSk7CiB9CiAKIHZvaWQgU2NyaXB0Q2FsbEFyZ3VtZW50SGFuZGxlcjo6
YXBwZW5kQXJndW1lbnQodW5zaWduZWQgaW50IGFyZ3VtZW50KQogewogICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVy
KG1fZXhlYywgYXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoYXJn
dW1lbnQpKTsKIH0KIAogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1
bWVudCh1bnNpZ25lZCBsb25nIGFyZ3VtZW50KQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0gICAgbV9hcmd1bWVudHMuYXBwZW5kKGpzTnVtYmVyKG1fZXhlYywg
YXJndW1lbnQpKTsKKyAgICBtX2FyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIoYXJndW1lbnQpKTsK
IH0KIAogdm9pZCBTY3JpcHRDYWxsQXJndW1lbnRIYW5kbGVyOjphcHBlbmRBcmd1bWVudChpbnQg
YXJndW1lbnQpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKLSAg
ICBtX2FyZ3VtZW50cy5hcHBlbmQoanNOdW1iZXIobV9leGVjLCBhcmd1bWVudCkpOworICAgIG1f
YXJndW1lbnRzLmFwcGVuZChqc051bWJlcihhcmd1bWVudCkpOwogfQogCiB2b2lkIFNjcmlwdENh
bGxBcmd1bWVudEhhbmRsZXI6OmFwcGVuZEFyZ3VtZW50KGJvb2wgYXJndW1lbnQpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYzlhZDBlNmI5
MDQ5N2YwNjQ2ZDEzMzM1MDFjYmU1NTcyMzBlMWE5Ni4uNjVhYmQ3NTRlN2U5YjNiZWM0YzA2ZWE1
ZDY3OTNmMmYzNDI4MzdmZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcApAQCAtMTA0MSwxMiArMTA0MSwxMiBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgaW50MzJfdCBpOwogICAgICAgICAgICAgaWYgKCFyZWFkKGkpKQogICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobV9leGVjLCBp
KTsKKyAgICAgICAgICAgIHJldHVybiBqc051bWJlcihpKTsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFplcm9UYWc6Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobV9leGVjLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBqc051bWJlcigwKTsKICAgICAgICAgY2FzZSBPbmVUYWc6Ci0gICAg
ICAgICAgICByZXR1cm4ganNOdW1iZXIobV9leGVjLCAxKTsKKyAgICAgICAgICAgIHJldHVybiBq
c051bWJlcigxKTsKICAgICAgICAgY2FzZSBGYWxzZVRhZzoKICAgICAgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICBjYXNlIFRydWVUYWc6CkBAIC0xMDU1LDcgKzEwNTUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgICAgICBpZiAoIXJl
YWQoZCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKLSAgICAgICAgICAgIHJl
dHVybiBqc051bWJlcihtX2V4ZWMsIGQpOworICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGQp
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRGF0ZVRhZzogewogICAgICAgICAgICAgZG91Ymxl
IGQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA2
Yjc3MzVhYjIxYWY1MDAwOWMwNmU5YzM2YzQ1MGRkYTQwMzY3ZjBlLi43MGMzMjdlNzI4OTI5NDgx
NjMwNzJiMjc1MDUyMGJiODU2MGZiYWRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTIxNTgsNyArMjE1OCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICBpZiAoJGNvbnN0YW50LT50eXBlIGVxICJET01TdHJpbmci
KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGpzU3Ry
aW5nT3JOdWxsKGV4ZWMsIFN0cmluZygiIC4gJGNvbnN0YW50LT52YWx1ZSAuICIpKTtcbiIpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8aW50PigiIC4gJGNvbnN0YW50
LT52YWx1ZSAuICIpKTtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsiKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50PigiIC4gJGNvbnN0YW50
LT52YWx1ZSAuICIpKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICB9CkBAIC0yMTgyLDkgKzIxODMsOSBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KICAgICAKICAgICBpZiAoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSGFzTnVtZXJpY0luZGV4R2V0dGVyIn0pIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJcbkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRCeUluZGV4KEV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJcbkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXRCeUluZGV4KEV4ZWNTdGF0ZSosIHVu
c2lnbmVkIGluZGV4KVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBqc051bWJlcihleGVjLCBzdGF0
aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGltcGwoKSktPml0ZW0oaW5kZXgpKTtcbiIpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8
JGltcGxDbGFzc05hbWUqPihpbXBsKCkpLT5pdGVtKGluZGV4KSk7XG4iKTsKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJI
VE1MQ29sbGVjdGlvbiIgb3IgJGludGVyZmFjZU5hbWUgZXEgIkhUTUxBbGxDb2xsZWN0aW9uIikg
ewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNOb2RlLmgifSA9IDE7CkBAIC0yNTczLDcg
KzI1NzQsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgfQogICAgIGlmICgkY29kZUdlbmVy
YXRvci0+SXNQcmltaXRpdmVUeXBlKCR0eXBlKSBvciAkdHlwZSBlcSAiU1ZHUGFpbnRUeXBlIiBv
ciAkdHlwZSBlcSAiRE9NVGltZVN0YW1wIikgewogICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVu
dGltZS9KU051bWJlckNlbGwuaD4ifSA9IDE7Ci0gICAgICAgIHJldHVybiAianNOdW1iZXIoZXhl
YywgJHZhbHVlKSI7CisgICAgICAgIHJldHVybiAianNOdW1iZXIoJHZhbHVlKSI7CiAgICAgfQog
CiAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CkBAIC0yOTgx
LDcgKzI5ODIsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KICAgICB9IGVs
c2UgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGlyZWN0KGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsICR7cHJvdG9DbGFzc05hbWV9OjpzZWxmKGV4ZWMsIGds
b2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSk7XG4iKTsKICAgICB9Ci0gICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBqc051bWJlcihleGVjLCAke251bWJlck9mY29uc3RydWN0UGFyYW1ldGVyc30pLCBSZWFk
T25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7XG4iKSBpZiAkbnVtYmVyT2Zjb25zdHJ1Y3RQ
YXJhbWV0ZXJzOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3QoZXhlYy0+
cHJvcGVydHlOYW1lcygpLmxlbmd0aCwganNOdW1iZXIoJHtudW1iZXJPZmNvbnN0cnVjdFBhcmFt
ZXRlcnN9KSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pO1xuIikgaWYgJG51bWJl
ck9mY29uc3RydWN0UGFyYW1ldGVyczsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIp
OwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiYm9vbCAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpXG4iKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2Uu
Y3BwCmluZGV4IDAzZTcyZmNhY2NiNDY1ODcwMzJiZDIzNDcxZDBhNDU4ZGYzNTIwYmQuLmYxZGQ0
ZTViODU0NDIzYzFkMmNmZTlkZTIzZTNhNzdhZmJjYTAzMjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKKysrIGIvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcApAQCAtMjY1LDEwICsyNjUsMTAgQEAgSlNWYWx1ZSBDSW5zdGFuY2U6OnN0cmluZ1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgYnVmKTsK
IH0KIAotSlNWYWx1ZSBDSW5zdGFuY2U6Om51bWJlclZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKK0pTVmFsdWUgQ0luc3RhbmNlOjpudW1iZXJWYWx1ZShFeGVjU3RhdGUqKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgc29tZXRoaW5nIHNlbnNpYmxlLgotICAgIHJldHVybiBq
c051bWJlcihleGVjLCAwKTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKIEpTVmFsdWUg
Q0luc3RhbmNlOjpib29sZWFuVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlk
Z2UvYy9jX3V0aWxpdHkuY3BwIGIvV2ViQ29yZS9icmlkZ2UvYy9jX3V0aWxpdHkuY3BwCmluZGV4
IGIxNjBmOWYyMDNmMmEyNWJjY2EyM2QyNWNlMDcyY2Y1NWJmNDhmZjUuLmU3ODY4OTYwNzU0ZGQ5
YzE3ZTZlZTkxZGQ2NDlhZDAxY2NlNWVmNGEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL2Mv
Y191dGlsaXR5LmNwcAorKysgYi9XZWJDb3JlL2JyaWRnZS9jL2NfdXRpbGl0eS5jcHAKQEAgLTEx
OCw5ICsxMTgsOSBAQCBKU1ZhbHVlIGNvbnZlcnROUFZhcmlhbnRUb1ZhbHVlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgTlBWYXJpYW50KiB2YXJpYW50LCBSb290TwogICAgIGlmICh0eXBlID09IE5Q
VmFyaWFudFR5cGVfVm9pZCkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaWYg
KHR5cGUgPT0gTlBWYXJpYW50VHlwZV9JbnQzMikKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4
ZWMsIE5QVkFSSUFOVF9UT19JTlQzMigqdmFyaWFudCkpOworICAgICAgICByZXR1cm4ganNOdW1i
ZXIoTlBWQVJJQU5UX1RPX0lOVDMyKCp2YXJpYW50KSk7CiAgICAgaWYgKHR5cGUgPT0gTlBWYXJp
YW50VHlwZV9Eb3VibGUpCi0gICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBOUFZBUklBTlRf
VE9fRE9VQkxFKCp2YXJpYW50KSk7CisgICAgICAgIHJldHVybiBqc051bWJlcihOUFZBUklBTlRf
VE9fRE9VQkxFKCp2YXJpYW50KSk7CiAgICAgaWYgKHR5cGUgPT0gTlBWYXJpYW50VHlwZV9TdHJp
bmcpCiAgICAgICAgIHJldHVybiBXZWJDb3JlOjpqc1N0cmluZyhleGVjLCBjb252ZXJ0TlBTdHJp
bmdUb1VURjE2KCZ2YXJpYW50LT52YWx1ZS5zdHJpbmdWYWx1ZSkpOwogICAgIGlmICh0eXBlID09
IE5QVmFyaWFudFR5cGVfT2JqZWN0KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9qbmkv
anNjL0pOSUJyaWRnZUpTQy5jcHAgYi9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0pOSUJyaWRnZUpT
Qy5jcHAKaW5kZXggOGEzNGNlZDI5OWFlZWRlZTMxMjZiYzU3MDJjZmE2MDJiNjVmYTY0Ny4uM2Mx
NmQwNTJiYmIxMWQ1YThmMDQ1NzhhOTBmZmY5ZjU3ZWQ3Mjg3MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9icmlkZ2Uvam5pL2pzYy9KTklCcmlkZ2VKU0MuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSk5JQnJpZGdlSlNDLmNwcApAQCAtMTMyLDcgKzEzMiw3IEBAIEpTVmFsdWUgSmF2YUZp
ZWxkOjp2YWx1ZUZyb21JbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEluc3RhbmNlKiBp
KSBjb25zdAogICAgICAgICAgICAgamludCB2YWx1ZTsKICAgICAgICAgICAgIGp2YWx1ZSByZXN1
bHQgPSBkaXNwYXRjaFZhbHVlRnJvbUluc3RhbmNlKGV4ZWMsIGluc3RhbmNlLCAiZ2V0SW50Iiwg
IihMamF2YS9sYW5nL09iamVjdDspSSIsIGludF90eXBlKTsKICAgICAgICAgICAgIHZhbHVlID0g
cmVzdWx0Lmk7Ci0gICAgICAgICAgICBqc3Jlc3VsdCA9IGpzTnVtYmVyKGV4ZWMsIHN0YXRpY19j
YXN0PGludD4odmFsdWUpKTsKKyAgICAgICAgICAgIGpzcmVzdWx0ID0ganNOdW1iZXIoc3RhdGlj
X2Nhc3Q8aW50Pih2YWx1ZSkpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC0xNDMs
NyArMTQzLDcgQEAgSlNWYWx1ZSBKYXZhRmllbGQ6OnZhbHVlRnJvbUluc3RhbmNlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSW5zdGFuY2UqIGkpIGNvbnN0CiAgICAgICAgICAgICBqZG91YmxlIHZh
bHVlOwogICAgICAgICAgICAganZhbHVlIHJlc3VsdCA9IGRpc3BhdGNoVmFsdWVGcm9tSW5zdGFu
Y2UoZXhlYywgaW5zdGFuY2UsICJnZXREb3VibGUiLCAiKExqYXZhL2xhbmcvT2JqZWN0OylEIiwg
ZG91YmxlX3R5cGUpOwogICAgICAgICAgICAgdmFsdWUgPSByZXN1bHQuaTsKLSAgICAgICAgICAg
IGpzcmVzdWx0ID0ganNOdW1iZXIoZXhlYywgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkpOwor
ICAgICAgICAgICAganNyZXN1bHQgPSBqc051bWJlcihzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVl
KSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTM4MCw3ICsz
ODAsNyBAQCBKU1ZhbHVlIEphdmFBcnJheTo6dmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2ln
bmVkIGluZGV4KSBjb25zdAogICAgICAgICAgICAgamJ5dGVBcnJheSBieXRlQXJyYXkgPSBzdGF0
aWNfY2FzdDxqYnl0ZUFycmF5PihqYXZhQXJyYXkoKSk7CiAgICAgICAgICAgICBqYnl0ZSBhQnl0
ZTsKICAgICAgICAgICAgIGVudi0+R2V0Qnl0ZUFycmF5UmVnaW9uKGJ5dGVBcnJheSwgaW5kZXgs
IDEsICZhQnl0ZSk7Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgYUJ5dGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGFCeXRlKTsKICAgICAgICAgfQogCiAgICAgY2Fz
ZSBjaGFyX3R5cGU6CkBAIC0zODgsNyArMzg4LDcgQEAgSlNWYWx1ZSBKYXZhQXJyYXk6OnZhbHVl
QXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICAgICAgICAgIGpj
aGFyQXJyYXkgY2hhckFycmF5ID0gc3RhdGljX2Nhc3Q8amNoYXJBcnJheT4oamF2YUFycmF5KCkp
OwogICAgICAgICAgICAgamNoYXIgYUNoYXI7CiAgICAgICAgICAgICBlbnYtPkdldENoYXJBcnJh
eVJlZ2lvbihjaGFyQXJyYXksIGluZGV4LCAxLCAmYUNoYXIpOwotICAgICAgICAgICAgcmV0dXJu
IGpzTnVtYmVyKGV4ZWMsIGFDaGFyKTsKKyAgICAgICAgICAgIHJldHVybiBqc051bWJlcihhQ2hh
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0zOTcsNyArMzk3LDcgQEAg
SlNWYWx1ZSBKYXZhQXJyYXk6OnZhbHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmRl
eCkgY29uc3QKICAgICAgICAgICAgIGpzaG9ydEFycmF5IHNob3J0QXJyYXkgPSBzdGF0aWNfY2Fz
dDxqc2hvcnRBcnJheT4oamF2YUFycmF5KCkpOwogICAgICAgICAgICAganNob3J0IGFTaG9ydDsK
ICAgICAgICAgICAgIGVudi0+R2V0U2hvcnRBcnJheVJlZ2lvbihzaG9ydEFycmF5LCBpbmRleCwg
MSwgJmFTaG9ydCk7Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgYVNob3J0KTsK
KyAgICAgICAgICAgIHJldHVybiBqc051bWJlcihhU2hvcnQpOwogICAgICAgICB9CiAKICAgICBj
YXNlIGludF90eXBlOgpAQCAtNDA1LDcgKzQwNSw3IEBAIEpTVmFsdWUgSmF2YUFycmF5Ojp2YWx1
ZUF0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgICAgICAgICBq
aW50QXJyYXkgaW50QXJyYXkgPSBzdGF0aWNfY2FzdDxqaW50QXJyYXk+KGphdmFBcnJheSgpKTsK
ICAgICAgICAgICAgIGppbnQgYW5JbnQ7CiAgICAgICAgICAgICBlbnYtPkdldEludEFycmF5UmVn
aW9uKGludEFycmF5LCBpbmRleCwgMSwgJmFuSW50KTsKLSAgICAgICAgICAgIHJldHVybiBqc051
bWJlcihleGVjLCBhbkludCk7CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoYW5JbnQpOwog
ICAgICAgICB9CiAKICAgICBjYXNlIGxvbmdfdHlwZToKQEAgLTQxMyw3ICs0MTMsNyBAQCBKU1Zh
bHVlIEphdmFBcnJheTo6dmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGluZGV4KSBj
b25zdAogICAgICAgICAgICAgamxvbmdBcnJheSBsb25nQXJyYXkgPSBzdGF0aWNfY2FzdDxqbG9u
Z0FycmF5PihqYXZhQXJyYXkoKSk7CiAgICAgICAgICAgICBqbG9uZyBhTG9uZzsKICAgICAgICAg
ICAgIGVudi0+R2V0TG9uZ0FycmF5UmVnaW9uKGxvbmdBcnJheSwgaW5kZXgsIDEsICZhTG9uZyk7
Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgYUxvbmcpOworICAgICAgICAgICAg
cmV0dXJuIGpzTnVtYmVyKGFMb25nKTsKICAgICAgICAgfQogCiAgICAgY2FzZSBmbG9hdF90eXBl
OgpAQCAtNDIxLDcgKzQyMSw3IEBAIEpTVmFsdWUgSmF2YUFycmF5Ojp2YWx1ZUF0KEV4ZWNTdGF0
ZSogZXhlYywgdW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgICAgICAgICBqZmxvYXRBcnJheSBm
bG9hdEFycmF5ID0gc3RhdGljX2Nhc3Q8amZsb2F0QXJyYXk+KGphdmFBcnJheSgpKTsKICAgICAg
ICAgICAgIGpmbG9hdCBhRmxvYXQ7CiAgICAgICAgICAgICBlbnYtPkdldEZsb2F0QXJyYXlSZWdp
b24oZmxvYXRBcnJheSwgaW5kZXgsIDEsICZhRmxvYXQpOwotICAgICAgICAgICAgcmV0dXJuIGpz
TnVtYmVyKGV4ZWMsIGFGbG9hdCk7CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoYUZsb2F0
KTsKICAgICAgICAgfQogCiAgICAgY2FzZSBkb3VibGVfdHlwZToKQEAgLTQyOSw3ICs0MjksNyBA
QCBKU1ZhbHVlIEphdmFBcnJheTo6dmFsdWVBdChFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIGlu
ZGV4KSBjb25zdAogICAgICAgICAgICAgamRvdWJsZUFycmF5IGRvdWJsZUFycmF5ID0gc3RhdGlj
X2Nhc3Q8amRvdWJsZUFycmF5PihqYXZhQXJyYXkoKSk7CiAgICAgICAgICAgICBqZG91YmxlIGFE
b3VibGU7CiAgICAgICAgICAgICBlbnYtPkdldERvdWJsZUFycmF5UmVnaW9uKGRvdWJsZUFycmF5
LCBpbmRleCwgMSwgJmFEb3VibGUpOwotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMs
IGFEb3VibGUpOworICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGFEb3VibGUpOwogICAgICAg
ICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jy
aWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAgYi9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFJbnN0YW5jZUpTQy5jcHAKaW5kZXggNzIxODY4ODNmMWUxMjU5NGYyNzE5NjlmN2ZlZDk4
MTAzNDhmMjQ5ZC4uNjMzMjU0NWM1MjhhNjIyZjA3NGI1NzNjNDE3ZjE5MGRjMmViM2ZkOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCisrKyBi
L1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcApAQCAtOTksMTAgKzk5
LDEwIEBAIEpTVmFsdWUgSmF2YUluc3RhbmNlOjpzdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHUpOwogfQogCi1KU1ZhbHVlIEphdmFJ
bnN0YW5jZTo6bnVtYmVyVmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorSlNWYWx1ZSBKYXZh
SW5zdGFuY2U6Om51bWJlclZhbHVlKEV4ZWNTdGF0ZSopIGNvbnN0CiB7CiAgICAgamRvdWJsZSBk
b3VibGVWYWx1ZSA9IGNhbGxKTklNZXRob2Q8amRvdWJsZT4obV9pbnN0YW5jZS0+bV9pbnN0YW5j
ZSwgImRvdWJsZVZhbHVlIiwgIigpRCIpOwotICAgIHJldHVybiBqc051bWJlcihleGVjLCBkb3Vi
bGVWYWx1ZSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGRvdWJsZVZhbHVlKTsKIH0KIAogSlNWYWx1
ZSBKYXZhSW5zdGFuY2U6OmJvb2xlYW5WYWx1ZSgpIGNvbnN0CkBAIC0yNzksNDMgKzI3OSw0MyBA
QCBKU1ZhbHVlIEphdmFJbnN0YW5jZTo6aW52b2tlTWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUnVu
dGltZU1ldGhvZCogcnVudGltZU1ldGhvZAogCiAgICAgY2FzZSBieXRlX3R5cGU6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJlc3VsdFZhbHVlID0ganNOdW1iZXIoZXhlYywgcmVzdWx0LmIpOwor
ICAgICAgICAgICAgcmVzdWx0VmFsdWUgPSBqc051bWJlcihyZXN1bHQuYik7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIGNoYXJfdHlwZToKICAgICAgICAgewotICAgICAg
ICAgICAgcmVzdWx0VmFsdWUgPSBqc051bWJlcihleGVjLCByZXN1bHQuYyk7CisgICAgICAgICAg
ICByZXN1bHRWYWx1ZSA9IGpzTnVtYmVyKHJlc3VsdC5jKTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2Ugc2hvcnRfdHlwZToKICAgICAgICAgewotICAgICAgICAgICAgcmVz
dWx0VmFsdWUgPSBqc051bWJlcihleGVjLCByZXN1bHQucyk7CisgICAgICAgICAgICByZXN1bHRW
YWx1ZSA9IGpzTnVtYmVyKHJlc3VsdC5zKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgaW50X3R5cGU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdFZhbHVlID0g
anNOdW1iZXIoZXhlYywgcmVzdWx0LmkpOworICAgICAgICAgICAgcmVzdWx0VmFsdWUgPSBqc051
bWJlcihyZXN1bHQuaSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIGxv
bmdfdHlwZToKICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0VmFsdWUgPSBqc051bWJlcihl
eGVjLCByZXN1bHQuaik7CisgICAgICAgICAgICByZXN1bHRWYWx1ZSA9IGpzTnVtYmVyKHJlc3Vs
dC5qKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgZmxvYXRfdHlwZToK
ICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0VmFsdWUgPSBqc051bWJlcihleGVjLCByZXN1
bHQuZik7CisgICAgICAgICAgICByZXN1bHRWYWx1ZSA9IGpzTnVtYmVyKHJlc3VsdC5mKTsKICAg
ICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgZG91YmxlX3R5cGU6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJlc3VsdFZhbHVlID0ganNOdW1iZXIoZXhlYywgcmVzdWx0LmQpOwor
ICAgICAgICAgICAgcmVzdWx0VmFsdWUgPSBqc051bWJlcihyZXN1bHQuZCk7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbSBiL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQppbmRleCA5
ODlkOWViOWNiZTg2YWRiMzEyYjQ0MTg4Zjg1YmMyM2UxNDM3NWY0Li5hZTlkOTVkYTY4ODg5ZDg1
NWU4YjIzMGRmMTNhYWE4ZWMxNWM1MDY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0KKysrIGIvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCkBAIC00NDcsMTAgKzQ0NywxMCBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6c3RyaW5nVmFs
dWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIHJldHVybiBjb252ZXJ0TlNTdHJpbmdUb1N0
cmluZyhleGVjLCBbZ2V0T2JqZWN0KCkgZGVzY3JpcHRpb25dKTsKIH0KIAotSlNWYWx1ZSBPYmpj
SW5zdGFuY2U6Om51bWJlclZhbHVlKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK0pTVmFsdWUgT2Jq
Y0luc3RhbmNlOjpudW1iZXJWYWx1ZShFeGVjU3RhdGUqKSBjb25zdAogewogICAgIC8vIEZJWE1F
OiAgSW1wbGVtZW50IHNvbWV0aGluZyBzZW5zaWJsZQotICAgIHJldHVybiBqc051bWJlcihleGVj
LCAwKTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKIEpTVmFsdWUgT2JqY0luc3RhbmNl
Ojpib29sZWFuVmFsdWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3V0aWxpdHkubW0gYi9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0eS5tbQppbmRl
eCA4ZWI3YmE1N2RhMmQ0MjhjMzNjZmY4ODVlNGZiZDA0NTFhNWFhZjU5Li5kZmJhODUyMzhiNWNm
Nzk0NDBjMTI4NTQ2MDI5NjU1OTFkZGVkNzU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9v
YmpjL29iamNfdXRpbGl0eS5tbQorKysgYi9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfdXRpbGl0
eS5tbQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpTVmFsdWUgY29udmVydE9iamNWYWx1ZVRvVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCB2b2lkKiBidWZmZXIsIE9iamNWYWx1ZVR5cGUgdHlwCiAgICAgICAg
ICAgICBpZiAoKENGQm9vbGVhblJlZilvYmogPT0ga0NGQm9vbGVhbkZhbHNlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAgICAgICAgICAgaWYgKFtvYmogaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgICAgICAgICByZXR1cm4ganNO
dW1iZXIoZXhlYywgW29iaiBkb3VibGVWYWx1ZV0pOworICAgICAgICAgICAgICAgIHJldHVybiBq
c051bWJlcihbb2JqIGRvdWJsZVZhbHVlXSk7CiAgICAgICAgICAgICBpZiAoW29iaiBpc0tpbmRP
ZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAoZXhl
YykgUnVudGltZUFycmF5KGV4ZWMsIG5ldyBPYmpjQXJyYXkob2JqLCByb290T2JqZWN0KSk7CiAg
ICAgICAgICAgICBpZiAoW29iaiBpc0tpbmRPZkNsYXNzOndlYlNjcmlwdE9iamVjdENsYXNzKCld
KSB7CkBAIC0yNTYsMjkgKzI1NiwyOSBAQCBKU1ZhbHVlIGNvbnZlcnRPYmpjVmFsdWVUb1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogYnVmZmVyLCBPYmpjVmFsdWVUeXBlIHR5cAogICAgICAg
ICAgICAgcmV0dXJuIE9iamNJbnN0YW5jZTo6Y3JlYXRlKG9iaiwgcm9vdE9iamVjdCktPmNyZWF0
ZVJ1bnRpbWVPYmplY3QoZXhlYyk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBPYmpjQ2hhclR5
cGU6Ci0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgKihjaGFyKilidWZmZXIpOwor
ICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKCooY2hhciopYnVmZmVyKTsKICAgICAgICAgY2Fz
ZSBPYmpjVW5zaWduZWRDaGFyVHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlcihleGVj
LCAqKHVuc2lnbmVkIGNoYXIqKWJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIo
Kih1bnNpZ25lZCBjaGFyKilidWZmZXIpOwogICAgICAgICBjYXNlIE9iamNTaG9ydFR5cGU6Ci0g
ICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgKihzaG9ydCopYnVmZmVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBqc051bWJlcigqKHNob3J0KilidWZmZXIpOwogICAgICAgICBjYXNlIE9i
amNVbnNpZ25lZFNob3J0VHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCAq
KHVuc2lnbmVkIHNob3J0KilidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKCoo
dW5zaWduZWQgc2hvcnQqKWJ1ZmZlcik7CiAgICAgICAgIGNhc2UgT2JqY0ludFR5cGU6Ci0gICAg
ICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgKihpbnQqKWJ1ZmZlcik7CisgICAgICAgICAg
ICByZXR1cm4ganNOdW1iZXIoKihpbnQqKWJ1ZmZlcik7CiAgICAgICAgIGNhc2UgT2JqY1Vuc2ln
bmVkSW50VHlwZToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCAqKHVuc2lnbmVk
IGludCopYnVmZmVyKTsKKyAgICAgICAgICAgIHJldHVybiBqc051bWJlcigqKHVuc2lnbmVkIGlu
dCopYnVmZmVyKTsKICAgICAgICAgY2FzZSBPYmpjTG9uZ1R5cGU6Ci0gICAgICAgICAgICByZXR1
cm4ganNOdW1iZXIoZXhlYywgKihsb25nKilidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIGpz
TnVtYmVyKCoobG9uZyopYnVmZmVyKTsKICAgICAgICAgY2FzZSBPYmpjVW5zaWduZWRMb25nVHlw
ZToKLSAgICAgICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCAqKHVuc2lnbmVkIGxvbmcqKWJ1
ZmZlcik7CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoKih1bnNpZ25lZCBsb25nKilidWZm
ZXIpOwogICAgICAgICBjYXNlIE9iamNMb25nTG9uZ1R5cGU6Ci0gICAgICAgICAgICByZXR1cm4g
anNOdW1iZXIoZXhlYywgKihsb25nIGxvbmcqKWJ1ZmZlcik7CisgICAgICAgICAgICByZXR1cm4g
anNOdW1iZXIoKihsb25nIGxvbmcqKWJ1ZmZlcik7CiAgICAgICAgIGNhc2UgT2JqY1Vuc2lnbmVk
TG9uZ0xvbmdUeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsICoodW5zaWdu
ZWQgbG9uZyBsb25nKilidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKCoodW5z
aWduZWQgbG9uZyBsb25nKilidWZmZXIpOwogICAgICAgICBjYXNlIE9iamNGbG9hdFR5cGU6Ci0g
ICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgKihmbG9hdCopYnVmZmVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBqc051bWJlcigqKGZsb2F0KilidWZmZXIpOwogICAgICAgICBjYXNlIE9i
amNEb3VibGVUeXBlOgotICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsICooZG91Ymxl
KilidWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKCooZG91YmxlKilidWZmZXIp
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8gU2hvdWxkIG5ldmVyIGdldCBoZXJl
LiBBcmd1bWVudCB0eXBlcyBhcmUgZmlsdGVyZWQuCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIiVzOiBpbnZhbGlkIHR5cGUgKCVkKVxuIiwgX19QUkVUVFlfRlVOQ1RJT05fXywgKGludCl0
eXBlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuY3BwIGIvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKaW5kZXggY2ExMmY0OGMxNDE2YjEwOGNjMGJl
MDllMGIxZTdmMWFiNmI3MjE4Yy4uMmQwYjdlMzJmZTg5M2Y4MGRjNWIwM2NlNzA0MTBmOGQzYTYx
ZmJmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKKysrIGIv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5jcHAKQEAgLTUwLDEwICs1MCwxMCBAQCBSdW50
aW1lQXJyYXk6On5SdW50aW1lQXJyYXkoKQogICAgIGRlbGV0ZSBnZXRDb25jcmV0ZUFycmF5KCk7
CiB9CiAKLUpTVmFsdWUgUnVudGltZUFycmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUgUnVudGltZUFy
cmF5OjpsZW5ndGhHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRl
bnRpZmllciYpCiB7CiAgICAgUnVudGltZUFycmF5KiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8UnVu
dGltZUFycmF5Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKLSAgICByZXR1cm4ganNOdW1iZXIoZXhl
YywgdGhpc09iai0+Z2V0TGVuZ3RoKCkpOworICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5n
ZXRMZW5ndGgoKSk7CiB9CiAKIEpTVmFsdWUgUnVudGltZUFycmF5OjppbmRleEdldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGluZGV4KQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwIGIvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9tZXRob2QuY3BwCmluZGV4IDE1ZTAyOWM1YWUyMTc1ZjQ5ODkyODY5ZDZiNTQ2ZTU5Mjcx
ZjE2ZmUuLjhhNjFmMmVhYzExNzg4NDk4N2IxOTkyM2M4NDVjZTI3ZDUxNjFhNGEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAorKysgYi9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX21ldGhvZC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgUnVudGltZU1ldGhvZDo6UnVu
dGltZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnMKIHsKIH0KIAotSlNWYWx1ZSBSdW50aW1lTWV0aG9kOjpsZW5ndGhHZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK0pTVmFsdWUg
UnVudGltZU1ldGhvZDo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUgc2xvdEJhc2Us
IGNvbnN0IElkZW50aWZpZXImKQogewogICAgIFJ1bnRpbWVNZXRob2QqIHRoaXNPYmogPSBzdGF0
aWNfY2FzdDxSdW50aW1lTWV0aG9kKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKIApAQCAtNjIsNyAr
NjIsNyBAQCBKU1ZhbHVlIFJ1bnRpbWVNZXRob2Q6Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZQogICAgIC8vIEphdmEgZG9lcy4KICAgICAv
LyBGSVhNRTogYSBiZXR0ZXIgc29sdXRpb24gbWlnaHQgYmUgdG8gZ2l2ZSB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgcGFyYW1ldGVycwogICAgIC8vIG9mIGFueSBtZXRob2QKLSAgICByZXR1cm4ganNO
dW1iZXIoZXhlYywgdGhpc09iai0+X21ldGhvZExpc3QtPmF0KDApLT5udW1QYXJhbWV0ZXJzKCkp
OworICAgIHJldHVybiBqc051bWJlcih0aGlzT2JqLT5fbWV0aG9kTGlzdC0+YXQoMCktPm51bVBh
cmFtZXRlcnMoKSk7CiB9CiAKIGJvb2wgUnVudGltZU1ldGhvZDo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QgJnNsb3QpCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCmluZGV4IDVjMGIyNWFjMTZlYTNkYjEwYTYwODA4YjE1ZjM2NWE4NDMxZDRm
ODguLjNmODEzN2E5NWM1YjUzZWFhNWVlNWVlMjBmNDk2YjM4MWYyNWMxOGQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTAtMTAtMjUgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZXhl
YyBhbmQgZ2xvYmFsRGF0YSBhcmd1bWVudHMgZnJvbSBqc051bWJlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDgyNzAKKworICAgICAgICBNZWNoYW5p
Y2FsIHJlbW92YWwgb2YgZXhlYyBwYXJhbWV0ZXIgdG8ganNOdW1iZXIKKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjpkZW1hcnNoYWxWYWx1ZUZyb21BcnJh
eSk6CisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbToKKyAgICAgICAg
KFdlYktpdDo6UHJveHlJbnN0YW5jZTo6bnVtYmVyVmFsdWUpOgorCiAyMDEwLTEwLTI0ICBEYW4g
QmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbQppbmRleCAxMGU5YjQyNWU3YmUxZWU5M2FjNmIwMWVj
MzE4MjY2N2YxZGI5MGYzLi5hMmQ0YTk2YjhiNzA5NzJmNWI0MDY4ZmUyNzNiNjA0OWJhMTFkOWYx
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQorKysgYi9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtMTMzNCw3ICsxMzM0LDcgQEAgYm9vbCBOZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHk6OmRlbWFyc2hhbFZhbHVlRnJvbUFycmF5KEV4ZWNTdGF0ZSogZXhl
YywgTlNBcnIKICAgICAgICAgICAgIHJlc3VsdCA9IGpzQm9vbGVhbihbW2FycmF5IG9iamVjdEF0
SW5kZXg6aW5kZXgrK10gYm9vbFZhbHVlXSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgY2FzZSBEb3VibGVWYWx1ZVR5cGU6Ci0gICAgICAgICAgICByZXN1bHQgPSBqc051bWJl
cihleGVjLCBbW2FycmF5IG9iamVjdEF0SW5kZXg6aW5kZXgrK10gZG91YmxlVmFsdWVdKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKFtbYXJyYXkgb2JqZWN0QXRJbmRleDppbmRleCsr
XSBkb3VibGVWYWx1ZV0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2Ug
U3RyaW5nVmFsdWVUeXBlOiB7CiAgICAgICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW2FycmF5
IG9iamVjdEF0SW5kZXg6aW5kZXgrK107CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1BsdWdpbnMv
SG9zdGVkL1Byb3h5SW5zdGFuY2UubW0gYi9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5
SW5zdGFuY2UubW0KaW5kZXggMTFhZGU4Y2I3M2I1NGMzZWNlMDljMTdmYmVjMDJlMDI0N2U1NDE5
My4uOTI3YTAwOGU4N2M4MTExMDgyZmExMjEzMmU5OTlhYmZhMDZiMTc1MCAxMDA2NDQKLS0tIGEv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpAQCAtMjczLDEwICsyNzMsMTAgQEAg
SlNWYWx1ZSBQcm94eUluc3RhbmNlOjpzdHJpbmdWYWx1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiAgICAgcmV0dXJuIGpzRW1wdHlTdHJpbmcoZXhlYyk7CiB9CiAKLUpTVmFsdWUgUHJveHlJbnN0
YW5jZTo6bnVtYmVyVmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAorSlNWYWx1ZSBQcm94eUlu
c3RhbmNlOjpudW1iZXJWYWx1ZShFeGVjU3RhdGUqKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgc29tZXRoaW5nIHNlbnNpYmxlLgotICAgIHJldHVybiBqc051bWJlcihleGVjLCAw
KTsKKyAgICByZXR1cm4ganNOdW1iZXIoMCk7CiB9CiAKIEpTVmFsdWUgUHJveHlJbnN0YW5jZTo6
Ym9vbGVhblZhbHVlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzQ0OThlMzhiYjVkYzNmYzFjODY4MzgzZDY1YWY2ZjE3NDFi
ZWMzYy4uYzg4OTA3MDVkOTRhNzc4YjMwNDlmZWU3NzZkYzdiMTZmMjNkNzJiOSAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxMC0xMC0yNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBleGVjIGFu
ZCBnbG9iYWxEYXRhIGFyZ3VtZW50cyBmcm9tIGpzTnVtYmVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODI3MAorCisgICAgICAgIE1lY2hhbmljYWwg
cmVtb3ZhbCBvZiBleGVjIHBhcmFtZXRlciB0byBqc051bWJlcgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5Q
UnVudGltZU9iamVjdE1hcDo6Y29udmVydE5QVmFyaWFudFRvSlNWYWx1ZSk6CisKIDIwMTAtMTAt
MjUgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTlBS
dW50aW1lT2JqZWN0TWFwLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVudGlt
ZU9iamVjdE1hcC5jcHAKaW5kZXggYTM5YmFhZTA2ODQxMjYwNjg1NDMyNDZlNmJiY2JjZjRkMzZj
ZTFjOS4uNzMyOGQ5ZDIyYmIxZDc1MTY5ZmQwOWNiMGI2MjI4ZjM3NTM0YTIyMCAxMDA2NDQKLS0t
IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAorKysg
Yi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0x
MjIsMTAgKzEyMiwxMCBAQCBKU1ZhbHVlIE5QUnVudGltZU9iamVjdE1hcDo6Y29udmVydE5QVmFy
aWFudFRvSlNWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOgogICAgICAgICByZXR1cm4g
anNCb29sZWFuKHZhcmlhbnQudmFsdWUuYm9vbFZhbHVlKTsKIAogICAgIGNhc2UgTlBWYXJpYW50
VHlwZV9JbnQzMjoKLSAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHZhcmlhbnQudmFsdWUu
aW50VmFsdWUpOworICAgICAgICByZXR1cm4ganNOdW1iZXIodmFyaWFudC52YWx1ZS5pbnRWYWx1
ZSk7CiAKICAgICBjYXNlIE5QVmFyaWFudFR5cGVfRG91YmxlOgotICAgICAgICByZXR1cm4ganNO
dW1iZXIoZXhlYywgdmFyaWFudC52YWx1ZS5kb3VibGVWYWx1ZSk7CisgICAgICAgIHJldHVybiBq
c051bWJlcih2YXJpYW50LnZhbHVlLmRvdWJsZVZhbHVlKTsKIAogICAgIGNhc2UgTlBWYXJpYW50
VHlwZV9TdHJpbmc6CiAgICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21V
VEY4V2l0aExhdGluMUZhbGxiYWNrKHZhcmlhbnQudmFsdWUuc3RyaW5nVmFsdWUuVVRGOENoYXJh
Y3RlcnMsIAo=
</data>
<flag name="review"
          id="61925"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>