<?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>143838</bug_id>
          
          <creation_ts>2015-04-16 12:27:23 -0700</creation_ts>
          <short_desc>[ES6] Use specific functions for @@iterator functions</short_desc>
          <delta_ts>2015-04-16 14:36:36 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>ljharb</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086015</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 12:27:23 -0700</bug_when>
    <thetext>In ES6, some functions are used as the method with the different names.

For example,

Map.protoytpe[Symbol.iterator] === Map.prototype.entries
Set.protoytpe[Symbol.iterator] === Set.prototype.values
Array.protoytpe[Symbol.iterator] === Array.prototype.values
%Arguments%[Symbol.iterator] === Array.prototype.values

And we dropp Arguments&apos; iterator implementation and its method for @@iterator since now they use Array Iterator and Array.protoype.values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086023</commentid>
    <comment_count>1</comment_count>
      <attachid>250940</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 12:40:36 -0700</bug_when>
    <thetext>Created attachment 250940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086043</commentid>
    <comment_count>2</comment_count>
      <attachid>250945</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 13:15:29 -0700</bug_when>
    <thetext>Created attachment 250945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086051</commentid>
    <comment_count>3</comment_count>
      <attachid>250945</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-16 13:23:16 -0700</bug_when>
    <thetext>Comment on attachment 250945
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086073</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-04-16 14:36:36 -0700</bug_when>
    <thetext>Committed r182911: &lt;http://trac.webkit.org/changeset/182911&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250940</attachid>
            <date>2015-04-16 12:40:36 -0700</date>
            <delta_ts>2015-04-16 13:15:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143838-20150417043937.patch</filename>
            <type>text/plain</type>
            <size>58089</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MGMwZjUyOGNlMjI5OTk2Y2U5OTZjYTJjZWMxODRkNTY0ZjA3Njk4Li5lOTgxNWU5NGRiM2M0MzNl
Zjg5NTkzODgxMDRjZWM4MWI4NTM5YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNS0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBVc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBAQGl0ZXJh
dG9yIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gRVM2LCBzb21lIGZ1bmN0aW9ucyBhcmUgdXNlZCBhcyB0aGUgbWV0aG9kIHdpdGgg
dGhlIGRpZmZlcmVudCBuYW1lcy4KKworICAgICAgICBGb3IgZXhhbXBsZSwKKworICAgICAgICBN
YXAucHJvdG95dHBlW1N5bWJvbC5pdGVyYXRvcl0gPT09IE1hcC5wcm90b3R5cGUuZW50cmllcwor
ICAgICAgICBTZXQucHJvdG95dHBlW1N5bWJvbC5pdGVyYXRvcl0gPT09IFNldC5wcm90b3R5cGUu
dmFsdWVzCisgICAgICAgIEFycmF5LnByb3RveXRwZVtTeW1ib2wuaXRlcmF0b3JdID09PSBBcnJh
eS5wcm90b3R5cGUudmFsdWVzCisgICAgICAgICVBcmd1bWVudHMlW1N5bWJvbC5pdGVyYXRvcl0g
PT09IEFycmF5LnByb3RvdHlwZS52YWx1ZXMKKworICAgICAgICBBbmQgd2UgZHJvcHAgQXJndW1l
bnRzJyBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbiBhbmQgaXRzIG1ldGhvZCBmb3IgQEBpdGVyYXRv
cgorICAgICAgICBzaW5jZSBub3cgdGhleSB1c2UgQXJyYXkgSXRlcmF0b3IgYW5kIEFycmF5LnBy
b3RveXBlLnZhbHVlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvajoKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdWJ0eXBlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGllcyk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmg6IFJlbW92ZWQu
CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHA6IFJlbW92
ZWQuCisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpBcnJheVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6Cisg
ICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAg
ICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpwdXQpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1
bWVudHM6OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6bWF0ZXJp
YWxpemVTcGVjaWFscyk6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9E
aXJlY3RBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpEaXJlY3RBcmd1bWVudHM6Om92ZXJy
aWRlVGhpbmdzKToKKyAgICAgICAgKiBydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5U2xv
dCk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpwdXQpOgorICAg
ICAgICAoSlNDOjpHZW5lcmljQXJndW1lbnRzPFR5cGU+OjpkZWxldGVQcm9wZXJ0eSk6CisgICAg
ICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlZmluZU93blByb3BlcnR5KToKKyAg
ICAgICAgKiBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwOiBSZW1vdmVkLgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5oOiBSZW1vdmVkLgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0OjphcnJheVByb3RvVmFsdWVzRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTWFw
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlND
OjpTY29wZWRBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdzKToKKyAgICAgICAgKiBydW50aW1lL1Nl
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hcmd1bWVudHMtaXRlcmF0b3IuanM6IEFkZGVk
LgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0QXJndW1lbnRzKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvaXRlcmF0b3ItZnVuY3Rpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAoYXJndW1lbnRzVGVzdHMpOgorCiAyMDE1LTA0LTE2ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHRoZSB1bm5lY2Vzc2Fy
eSBXVEZfQ0hBTkdFUyBkZWZpbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRl
eCBiMDI4ZWVkOTBjNjBkYTlkMmM1Y2NkYzY3OTQ3MzFjNWJiMWZlM2MxLi5jZWZhODdlOWZmZGMy
M2Y4MWI0ODZkODU5MzY1NTBmNmIzMmQ5NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0zOTksOCArMzk5LDYgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKIAog
c2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvQXJnTGlzdC5j
cHAKLSAgICBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCi0gICAgcnVu
dGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0FycmF5QnVm
ZmVyLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAog
ICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcApAQCAtNDU4LDcgKzQ1Niw2IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBydW50aW1lL0l0ZXJhdG9yT3BlcmF0
aW9ucy5jcHAKICAgICBydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmNwcAogICAgIHJ1bnRpbWUv
SlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwCi0gICAgcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9y
LmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheS5jcHAKICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXIu
Y3BwCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA3ZDRiNzM2MWQ4NDZmMzc5ZWE1MDczMjk0
ZGZhZTM0NDU3MTZmOTdjLi4yY2MxOGFlM2FlYmRkYjYyYzAxZDI0NzlhNzE2NmUzNGQ0YjZmMmFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTY2OCw4ICs2Njgs
NiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccHJvZmlsZXJcUHJvZmlsZXJPU1JFeGl0
U2l0ZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxl
clByb2ZpbGVkQnl0ZWNvZGVzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcQXJnTGlzdC5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIiAvPgotICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccnVudGltZVxBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVmZmVyLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZm
ZXJWaWV3LmNwcCIgLz4KQEAgLTcyOCw3ICs3MjYsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0xleGljYWxFbnZpcm9ubWVudC5jcHAiIC8+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJndW1lbnRzSXRlcmF0b3IuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5LmNwcCIgLz4KLSAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUJ1ZmZlci5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlCdWZmZXJQcm90
b3R5cGUuY3BwIiAvPgpAQCAtMTUxNyw3ICsxNTE0LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSXRlcmF0b3JPcGVyYXRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEpTQVBJVmFsdWVXcmFwcGVyLmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTTGV4aWNhbEVudmlyb25tZW50LmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJndW1lbnRzSXRlcmF0b3IuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIiAvPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4
IDc2MjE3MDg1MTc1ODlmZWNmZjU5ZWVlNTZkMWUxNzA3Y2U4ZWYzODQuLjk1NWJjMWZkMDc1Njky
OGY1MjE3NmIxOTc1NWRlZjg5MTk5NjY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTEzMjYsMTIgKzEzMjYsNiBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5jcHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KLSAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcTWFwSXRlcmF0b3JDb25z
dHJ1Y3Rvci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENv
bXBpbGU+CkBAIC0xMzQ0LDkgKzEzMzgsNiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cnVudGltZVxKU0FycmF5SXRlcmF0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNNYXBJdGVyYXRvci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbENvbXBpbGU+CkBAIC0zNzQ0LDkgKzM3MzUsNiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU0FycmF5SXRlcmF0b3IuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNBcmd1bWVudHNJdGVyYXRvci5oIj4KLSAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmls
dGVyPgotICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU01hcEl0ZXJhdG9yLmgiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIwOWQyNDI4MzYx
YzUwY2JkZDU4NDc4NTdiMTk2NTdmMTIyYjNhNzcuLjBiMTllODVmMzgyYmEzYzUzMGRiYTA5ODJl
MWQ1YWRhY2ZmYWU5MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzM5LDEy
ICsxMzM5LDYgQEAKIAkJQTc0REVGOTYxODJEOTkxNDAwNTIyQzIyIC8qIEpTTWFwSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NERFRjkw
MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc1NzA2REUxMThBMkJDRjAwNTdGODhGIC8q
IEpJVEFyaXRobWV0aWMzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzU3MDZERDExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJpdGhtZXRpYzMy
XzY0LmNwcCAqLzsgfTsKIAkJQTc1RUU5QjIxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1l
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1RUU5
QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5oICovOyB9OwotCQlBNzYxNDBDRDE4
Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDNzE4Mjk4MkNC
MDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07Ci0JCUE3
NjE0MENFMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYxNDBDODE4
Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovOyB9Owot
CQlBNzYxNDBDRjE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MTQw
QzkxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLzsg
fTsKLQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzYx
NDBDQTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuaCAqLzsg
fTsKLQkJQTc2MTQwRDExODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MTQwQ0Ix
ODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuY3BwICovOyB9OwotCQlBNzYx
NDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MTQwQ0MxODI5ODJDQjAwNzUw
NjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCAqLzsgfTsKIAkJQTc2NkI0NEYwRUU4RENEMTAw
OTUxOENBIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRh
YmxlQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQTc2N0I1QjUxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJDcmVh
dGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE3NjdCNUIzMTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25Q
aGFzZS5jcHAgKi87IH07CiAJCUE3NjdCNUI2MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTc2N0I1QjQxN0EwQjk2NTAwNjNEOTQwIC8qIERGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTMwODIsMTIgKzMwNzYsNiBAQAogCQlBNzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIg
LyogSlNNYXBJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU01h
cEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NTcwNkREMTE4QTJC
Q0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSklUQXJpdGhtZXRpYzMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTc1RUU5QjAxOEFBQjdFMjAwQUFEMDQzIC8qIEJ1aWx0aW5OYW1lcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdGluTmFtZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTc2MTQwQzcxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3Vt
ZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE3NjE0MEM4MTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVy
YXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ3Vt
ZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTc2MTQwQzkxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBB
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhj
TGFuZ3VhZ2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwotCQlB
NzYxNDBDQTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTc2MTQwQ0IxODI5ODJDQjAwNzUw
NjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBcmd1bWVudHNJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE3NjE0MENDMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJndW1lbnRzSXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2N0I1QjMxN0EwQjk2NTAwNjNEOTQw
IC8qIERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDsgcGF0
aCA9IGRmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE3NjdCNUI0MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdM
b29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5oOyBwYXRoID0gZGZnL0RGR0xvb3BQcmVIZWFkZXJD
cmVhdGlvblBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NkM1MTc0MTE4
Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0ludGVyZmFjZUpJVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNDI4NCwxMCArNDI3Miw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQ0Y2MDUxMTBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuaCAqLywKLQkJCQlBNzYxNDBDNzE4Mjk4MkNCMDA3NTA2MjQgLyogQXJn
dW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi8sCi0JCQkJQTc2MTQwQzgxODI5ODJDQjAw
NzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAqLywKLQkJCQlBNzYxNDBD
OTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwICovLAot
CQkJCUE3NjE0MENBMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5oICovLAogCQkJCTBGRTA1MDBDMUFBOTA5MTEwMEQzM0IzMyAvKiBBcmd1bWVudHNNb2RlLmgg
Ki8sCiAJCQkJMEY2QjFDQjcxODYxMjQ0QzAwODQ1RDk3IC8qIEFyaXR5Q2hlY2tNb2RlLmggKi8s
CiAJCQkJQTdBOEFGMjUxN0FEQjVGMjAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmNwcCAqLywKQEAg
LTQ0MjUsOCArNDQwOSw2IEBACiAJCQkJODZCRjY0MkExNDhEQjJCNTAwNERFMzZBIC8qIEludHJp
bnNpYy5oICovLAogCQkJCTcwMTEzRDQ5MUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9wZXJh
dGlvbnMuY3BwICovLAogCQkJCTcwMTEzRDRBMUE4REIwOTMwMDM4NDhDNCAvKiBJdGVyYXRvck9w
ZXJhdGlvbnMuaCAqLywKLQkJCQlBNzYxNDBDQjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVu
dHNJdGVyYXRvci5jcHAgKi8sCi0JCQkJQTc2MTQwQ0MxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJn
dW1lbnRzSXRlcmF0b3IuaCAqLywKIAkJCQk5M0FERkNFNjBDQ0JEN0FDMDBEMzBCMDggLyogSlNB
cnJheS5jcHAgKi8sCiAJCQkJOTM4NzcyRTUwMzhCRkUxOTAwODYzNUNFIC8qIEpTQXJyYXkuaCAq
LywKIAkJCQkwRjJCNjZCNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5jcHAgKi8s
CkBAIC01NTQwLDggKzU1MjIsNiBAQAogCQkJCUJDMThDM0U1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBB
UElDYXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2MDUxNDBFMjAzRUY4MDBCOUE2NEQgLyog
QXJnTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkE4ODA2NzkxOTEwN0Q1NTAwQ0IwQkJCIC8q
IERGR0Z1bmN0aW9uV2hpdGVsaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNzYxNDBDRTE4Mjk4
MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJQTc2MTQwRDAxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjZCMUNDQTE4NjQxREY4MDA4NDVEOTcgLyog
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkIxQ0I5
MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTFBMDA5QzExODMxQTI2RTAwQ0Y4NzExIC8qIEFSTTY0QXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LywKQEAgLTYwMzIsNyArNjAxMiw2IEBACiAJCQkJQkMxOEM0MTYwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTTGV4aWNhbEVudmlyb25tZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDA0ODAxMzEwMjFB
MUQ5MDA4RTdGMDEgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMy
Q0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUE3NjE0MEQyMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxNzBFMTZGNUNEMDBCMzQ0NjAgLyogSlNBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2RTMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJy
YXlCdWZmZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkU1MTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovLApAQCAtNjkyNyw4ICs2
OTA2LDYgQEAKIAkJCQkwRkUwNTAxNTFBQTkwOTExMDBEMzNCMzMgLyogRGlyZWN0QXJndW1lbnRz
T2Zmc2V0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQy
N0E0OCAvKiBBcmdMaXN0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUE3NjE0MENEMTgyOTgyQ0Iw
MDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCUE3NjE0MENGMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjZCMUNDOTE4NjQxREY4MDA4NDVEOTcgLyog
QXJpdHlDaGVja0ZhaWxSZXR1cm5UaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NDNC
QUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC03MjU0LDcgKzcyMzEsNiBAQAogCQkJCTE0MEI3RDFEMERDNjlBRjcwMDlD
NDJCOCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1
NjZDNDEwN0VDMjU1MDA1REJDOEQgLyogSlNBUElWYWx1ZVdyYXBwZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5t
bSBpbiBTb3VyY2VzICovLAotCQkJCUE3NjE0MEQxMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3Vt
ZW50c0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUQwMTA3RUMzNzYwMDQy
N0E0OCAvKiBKU0FycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkUyMTdCNkI1QUIw
MEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkI2NkU0
MTdCNkI1QUIwMEE3QUUzRiAvKiBKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJ
bmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDIxYjA4ZTM4ZjM5YTdlNjk1NWUxODRmMjk1YTg0
MGJhMTZmMzFlZjguLmJmYTIwM2E1MTQ0NTA3NjgyYmExZDZiMjU1YWUyZTE4OTBjYTYyODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlw
dEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiRXJyb3IuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJdGVyYXRvck9wZXJhdGlv
bnMuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBcnJh
eS5oIgogI2luY2x1ZGUgIkpTQXJyYXlJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQm91bmRGdW5j
dGlvbi5oIgpAQCAtMTYzLDggKzE2Miw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6
OnN1YnR5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0FycmF5
SXRlcmF0b3I6OmluZm8oKSkKICAgICAgICAgfHwgdmFsdWUuaW5oZXJpdHMoSlNNYXBJdGVyYXRv
cjo6aW5mbygpKQogICAgICAgICB8fCB2YWx1ZS5pbmhlcml0cyhKU1NldEl0ZXJhdG9yOjppbmZv
KCkpCi0gICAgICAgIHx8IHZhbHVlLmluaGVyaXRzKEpTU3RyaW5nSXRlcmF0b3I6OmluZm8oKSkK
LSAgICAgICAgfHwgdmFsdWUuaW5oZXJpdHMoSlNBcmd1bWVudHNJdGVyYXRvcjo6aW5mbygpKSkK
KyAgICAgICAgfHwgdmFsdWUuaW5oZXJpdHMoSlNTdHJpbmdJdGVyYXRvcjo6aW5mbygpKSkKICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBBU0NJSUxpdGVyYWwoIml0ZXJh
dG9yIikpOwogCiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTSW50OEFycmF5OjppbmZvKCkpIHx8
IHZhbHVlLmluaGVyaXRzKEpTSW50MTZBcnJheTo6aW5mbygpKSB8fCB2YWx1ZS5pbmhlcml0cyhK
U0ludDMyQXJyYXk6OmluZm8oKSkpCkBAIC0zMzcsMTMgKzMzNSw2IEBAIEpTVmFsdWUgSlNJbmpl
Y3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgIHJldHVybiBhcnJheTsKICAgICB9CiAKLSAgICBpZiAoSlNBcmd1bWVudHNJdGVyYXRv
ciogYXJndW1lbnRzSXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJndW1lbnRzSXRlcmF0b3Iq
Pih2YWx1ZSkpIHsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwotICAgICAgICBKU0FycmF5
KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgMSk7Ci0gICAgICAg
IGFycmF5LT5wdXREaXJlY3RJbmRleChleGVjLCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFBy
b3BlcnR5KGV4ZWMsICJhcmd1bWVudHMiLCBhcmd1bWVudHNJdGVyYXRvci0+aXRlcmF0ZWRWYWx1
ZSgpKSk7Ci0gICAgICAgIHJldHVybiBhcnJheTsKLSAgICB9Ci0KICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIApAQCAtNDA2LDggKzM5Nyw2IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlw
dEhvc3Q6Oml0ZXJhdG9yRW50cmllcyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGl0ZXJhdG9y
ID0gc2V0SXRlcmF0b3ItPmNsb25lKGV4ZWMpOwogICAgIGVsc2UgaWYgKEpTU3RyaW5nSXRlcmF0
b3IqIHN0cmluZ0l0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU1N0cmluZ0l0ZXJhdG9yKj4odmFs
dWUpKQogICAgICAgICBpdGVyYXRvciA9IHN0cmluZ0l0ZXJhdG9yLT5jbG9uZShleGVjKTsKLSAg
ICBlbHNlIGlmIChKU0FyZ3VtZW50c0l0ZXJhdG9yKiBhcmd1bWVudHNJdGVyYXRvciA9IGpzRHlu
YW1pY0Nhc3Q8SlNBcmd1bWVudHNJdGVyYXRvcio+KHZhbHVlKSkKLSAgICAgICAgaXRlcmF0b3Ig
PSBhcmd1bWVudHNJdGVyYXRvci0+Y2xvbmUoZXhlYyk7CiAgICAgZWxzZQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZGY3YzExNTg0YTk1MzZlZjI5ZmM3MjU3NmYyMjI3NzBmZTE4
M2U5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJB
cmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5oIgotI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKLSNpbmNs
dWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKLSNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIK
LQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5mbyBBcmd1bWVudHNJdGVyYXRvckNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBcmd1bWVudHNJdGVyYXRvciIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3RvcikgfTsK
LQotdm9pZCBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUpCi17Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzNjBjNTliMjE2OTdlNzZhYzFlOGVmOGY5ZmFiOTU1OGNh
YmU5ZDcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVj
dG9yX2gKLSNkZWZpbmUgQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvcl9oCi0KLSNpbmNsdWRl
ICJJbnRlcm5hbEZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBBcmd1bWVu
dHNJdGVyYXRvclByb3RvdHlwZTsKLQotY2xhc3MgQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rv
ciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKLQotICAgIHN0YXRpYyBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVj
dG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUqIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIEFyZ3VtZW50c0l0ZXJhdG9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJn
dW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEFyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVh
dGlvbih2bSwgcHJvdG90eXBlKTsKLSAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwotICAgIH0K
LQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBp
bmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVj
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQotICAgIHsKLSAgICB9Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlKik7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChB
cmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzVhOWZjNTEyODRjMDU0ZDAwZmRlN2ZmODZj
ZmY3MDE5MjQ4MzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCi0KLSNpbmNsdWRlICJJdGVyYXRvck9w
ZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCi0jaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJbmZvIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJBcmd1bWVudHNJdGVyYXRvciIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoQXJndW1lbnRzSXRlcmF0b3JQcm90
b3R5cGUpIH07Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4
dChFeGVjU3RhdGUqKTsKLQotdm9pZCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0g
ICAgdm0ucHJvdG90eXBlTWFwLmFkZFByb3RvdHlwZSh0aGlzKTsKLQotICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9G
VU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5uZXh0LCBhcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZUZ1bmNOZXh0LCBEb250RW51bSwgMCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGVGdW5jSXRlcmF0b3IoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZUZ1bmNOZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lKQotewotICAgIEpTVmFsdWUg
cmVzdWx0OwotICAgIGlmIChqc0Nhc3Q8SlNBcmd1bWVudHNJdGVyYXRvcio+KGNhbGxGcmFtZS0+
dGhpc1ZhbHVlKCkpLT5uZXh0KGNhbGxGcmFtZSwgcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjcmVhdGVJdGVyUmVzdWx0T2JqZWN0KGNhbGxGcmFtZSwgcmVzdWx0LCBm
YWxzZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlSXRlclJlc3VsdE9iamVj
dChjYWxsRnJhbWUsIGpzVW5kZWZpbmVkKCksIHRydWUpKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxODM5YmZhMTc5ZThkYjBkNWYw
OWI4ZDYyMDQzMDljMWY3MDAwZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQXJndW1lbnRzSXRl
cmF0b3JQcm90b3R5cGVfaAotI2RlZmluZSBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZV9oCi0K
LSNpbmNsdWRlICJKU09iamVjdC5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3MgQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6
Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0KLSAgICBzdGF0aWMgQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRp
b24odm0sIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHJldHVybiBwcm90b3R5cGU7Ci0gICAgfQot
Ci0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3RydWN0
dXJlKQotICAgIHsKLSAgICB9Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFs
T2JqZWN0Kik7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZChBcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCmluZGV4IGNhNWYzNmU2YmE3M2RkNjAwYzMyOWNmYWI4YzJlZDM2YjllODQz
NGYuLjhlNjE3NTE1ZDkxMjliMWMxNjgzZGU4MjgyN2NlZjRmYjE0NThiNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTYxLDcg
KzYxLDYgQEAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1
Y2UoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUmVkdWNlUmlnaHQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlKik7Ci1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVmFsdWVzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0tleXMoRXhlY1N0YXRlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRW50cmllcyhFeGVjU3RhdGUq
KTsKIApAQCAtMTE0LDcgKzExMyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc051bWVyaWNDb21w
YXJlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBDCiAgIHJlZHVj
ZSAgICAgICAgIGFycmF5UHJvdG9GdW5jUmVkdWNlICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQogICByZWR1Y2VSaWdodCAgICBhcnJheVByb3RvRnVuY1JlZHVjZVJpZ2h0ICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKICAgbWFwICAgICAgICAgICAgYXJyYXlQcm90b0Z1bmNNYXAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCi0gIHZhbHVlcyAgICAgICAgIGFycmF5UHJvdG9GdW5jVmFs
dWVzICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAogICBlbnRyaWVzICAgICAgICBhcnJheVBy
b3RvRnVuY0VudHJpZXMgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAga2V5cyAgICAgICAg
ICAgYXJyYXlQcm90b0Z1bmNLZXlzICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIGZp
bmQgICAgICAgICAgIGFycmF5UHJvdG9GdW5jRmluZCAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQpAQCAtMTQxLDcgKzEzOSw5IEBAIHZvaWQgQXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwogICAgIHZtLnBy
b3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJyYXlQcm90b0Z1bmNWYWx1ZXMsIERv
bnRFbnVtLCAwKTsKKworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZXMsIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9u
KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9iamVjdC0+YXJyYXlQcm90b1ZhbHVl
c0Z1bmN0aW9uKCksIERvbnRFbnVtKTsKIAogICAgIGlmICghZ2xvYmFsT2JqZWN0LT5ydW50aW1l
RmxhZ3MoKS5pc1N5bWJvbERpc2FibGVkKCkpIHsKICAgICAgICAgSlNPYmplY3QqIHVuc2NvcGFi
bGVzID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGds
b2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCmluZGV4IDQ3MmExZGQ5Yzk4
ZmQxNDU5ZWFiZTI0Zjg1ODU0ODU1NDBjMmM5NDQuLjNmZGU2NGQwZWIzNDE2NWU5Njc3NmZiZDdm
MmFiMjM2YTRhZjY1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuaApAQCAtNDgsNiArNDgsOCBAQCBjbGFzcyBBcnJheVByb3RvdHlwZSA6IHB1
YmxpYyBKU0FycmF5IHsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqKTsKIH07CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNW
YWx1ZXMoRXhlY1N0YXRlKik7CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gQXJy
YXlQcm90b3R5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5jcHAKaW5kZXggODA3ZDUxZjkyMzlkZTExNGYwNzQ2OGVkZjAyMzE2ZWMzZDE2
ZTQzMS4uNDBiOWFjM2NhMDA3ZmJjOTliYzc4ZWVkY2M2NDAwNTlhOGQ3YTQwZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCkBAIC0y
Nyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTEzMywyMCArMTMyLDE0IEBA
IGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wCiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PENsb25lZEFyZ3VtZW50cyo+KG9iamVjdCk7CiAgICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKICAgICAKLSAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyCi0g
ICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkKKyAgICBpZiAoaWRl
bnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlCisgICAgICAgIHx8IGlkZW50ID09IHZtLnBy
b3BlcnR5TmFtZXMtPmNhbGxlcgorICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhpc09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFs
c0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgIAogICAgIGlmIChCYXNlOjpnZXRPd25Qcm9wZXJ0eVNs
b3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAKLSAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wp
IHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElWRV9GVU5DVElPTih2
bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yLCBE
b250RW51bSwgMCk7Ci0gICAgICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRo
aXNPYmplY3QsIGV4ZWMsIGlkZW50LCBzbG90KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLSAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTE2Myw3ICsxNTYsOCBAQCB2
b2lkIENsb25lZEFyZ3VtZW50czo6cHV0KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgaWRlbnQsIEpTVgogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCiAg
ICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZQotICAgICAgICB8fCBpZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIpIHsKKyAgICAgICAgfHwgaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+Y2FsbGVyCisgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yU3ltYm9sKSB7CiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXplU3Bl
Y2lhbHNJZk5lY2Vzc2FyeShleGVjKTsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IGR1bW15ID0g
c2xvdDsgLy8gU2hhZG93IHRoZSBnaXZlbiBQdXRQcm9wZXJ0eVNsb3QgdG8gcHJldmVudCBjYWNo
aW5nLgogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHZhbHVlLCBk
dW1teSk7CkBAIC0xNzksNyArMTczLDggQEAgYm9vbCBDbG9uZWRBcmd1bWVudHM6OmRlbGV0ZVBy
b3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUKICAgICBW
TSYgdm0gPSBleGVjLT52bSgpOwogICAgIAogICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5h
bWVzLT5jYWxsZWUKLSAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVy
KQorICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIKKyAgICAgICAg
fHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAgICAgICAgIHRo
aXNPYmplY3QtPm1hdGVyaWFsaXplU3BlY2lhbHNJZk5lY2Vzc2FyeShleGVjKTsKICAgICAKICAg
ICByZXR1cm4gQmFzZTo6ZGVsZXRlUHJvcGVydHkodGhpc09iamVjdCwgZXhlYywgaWRlbnQpOwpA
QCAtMTkxLDcgKzE4Niw4IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpkZWZpbmVPd25Qcm9wZXJ0
eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlCiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKICAgICAKICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2Fs
bGVlCi0gICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcikKKyAgICAg
ICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyCisgICAgICAgIHx8IGlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0
LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgCiAgICAgcmV0dXJu
IEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywgaWRlbnQsIGRlc2NyaXB0b3Is
IHNob3VsZFRocm93KTsKQEAgLTIxMCw2ICsyMDYsOCBAQCB2b2lkIENsb25lZEFyZ3VtZW50czo6
bWF0ZXJpYWxpemVTcGVjaWFscyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHB1dERpcmVjdEFj
Y2Vzc29yKGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlciwgZ2xvYmFsT2JqZWN0KCktPnRo
cm93VHlwZUVycm9yR2V0dGVyU2V0dGVyKHZtKSwgRG9udERlbGV0ZSB8IERvbnRFbnVtIHwgQWNj
ZXNzb3IpOwogICAgIH0gZWxzZQogICAgICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGxlZSwgSlNWYWx1ZShtX2NhbGxlZS5nZXQoKSkpOworCisgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2JqZWN0KCktPmFycmF5
UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBEb250RW51bSk7CiAgICAgCiAgICAgbV9jYWxsZWUuY2xl
YXIoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1l
bnRzLmgKaW5kZXggMTIxOWQ5OWQzYTA5ZjM5OWFjNmZiNmU0MDg3NDQxMjdjNTdkZDc0Zi4uMDI4
YTZkYTcyNWIwNmYzYjYwNzc5NTE0NmNkNjNkOTFjZjU0MzMwOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgKQEAgLTM3LDcgKzM3LDcgQEAK
IC8vIHNvbWUgc29waGlzdGljYXRlZCBWYWx1ZVJlY292ZXJ5J3MgaWYgYW4gb3B0aW1pemluZyBj
b21waWxlciBpcyBpbiBwbGF5KSBhbmQgdGhlIGFwcHJvcHJpYXRlCiAvLyBwcm9wZXJ0aWVzIG9m
IHRoZSBvYmplY3QgYXJlIHBvcHVsYXRlZC4gVGhlIG9ubHkgcmVhc29uIHdoeSB3ZSBuZWVkIGEg
c3BlY2lhbCBjbGFzcyBpcyB0byBtYWtlCiAvLyB0aGUgb2JqZWN0IGNsYWltIHRvIGJlICJBcmd1
bWVudHMiIGZyb20gYSB0b1N0cmluZyBzdGFuZHBvaW50LCBhbmQgdG8gYXZvaWQgbWF0ZXJpYWxp
emluZyB0aGUKLS8vIGNhbGxlci9jYWxsZWUgcHJvcGVydGllcyB1bmxlc3Mgc29tZW9uZSBhc2tz
IGZvciB0aGVtLgorLy8gY2FsbGVyL2NhbGxlZS9AQGl0ZXJhdG9yIHByb3BlcnRpZXMgdW5sZXNz
IHNvbWVvbmUgYXNrcyBmb3IgdGhlbS4KIGNsYXNzIENsb25lZEFyZ3VtZW50cyA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlm
aWVycy5oCmluZGV4IDNiY2NjNDE1ZGRkZTgyMTJjM2IzYzFmZmQyODVmOTVmNDkxOTE1NDYuLmRh
OWJlMGViZWVlOTY5ZWI0MTUwZjE5MGY0YTI3ODFjN2I0MDk1NDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjcsNyArMjcs
NiBAQAogLy8gTWFya2VkQXJndW1lbnRCdWZmZXIgb2YgcHJvcGVydHkgbmFtZXMsIHBhc3NlZCB0
byBhIG1hY3JvIHNvIHdlIGNhbiBkbyBzZXQgdGhlbSB1cCB2YXJpb3VzCiAvLyB3YXlzIHdpdGhv
dXQgcmVwZWF0aW5nIHRoZSBsaXN0LgogI2RlZmluZSBKU0NfQ09NTU9OX0lERU5USUZJRVJTX0VB
Q0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAotICAgIG1hY3JvKEFyZ3VtZW50c0l0ZXJhdG9yKSBc
CiAgICAgbWFjcm8oQXJyYXkpIFwKICAgICBtYWNybyhBcnJheUJ1ZmZlcikgXAogICAgIG1hY3Jv
KEFycmF5SXRlcmF0b3IpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
aXJlY3RBcmd1bWVudHMuY3BwCmluZGV4IGQwMzMzYTc5NzMyNzdhM2IxNDVmZDIxMmVmZTRkNzY5
NjU0ODg3ZjAuLmJiNjFlNGZhZjljOTA2YmE0NTUwZGZkMTM0ZWE1ZTFiNjcxZDQ0MmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcApA
QCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQ29weVZpc2l0b3JJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50c0l0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAg
LTEzMCw2ICsxMjksNyBAQCB2b2lkIERpcmVjdEFyZ3VtZW50czo6b3ZlcnJpZGVUaGluZ3MoVk0m
IHZtKQogICAgIAogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcihtX2xlbmd0aCksIERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmNhbGxlZSwgbV9jYWxsZWUuZ2V0KCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3QoKS0+
YXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKCksIERvbnRFbnVtKTsKICAgICAKICAgICB2b2lkKiBi
YWNraW5nU3RvcmU7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uaGVhcC50cnlBbGxvY2F0ZVN0b3Jh
Z2UodGhpcywgb3ZlcnJpZGVzU2l6ZSgpLCAmYmFja2luZ1N0b3JlKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaApp
bmRleCBjYjlkZGRkNzYwNjdlYzI4ZGM5NDkwMDZlMzdiOTA1Y2EwYTFmZGIyLi41Zjk1MmM2ZjJi
ZmVkYjc5ZjRiYjQ1OTM1MTYxNGViMThmNmZhODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgKQEAgLTI3LDcg
KzI3LDYgQEAKICNkZWZpbmUgR2VuZXJpY0FyZ3VtZW50c0lubGluZXNfaAogCiAjaW5jbHVkZSAi
R2VuZXJpY0FyZ3VtZW50cy5oIgotI2luY2x1ZGUgIkpTQXJndW1lbnRzSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNDcsNiArNDYsMTAg
QEAKICAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udEVudW0sIHRoaXNP
YmplY3QtPmNhbGxlZSgpLmdldCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CisgICAgICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJv
bCkgeworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RW51bSwgdGhp
c09iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIE9wdGlv
bmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwpAQCAtNTUsMTcgKzU4LDcg
QEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAotICAgIGlmIChCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNsb3QpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAKLSAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wpIHsKLSAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICAgICAgdGhpc09iamVjdC0+SlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgYXJndW1lbnRzRnVu
Y0l0ZXJhdG9yLCBEb250RW51bSwgMCk7Ci0gICAgICAgIGlmIChKU09iamVjdDo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCBzbG90KSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIEJh
c2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCk7CiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGU+CkBAIC05Miw4ICs4NSwxMCBAQAogICAgICAgICBh
cnJheS5hZGQoSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKSk7CiAgICAgfQogICAgIGlmIChtb2Rl
LmluY2x1ZGVEb250RW51bVByb3BlcnRpZXMoKSAmJiAhdGhpc09iamVjdC0+b3ZlcnJvZGVUaGlu
Z3MoKSkgewotICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmNhbGxlZSk7
CiAgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsKKyAgICAg
ICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsZWUpOworICAgICAgICBpZiAo
bW9kZS5pbmNsdWRlU3ltYm9sUHJvcGVydGllcygpKQorICAgICAgICAgICAgYXJyYXkuYWRkKGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5pdGVyYXRvclN5bWJvbCk7CiAgICAgfQogICAgIEJhc2U6Omdl
dE93blByb3BlcnR5TmFtZXModGhpc09iamVjdCwgZXhlYywgYXJyYXksIG1vZGUpOwogfQpAQCAt
MTA2LDcgKzEwMSw4IEBACiAgICAgCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5vdmVycm9kZVRoaW5n
cygpCiAgICAgICAgICYmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKLSAgICAg
ICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkpIHsKKyAgICAgICAg
ICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZQorICAgICAgICAgICAgfHwg
aWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpKSB7CiAgICAgICAgIHRo
aXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzKHZtKTsKICAgICAgICAgUHV0UHJvcGVydHlTbG90IGR1
bW15ID0gc2xvdDsgLy8gVGhpcyBwdXQgaXMgbm90IGNhY2hlYWJsZSwgc28gd2Ugc2hhZG93IHRo
ZSBzbG90IHRoYXQgd2FzIGdpdmVuIHRvIHVzLgogICAgICAgICBCYXNlOjpwdXQodGhpc09iamVj
dCwgZXhlYywgaWRlbnQsIHZhbHVlLCBkdW1teSk7CkBAIC0xNDQsNyArMTQwLDggQEAKICAgICAK
ICAgICBpZiAoIXRoaXNPYmplY3QtPm92ZXJyb2RlVGhpbmdzKCkKICAgICAgICAgJiYgKGlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aAotICAgICAgICAgICAgfHwgaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+Y2FsbGVlKSkKKyAgICAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPmNhbGxlZQorICAgICAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpKQogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5ncyh2
bSk7CiAgICAgCiAgICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0gcGFyc2VJbmRleChpZGVu
dCk7CkBAIC0xNzcsNyArMTc0LDggQEAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIAog
ICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKLSAgICAgICAgfHwgaWRl
bnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlKQorICAgICAgICB8fCBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT5jYWxsZWUKKyAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JTeW1ib2wpCiAgICAgICAgIHRoaXNPYmplY3QtPm92ZXJyaWRlVGhpbmdzSWZO
ZWNlc3Nhcnkodm0pOwogICAgIGVsc2UgewogICAgICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0
aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgoaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzk0N2RjOTY0Y2NiZTcyYjc2MGRmOTUyNjU0M2VjMjJlZTQxOWIxOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50
c0l0ZXJhdG9yLmgiCi0KLSNpbmNsdWRlICJDbG9uZWRBcmd1bWVudHMuaCIKLSNpbmNsdWRlICJE
aXJlY3RBcmd1bWVudHMuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiU2Nv
cGVkQXJndW1lbnRzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gSlNB
cmd1bWVudHNJdGVyYXRvcjo6c19pbmZvID0geyAiQXJndW1lbnRzSXRlcmF0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQXJndW1lbnRzSXRlcmF0b3IpIH07Ci0K
LXZvaWQgSlNBcmd1bWVudHNJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU09iamVj
dCogYXJndW1lbnRzKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBtX2Fy
Z3VtZW50cy5zZXQodm0sIHRoaXMsIGFyZ3VtZW50cyk7Ci19Ci0KLUpTQXJndW1lbnRzSXRlcmF0
b3IqIEpTQXJndW1lbnRzSXRlcmF0b3I6OmNsb25lKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBh
dXRvIGNsb25lID0gSlNBcmd1bWVudHNJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMt
PmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+YXJndW1lbnRzSXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
bV9hcmd1bWVudHMuZ2V0KCkpOwotICAgIGNsb25lLT5tX25leHRJbmRleCA9IG1fbmV4dEluZGV4
OwotICAgIHJldHVybiBjbG9uZTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cmd1bWVudHNGdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTT2JqZWN0KiB0
aGlzT2JqID0gZXhlYy0+dGhpc1ZhbHVlKCkudG9UaGlzKGV4ZWMsIFN0cmljdE1vZGUpLnRvT2Jq
ZWN0KGV4ZWMpOwotICAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoRGlyZWN0QXJndW1lbnRzOjpp
bmZvKCkpICYmICF0aGlzT2JqLT5pbmhlcml0cyhTY29wZWRBcmd1bWVudHM6OmluZm8oKSkgJiYg
IXRoaXNPYmotPmluaGVyaXRzKENsb25lZEFyZ3VtZW50czo6aW5mbygpKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRlZCB0byB1c2UgQXJndW1lbnRzIGl0ZXJhdG9yIG9uIG5vbi1Bcmd1bWVudHMgb2JqZWN0
IikpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJndW1lbnRzSXRlcmF0b3I6OmNy
ZWF0ZShleGVjLT52bSgpLCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50
c0l0ZXJhdG9yU3RydWN0dXJlKCksIHRoaXNPYmopKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwNTY3YTU3ZTNkYTg3OTM4NTNlZTY1MTczZGU0M2Q2OTI3Mzc3
OWI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSlNBcmd1bWVudHNJdGVyYXRvcl9oCi0jZGVmaW5l
IEpTQXJndW1lbnRzSXRlcmF0b3JfaAotCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNw
YWNlIEpTQyB7Ci0KLWNsYXNzIEpTQXJndW1lbnRzSXRlcmF0b3IgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0g
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJl
RmxhZ3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIEpTQXJndW1lbnRzSXRl
cmF0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU09iamVjdCogYXJn
dW1lbnRzKQotICAgIHsKLSAgICAgICAgSlNBcmd1bWVudHNJdGVyYXRvciogaW5zdGFuY2UgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FyZ3VtZW50c0l0ZXJhdG9yPih2bS5oZWFwKSkg
SlNBcmd1bWVudHNJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKLSAgICAgICAgaW5zdGFuY2UtPmZp
bmlzaENyZWF0aW9uKHZtLCBhcmd1bWVudHMpOwotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0g
ICAgfQotCi0gICAgYm9vbCBuZXh0KENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlJiB2YWx1
ZSkKLSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9Ci0gICAgICAgICAgICBtX2FyZ3Vt
ZW50cy0+Z2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKS50
b1VJbnQzMihjYWxsRnJhbWUpOwotICAgICAgICBpZiAobV9uZXh0SW5kZXggPj0gbGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB2YWx1ZSA9IG1fYXJndW1lbnRzLT5n
ZXRJbmRleChjYWxsRnJhbWUsIG1fbmV4dEluZGV4KyspOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0KLSAgICBKU1ZhbHVlIGl0ZXJhdGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Fy
Z3VtZW50cy5nZXQoKTsgfQotICAgIEpTQXJndW1lbnRzSXRlcmF0b3IqIGNsb25lKEV4ZWNTdGF0
ZSopOwotCi1wcml2YXRlOgotICAgIEpTQXJndW1lbnRzSXRlcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCi0gICAgICAgICwg
bV9uZXh0SW5kZXgoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihW
TSYsIEpTT2JqZWN0Kik7Ci0gICAgCi0gICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX2FyZ3Vt
ZW50czsKLSAgICBzaXplX3QgbV9uZXh0SW5kZXg7Ci19OwotCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFyZ3VtZW50c0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKLQotfQotCi0jZW5k
aWYgLy8gIWRlZmluZWQoSlNBcmd1bWVudHNJdGVyYXRvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGZmMjFjYjkwYmE5NWFl
NThmNTI5YzllYmU3N2Y3NWU1OGUyZjVmNzAuLjIzZGYzYTRhNzRjZGYzZmFjZjdmNjk4Zjk0ODEy
ZWY1NmI1MGVhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTMwLDggKzMwLDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogCi0jaW5jbHVkZSAiQXJndW1lbnRzSXRlcmF0b3JD
b25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIkFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiQXJyYXlDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JDb25z
dHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkFycmF5SXRlcmF0b3JQcm90b3R5cGUuaCIKQEAgLTU2LDcg
KzU0LDYgQEAKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgogI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgotI2luY2x1ZGUgIkpT
QXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5oIgpAQCAtMjQxLDYgKzIzOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogICAgIG1fZnVuY3Rpb25Qcm90b3R5cGUtPmFkZEZ1bmN0aW9uUHJvcGVydGllcyhl
eGVjLCB0aGlzLCAmY2FsbEZ1bmN0aW9uLCAmYXBwbHlGdW5jdGlvbik7CiAgICAgbV9jYWxsRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBjYWxsRnVuY3Rpb24pOwogICAgIG1fYXBwbHlGdW5jdGlvbi5z
ZXQodm0sIHRoaXMsIGFwcGx5RnVuY3Rpb24pOworICAgIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0
aW9uLnNldCh2bSwgdGhpcywgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0aGlzLCAwLCB2bS5wcm9w
ZXJ0eU5hbWVzLT52YWx1ZXMuc3RyaW5nKCksIGFycmF5UHJvdG9GdW5jVmFsdWVzKSk7CiAgICAg
bV9udWxsR2V0dGVyRnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBOdWxsR2V0dGVyRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgTnVsbEdldHRlckZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1f
ZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgbV9udWxsU2V0dGVyRnVuY3Rpb24uc2V0
KHZtLCB0aGlzLCBOdWxsU2V0dGVyRnVuY3Rpb246OmNyZWF0ZSh2bSwgTnVsbFNldHRlckZ1bmN0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkp
KSk7CiAgICAgbV9vYmplY3RQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBPYmplY3RQcm90b3R5cGU6
OmNyZWF0ZSh2bSwgdGhpcywgT2JqZWN0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIGpzTnVsbCgpKSkpOwpAQCAtNjg5LDYgKzY4Nyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9ldmFsRnVuY3Rpb24pOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQo
JnRoaXNPYmplY3QtPm1fYXBwbHlGdW5jdGlvbik7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcik7CiAKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmplY3RQcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMmNhNTg5OTMzN2I2NTA3
NjJmMjM5NzBiMjQ5NmQ5NmQ2YmZmMGI5Mi4uNTEzZGRlNzlhOTcwZGFhZDY1YzQ3ZDZkOTYxMTI4
NmQzZGZlNjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC0xMDcsNyArMTA3LDYgQEAKICAgICBGT1JfRUFDSF9TSU1QTEVfQlVJTFRJ
Tl9UWVBFX1dJVEhfQ09OU1RSVUNUT1IobWFjcm8pIFwKICAgICBGT1JfRUFDSF9FWFBFUklNRU5U
QUxfQlVJTFRJTl9UWVBFX1dJVEhfQ09OU1RSVUNUT1IobWFjcm8pIFwKICAgICBERUZJTkVfU1RB
TkRBUkRfQlVJTFRJTihtYWNybywgQXJyYXlJdGVyYXRvciwgYXJyYXlJdGVyYXRvcikgXAotICAg
IERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBBcmd1bWVudHNJdGVyYXRvciwgYXJndW1l
bnRzSXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgTWFwSXRl
cmF0b3IsIG1hcEl0ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8s
IFNldEl0ZXJhdG9yLCBzZXRJdGVyYXRvcikgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElO
KG1hY3JvLCBTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IpIFwKQEAgLTE4OSw2ICsxODgs
NyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2Jq
ZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9ldmFsRnVuY3Rpb247CiAgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fY2FsbEZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmll
cjxKU0Z1bmN0aW9uPiBtX2FwcGx5RnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rp
b24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxHZXR0ZXJT
ZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CiAKICAgICBXcml0ZUJhcnJpZXI8
T2JqZWN0UHJvdG90eXBlPiBtX29iamVjdFByb3RvdHlwZTsKQEAgLTM5NCw2ICszOTQsNyBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBKU0Z1bmN0aW9uKiBldmFsRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2V2YWxGdW5j
dGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGNhbGxGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fY2FsbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogYXBwbHlGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYXBwbHlGdW5jdGlvbi5nZXQoKTsgfQorICAgIEpTRnVuY3Rp
b24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlQcm90
b1ZhbHVlc0Z1bmN0aW9uLmdldCgpOyB9CiAgICAgR2V0dGVyU2V0dGVyKiB0aHJvd1R5cGVFcnJv
ckdldHRlclNldHRlcihWTSYgdm0pCiAgICAgewogICAgICAgICBpZiAoIW1fdGhyb3dUeXBlRXJy
b3JHZXR0ZXJTZXR0ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9NYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJv
dG90eXBlLmNwcAppbmRleCBmZTUyNWVjZmM0ODQwOTViM2I2NmIxNWFlNmE1YTY3M2M5NmFhZTc4
Li5iZjliYjRiNmRjNmI3YzFmMTFiMzlmNjVlNjQ2M2IyNmViMDgwNjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTY3LDggKzY3LDEw
IEBAIHZvaWQgTWFwUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5zZXQsIG1hcFByb3RvRnVuY1NldCwgRG9udEVudW0sIDIpOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+a2V5cywgbWFwUHJvdG9GdW5jS2V5cywgRG9udEVu
dW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVz
LCBtYXBQcm90b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNU
SU9OKHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMsIG1hcFByb3RvRnVuY0VudHJpZXMsIERvbnRF
bnVtLCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yU3ltYm9sLCBtYXBQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51bSwgMCk7CisKKyAgICBKU0Z1
bmN0aW9uKiBlbnRyaWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAs
IHZtLnByb3BlcnR5TmFtZXMtPmVudHJpZXMuc3RyaW5nKCksIG1hcFByb3RvRnVuY0VudHJpZXMp
OworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5l
bnRyaWVzLCBlbnRyaWVzLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBlbnRyaWVzLCBEb250RW51
bSk7CiAKICAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9u
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJp
bmcoKSwgbWFwUHJvdG9GdW5jU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZWRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcAppbmRleCA2NTIwNDhjZjdjMDYwYzQ3M2I0ZWM5M2Y2
NDBmMjFiNTk5MWQzNzM5Li5hNWEyZmM3NWIzMWJhZDk5ZGMxYWY2MTUxYjNjNzk3NTUyM2Q3NTBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRBcmd1bWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50
cy5jcHAKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJTY29wZWRBcmd1bWVudHMuaCIKIAog
I2luY2x1ZGUgIkdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNBcmd1bWVu
dHNJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xMjUsNiArMTI0LDcgQEAgdm9pZCBTY29wZWRBcmd1bWVudHM6Om92ZXJyaWRlVGhpbmdz
KFZNJiB2bSkKICAgICAKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIobV90YWJsZS0+bGVuZ3RoKCkpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIG1fY2FsbGVlLmdldCgpLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xv
YmFsT2JqZWN0KCktPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBEb250RW51bSk7CiAgICAg
CiAgICAgbV9vdmVycm9kZVRoaW5ncyA9IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAppbmRleCBiMzE1ODYxYTQ2NTVlMmMxZmI3ZTI2
NGE1NmEwNmQyNzlkNTBlODk2Li42YTIxYzM3Y2UxNGY0NzI1ZWQzYzU5YTY2ZTFhZmY3ODcxMmJk
YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5j
cHAKQEAgLTY1LDkgKzY1LDExIEBAIHZvaWQgU2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNDX05BVElWRV9GVU5D
VElPTih2bS5wcm9wZXJ0eU5hbWVzLT5mb3JFYWNoLCBzZXRQcm90b0Z1bmNGb3JFYWNoLCBEb250
RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5oYXMs
IHNldFByb3RvRnVuY0hhcywgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04o
dm0ucHJvcGVydHlOYW1lcy0+a2V5cywgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOwot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCBzZXRQcm90
b0Z1bmNWYWx1ZXMsIERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmVudHJpZXMsIHNldFByb3RvRnVuY0VudHJpZXMsIERvbnRFbnVtLCAwKTsK
LSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9s
LCBzZXRQcm90b0Z1bmNLZXlzLCBEb250RW51bSwgMCk7CisKKyAgICBKU0Z1bmN0aW9uKiB2YWx1
ZXMgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdm0ucHJvcGVydHlO
YW1lcy0+dmFsdWVzLnN0cmluZygpLCBzZXRQcm90b0Z1bmNWYWx1ZXMpOworICAgIHB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZXMsIHZhbHVlcywg
RG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgdmFsdWVzLCBEb250RW51bSk7CiAKICAgICBHZXR0ZXJT
ZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCk7
CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgMCwgdm0ucHJvcGVydHlOYW1lcy0+c2l6ZS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5j
U2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fy
Z3VtZW50cy1pdGVyYXRvci5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
YXJndW1lbnRzLWl0ZXJhdG9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5ODA1MzIxMDdkYTk3NjljZTk4ZDI4
MWE2ZjViMTQ1MTcxODU5YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL2FyZ3VtZW50cy1pdGVyYXRvci5qcwpAQCAtMCwwICsxLDcwIEBACitm
dW5jdGlvbiB0ZXN0KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiB0ZXN0QXJndW1lbnRzKGNoZWNrKSB7CisgICAgKGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgY2hlY2soYXJndW1lbnRzLCBbXSk7CisgICAgfSgpKTsKKworICAgIChmdW5jdGlv
biAoYSwgYiwgYykgeworICAgICAgICBjaGVjayhhcmd1bWVudHMsIFthLCBiLCBjXSk7CisgICAg
fSgpKTsKKworICAgIChmdW5jdGlvbiAoKSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAg
ICAgY2hlY2soYXJndW1lbnRzLCBbXSk7CisgICAgfSgpKTsKKworICAgIChmdW5jdGlvbiAoYSwg
YiwgYykgeworICAgICAgICAndXNlIHN0cmljdCc7CisgICAgICAgIGNoZWNrKGFyZ3VtZW50cywg
W2EsIGIsIGNdKTsKKyAgICB9KCkpOworfQorCit0ZXN0QXJndW1lbnRzKGZ1bmN0aW9uIChhcmdz
KSB7CisgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gYXJnc1tTeW1ib2wuaXRlcmF0b3JdOworICAg
IHRlc3QoaXRlcmF0b3JNZXRob2QsIEFycmF5LnByb3RvdHlwZS52YWx1ZXMpOworICAgIHZhciBk
ZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcmdzLCBTeW1ib2wu
aXRlcmF0b3IpOworICAgIHRlc3QoZGVzY3JpcHRvci53cml0YWJsZSwgdHJ1ZSk7CisgICAgdGVz
dChkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSwgdHJ1ZSk7CisgICAgdGVzdChkZXNjcmlwdG9yLmVu
dW1lcmFibGUsIGZhbHNlKTsKKyAgICB0ZXN0KGRlc2NyaXB0b3IudmFsdWUsIGl0ZXJhdG9yTWV0
aG9kKTsKK30pOworCit0ZXN0QXJndW1lbnRzKGZ1bmN0aW9uIChhcmdzLCBleHBlY3RlZCkgewor
ICAgIHZhciBpdGVyYXRvciA9IGFyZ3NbU3ltYm9sLml0ZXJhdG9yXSgpOworICAgIHRlc3QoaXRl
cmF0b3IudG9TdHJpbmcoKSwgJ1tvYmplY3QgQXJyYXkgSXRlcmF0b3JdJyk7CisgICAgdmFyIGlu
ZGV4ID0gMDsKKyAgICBmb3IgKHZhciB2YWx1ZSBvZiBpdGVyYXRvcikgeworICAgICAgICB0ZXN0
KHZhbHVlLCBleHBlY3RlZFtpbmRleCsrXSk7CisgICAgfQorICAgIHRlc3QoYXJncy5sZW5ndGgs
IGluZGV4KTsKKworICAgIHZhciBpbmRleCA9IDA7CisgICAgZm9yICh2YXIgdmFsdWUgb2YgYXJn
cykgeworICAgICAgICB0ZXN0KHZhbHVlLCBleHBlY3RlZFtpbmRleCsrXSk7CisgICAgfQorICAg
IHRlc3QoYXJncy5sZW5ndGgsIGluZGV4KTsKK30pOworCit0ZXN0QXJndW1lbnRzKGZ1bmN0aW9u
IChhcmdzKSB7CisgICAgdmFyIHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KGFyZ3MpOworICAgIHRlc3Qoc3ltYm9scy5sZW5ndGgsIDEpOworICAgIHRlc3Qoc3ltYm9sc1sw
XSwgU3ltYm9sLml0ZXJhdG9yKTsKK30pOworCit0ZXN0QXJndW1lbnRzKGZ1bmN0aW9uIChhcmdz
KSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGFyZ3NbU3ltYm9sLml0ZXJhdG9yXSA9ICdub3Qg
dGhyb3cgZXJyb3InOworfSk7CisKK3Rlc3RBcmd1bWVudHMoZnVuY3Rpb24gKGFyZ3MpIHsKKyAg
ICAndXNlIHN0cmljdCc7CisgICAgZGVsZXRlIGFyZ3NbU3ltYm9sLml0ZXJhdG9yXTsKKyAgICB0
ZXN0KGFyZ3NbU3ltYm9sLml0ZXJhdG9yXSwgdW5kZWZpbmVkKTsKKworICAgIHZhciBzeW1ib2xz
ID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhhcmdzKTsKKyAgICB0ZXN0KHN5bWJvbHMu
bGVuZ3RoLCAwKTsKK30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9pdGVyYXRvci1mdW5jdGlvbnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL2l0ZXJhdG9yLWZ1bmN0aW9ucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMmVkYjZlOTAzYjc5
YzgwZmE3OTdkODI5ZDgzYzNhMTAxYzBjZjAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pdGVyYXRvci1mdW5jdGlvbnMuanMKQEAgLTAsMCAr
MSwzMyBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKwordGVzdChBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSwgQXJy
YXkucHJvdG90eXBlLnZhbHVlcyk7Cit0ZXN0KE1hcC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9y
XSwgTWFwLnByb3RvdHlwZS5lbnRyaWVzKTsKK3Rlc3QoU2V0LnByb3RvdHlwZVtTeW1ib2wuaXRl
cmF0b3JdLCBTZXQucHJvdG90eXBlLnZhbHVlcyk7CisKK2Z1bmN0aW9uIGFyZ3VtZW50c1Rlc3Rz
KHZhbHVlcykgeworICAgIHRlc3QoZnVuY3Rpb24gKCkgeworICAgICAgICByZXR1cm4gYXJndW1l
bnRzW1N5bWJvbC5pdGVyYXRvcl07CisgICAgfSgpLCB2YWx1ZXMpOworCisgICAgdGVzdChmdW5j
dGlvbiAoYSwgYiwgYykgeworICAgICAgICByZXR1cm4gYXJndW1lbnRzW1N5bWJvbC5pdGVyYXRv
cl07CisgICAgfSgpLCB2YWx1ZXMpOworCisgICAgdGVzdChmdW5jdGlvbiAoKSB7CisgICAgICAg
ICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1tTeW1ib2wuaXRlcmF0b3Jd
OworICAgIH0oKSwgdmFsdWVzKTsKKworICAgIHRlc3QoZnVuY3Rpb24gKGEsIGIsIGMpIHsKKyAg
ICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICByZXR1cm4gYXJndW1lbnRzW1N5bWJvbC5pdGVy
YXRvcl07CisgICAgfSgpLCB2YWx1ZXMpOworfQorCithcmd1bWVudHNUZXN0cyhBcnJheS5wcm90
b3R5cGUudmFsdWVzKTsKK3ZhciBhcnJheVZhbHVlcyA9IEFycmF5LnByb3RvdHlwZS52YWx1ZXM7
CitBcnJheS5wcm90b3R5cGUudmFsdWVzID0gbnVsbDsKK2FyZ3VtZW50c1Rlc3RzKGFycmF5VmFs
dWVzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250945</attachid>
            <date>2015-04-16 13:15:29 -0700</date>
            <delta_ts>2015-04-16 13:23:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143838-20150417051430.patch</filename>
            <type>text/plain</type>
            <size>58495</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyODkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MGMwZjUyOGNlMjI5OTk2Y2U5OTZjYTJjZWMxODRkNTY0ZjA3Njk4Li5mNTAxODcxM2Y1Mjg0MzA0
NTAyODMxMzVjNWEwMTNiNjBmM2JlZjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NyBAQAorMjAxNS0wNC0xNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBVc2Ugc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBAQGl0ZXJh
dG9yIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQzODM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW4gRVM2LCBzb21lIG1ldGhvZHMgYXJlIGRlZmluZWQgd2l0aCB0aGUgZGlmZmVyZW50
IG5hbWVzLgorCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgIE1hcC5wcm90b3R5cGVb
U3ltYm9sLml0ZXJhdG9yXSA9PT0gTWFwLnByb3RvdHlwZS5lbnRyaWVzCisgICAgICAgIFNldC5w
cm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gU2V0LnByb3RvdHlwZS52YWx1ZXMKKyAgICAg
ICAgQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPT09IEFycmF5LnByb3RvdHlwZS52
YWx1ZXMKKyAgICAgICAgJUFyZ3VtZW50cyVbU3ltYm9sLml0ZXJhdG9yXSA9PT0gQXJyYXkucHJv
dG90eXBlLnZhbHVlcworCisgICAgICAgIEhvd2V2ZXIsIGN1cnJlbnQgaW1wbGVtZW50YXRpb24g
Y3JlYXRlcyBkaWZmZXJlbnQgZnVuY3Rpb24gb2JqZWN0cyBwZXIgbmFtZS4KKyAgICAgICAgVGhp
cyBwYXRjaCBmaXhlcyBpdCBieSBzZXR0aW5nIHRoZSBvYmplY3QgdGhhdCBpcyB1c2VkIGZvciB0
aGUgb3RoZXIgbWV0aG9kIHRvIEBAaXRlcmF0b3IuCisgICAgICAgIGUuZy4gU2V0dGluZyBBcnJh
eS5wcm90b3R5cGUudmFsdWVzIGZ1bmN0aW9uIG9iamVjdCB0byBBcnJheS5wcm90b3R5cGVbU3lt
Ym9sLml0ZXJhdG9yXS4KKworICAgICAgICBBbmQgd2UgZHJvcCBBcmd1bWVudHMnIGl0ZXJhdG9y
IGltcGxlbWVudGF0aW9uIGFuZCByZXBsYWNlIEFyZ3VtZW50W0BAaXRlcmF0b3JdIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIHdpdGggQXJyYXkucHJvdG90eXBlLnZhbHVlcyB0byBjb25mb3JtIHRv
IHRoZSBzcGVjLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAg
ICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
aW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6
SlNJbmplY3RlZFNjcmlwdEhvc3Q6OnN1YnR5cGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0lu
amVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6Oml0ZXJhdG9yRW50cmllcyk6CisgICAgICAgICog
cnVudGltZS9Bcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmg6IFJlbW92ZWQu
CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkFy
cmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9BcnJheVBy
b3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAo
SlNDOjpDbG9uZWRBcmd1bWVudHM6OnB1dCk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50
czo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6OmRlZmlu
ZU93blByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjptYXRlcmlhbGl6
ZVNwZWNpYWxzKToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0RpcmVj
dEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkRpcmVjdEFyZ3VtZW50czo6b3ZlcnJpZGVU
aGluZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0T3duUHJvcGVydHlTbG90KToK
KyAgICAgICAgKEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6Z2V0T3duUHJvcGVydHlOYW1l
cyk6CisgICAgICAgIChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OnB1dCk6CisgICAgICAg
IChKU0M6OkdlbmVyaWNBcmd1bWVudHM8VHlwZT46OmRlbGV0ZVByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6R2VuZXJpY0FyZ3VtZW50czxUeXBlPjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
cnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0
KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9NYXBQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpNYXBQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKiBydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OlNj
b3BlZEFyZ3VtZW50czo6b3ZlcnJpZGVUaGluZ3MpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6U2V0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL2FyZ3VtZW50cy1pdGVyYXRvci5qczogQWRkZWQuCisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3RBcmd1bWVudHMpOgorICAgICAgICAqIHRlc3Rz
L3N0cmVzcy9pdGVyYXRvci1mdW5jdGlvbnMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6Cisg
ICAgICAgIChhcmd1bWVudHNUZXN0cyk6CisKIDIwMTUtMDQtMTYgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgdGhlIHVubmVjZXNzYXJ5IFdU
Rl9DSEFOR0VTIGRlZmluZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGIw
MjhlZWQ5MGM2MGRhOWQyYzVjY2RjNjc5NDczMWM1YmIxZmUzYzEuLmNlZmE4N2U5ZmZkYzIzZjgx
YjQ4NmQ4NTkzNjU1MGY2YjMyZDk1YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQKQEAgLTM5OSw4ICszOTksNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogCiBzZXQo
SmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGltZS9BcmdMaXN0LmNwcAot
ICAgIHJ1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKLSAgICBydW50aW1l
L0FyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXIu
Y3BwCiAgICAgcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCiAgICAg
cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuY3BwCkBAIC00NTgsNyArNDU2LDYgQEAgc2V0KEphdmFT
Y3JpcHRDb3JlX1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25z
LmNwcAogICAgIHJ1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuY3BwCiAgICAgcnVudGltZS9KU0xl
eGljYWxFbnZpcm9ubWVudC5jcHAKLSAgICBydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3Bw
CiAgICAgcnVudGltZS9KU0FycmF5LmNwcAogICAgIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlci5jcHAK
ICAgICBydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDdkNGI3MzYxZDg0NmYzNzllYTUwNzMyOTRkZmFl
MzQ0NTcxNmY5N2MuLmRhNzY4NDFjYzcwMjc1NTgyYmEzNGI5ODE3MTczMjQ3MzkwODdmMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNjY4LDggKzY2OCw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwcm9maWxlclxQcm9maWxlck9TUkV4aXRTaXRl
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHByb2ZpbGVyXFByb2ZpbGVyUHJv
ZmlsZWRCeXRlY29kZXMuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxBcmdMaXN0LmNwcCIgLz4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJn
dW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAiIC8+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlCdWZmZXIuY3BwIiAvPgogICAgIDxDbENv
bXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
Y3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlclZp
ZXcuY3BwIiAvPgpAQCAtNzI2LDkgKzcyNCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXEpTQVBJVmFsdWVXcmFwcGVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheS5jcHAiIC8+Ci0gICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlJdGVyYXRvci5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXlCdWZmZXIuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyQ29uc3RydWN0
b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVm
ZmVyUHJvdG90eXBlLmNwcCIgLz4KQEAgLTE1MTcsNyArMTUxMyw2IEBACiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXEl0ZXJhdG9yT3BlcmF0aW9ucy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FQSVZhbHVlV3JhcHBlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0xleGljYWxFbnZpcm9ubWVudC5oIiAvPgot
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FyZ3VtZW50c0l0ZXJhdG9yLmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTQXJyYXkuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUJ1ZmZlci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
aCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVy
cwppbmRleCA3NjIxNzA4NTE3NTg5ZmVjZmY1OWVlZTU2ZDFlMTcwN2NlOGVmMzg0Li45NTViYzFm
ZDA3NTY5MjhmNTIxNzZiMTk3NTVkZWY4OTE5OTY2OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
LmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0xMzI2LDEyICsxMzI2LDYgQEAK
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwIj4KLSAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgotICAgIDwvQ2xD
b21waWxlPgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5jcHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+Ci0gICAg
PC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXE1hcEl0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtMTM0NCw5ICsxMzM4LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmNwcCI+CiAgICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNBcmd1bWVudHNJdGVyYXRvci5jcHAiPgotICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+Ci0gICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXEpTTWFwSXRlcmF0b3IuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtMzc0NCw5ICszNzM1LDYgQEAKICAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNBcnJheUl0ZXJhdG9yLmgiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxydW50aW1lXEpTQXJndW1lbnRzSXRlcmF0b3IuaCI+Ci0gICAgICA8RmlsdGVyPnJ1bnRp
bWU8L0ZpbHRlcj4KLSAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNNYXBJdGVyYXRvci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMDlk
MjQyODM2MWM1MGNiZGQ1ODQ3ODU3YjE5NjU3ZjEyMmIzYTc3Li4wYjE5ZTg1ZjM4MmJhM2M1MzBk
YmEwOTgyZTFkNWFkYWNmZmFlOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTMzOSwxMiArMTMzOSw2IEBACiAJCUE3NERFRjk2MTgyRDk5MTQwMDUyMkMyMiAvKiBKU01hcEl0
ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NzRERUY5MDE4MkQ5OTE0MDA1MjJDMjIgLyogSlNNYXBJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NTcwNkRFMTE4QTJCQ0YwMDU3
Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1NzA2REQxMThBMkJDRjAwNTdGODhGIC8qIEpJVEFyaXRo
bWV0aWMzMl82NC5jcHAgKi87IH07CiAJCUE3NUVFOUIyMThBQUI3RTIwMEFBRDA0MyAvKiBCdWls
dGluTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGluTmFtZXMuaCAqLzsgfTsKLQkJQTc2
MTQwQ0QxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2MTQwQzcx
ODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovOyB9
OwotCQlBNzYxNDBDRTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2
MTQwQzgxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCAq
LzsgfTsKLQkJQTc2MTQwQ0YxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3NjE0MEM5MTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5j
cHAgKi87IH07Ci0JCUE3NjE0MEQwMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTc2MTQwQ0ExODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
LmggKi87IH07Ci0JCUE3NjE0MEQxMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
NjE0MENCMTgyOTgyQ0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCAqLzsgfTsK
LQkJQTc2MTQwRDIxODI5ODJDQjAwNzUwNjI0IC8qIEpTQXJndW1lbnRzSXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjE0MENDMTgyOTgy
Q0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggKi87IH07CiAJCUE3NjZCNDRGMEVF
OERDRDEwMDk1MThDQSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyog
RXhlY3V0YWJsZUFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUE3NjdCNUI1MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJlSGVh
ZGVyQ3JlYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzY3QjVCMzE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNy
ZWF0aW9uUGhhc2UuY3BwICovOyB9OwogCQlBNzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZH
TG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE3NjdCNUI0MTdBMEI5NjUwMDYzRDk0MCAvKiBERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zMDgyLDEyICszMDc2LDYgQEAKIAkJQTc0REVGOTAxODJEOTkxNDAw
NTIyQzIyIC8qIEpTTWFwSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNNYXBJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzU3MDZE
RDExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJpdGhtZXRpYzMyXzY0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEFyaXRobWV0aWMzMl82NC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NUVFOUIwMThBQUI3RTIwMEFBRDA0MyAvKiBCdWlsdGlu
TmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbk5hbWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3NjE0MEM3MTgyOTgyQ0IwMDc1MDYyNCAv
KiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNzYxNDBDODE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1l
bnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE3NjE0MEM5MTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3Rv
dHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IGxpbmVFbmRpbmcgPSAwOyBw
YXRoID0gQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsg
fTsKLQkJQTc2MTQwQ0ExODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90
eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3NjE0MENCMTgyOTgy
Q0IwMDc1MDYyNCAvKiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXJndW1lbnRzSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNzYxNDBDQzE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJ
dGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FyZ3VtZW50c0l0
ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NjdCNUIzMTdBMEI5NjUw
MDYzRDk0MCAvKiBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHA7IHBhdGggPSBkZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNzY3QjVCNDE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdMb29wUHJl
SGVhZGVyQ3JlYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzZD
NTE3NDExODI3NDhEMDA3MTVCMDUgLyogSlNJbnRlcmZhY2VKSVQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNJbnRlcmZhY2VKSVQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQyODQsMTAgKzQyNzIsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkNGNjA1
MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCi0JCQkJQTc2MTQwQzcxODI5ODJDQjAwNzUwNjI0
IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovLAotCQkJCUE3NjE0MEM4MTgy
OTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvckNvbnN0cnVjdG9yLmggKi8sCi0JCQkJ
QTc2MTQwQzkxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlLmNw
cCAqLywKLQkJCQlBNzYxNDBDQTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGUuaCAqLywKIAkJCQkwRkUwNTAwQzFBQTkwOTExMDBEMzNCMzMgLyogQXJndW1lbnRz
TW9kZS5oICovLAogCQkJCTBGNkIxQ0I3MTg2MTI0NEMwMDg0NUQ5NyAvKiBBcml0eUNoZWNrTW9k
ZS5oICovLAogCQkJCUE3QThBRjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAg
Ki8sCkBAIC00NDI1LDggKzQ0MDksNiBAQAogCQkJCTg2QkY2NDJBMTQ4REIyQjUwMDRERTM2QSAv
KiBJbnRyaW5zaWMuaCAqLywKIAkJCQk3MDExM0Q0OTFBOERCMDkzMDAzODQ4QzQgLyogSXRlcmF0
b3JPcGVyYXRpb25zLmNwcCAqLywKIAkJCQk3MDExM0Q0QTFBOERCMDkzMDAzODQ4QzQgLyogSXRl
cmF0b3JPcGVyYXRpb25zLmggKi8sCi0JCQkJQTc2MTQwQ0IxODI5ODJDQjAwNzUwNjI0IC8qIEpT
QXJndW1lbnRzSXRlcmF0b3IuY3BwICovLAotCQkJCUE3NjE0MENDMTgyOTgyQ0IwMDc1MDYyNCAv
KiBKU0FyZ3VtZW50c0l0ZXJhdG9yLmggKi8sCiAJCQkJOTNBREZDRTYwQ0NCRDdBQzAwRDMwQjA4
IC8qIEpTQXJyYXkuY3BwICovLAogCQkJCTkzODc3MkU1MDM4QkZFMTkwMDg2MzVDRSAvKiBKU0Fy
cmF5LmggKi8sCiAJCQkJMEYyQjY2QjQxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXIu
Y3BwICovLApAQCAtNTU0MCw4ICs1NTIyLDYgQEAKIAkJCQlCQzE4QzNFNTBFMTZGNUNEMDBCMzQ0
NjAgLyogQVBJQ2FzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjA1MTQwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJBODgwNjc5MTkxMDdENTUwMENC
MEJCQiAvKiBERkdGdW5jdGlvbldoaXRlbGlzdC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTc2MTQw
Q0UxODI5ODJDQjAwNzUwNjI0IC8qIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCUE3NjE0MEQwMTgyOTgyQ0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVy
YXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQ0ExODY0MURGODAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjZCMUNCOTE4NjEyNDRDMDA4NDVEOTcgLyogQXJpdHlDaGVja01vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExQTAwOUMxMTgzMUEyNkUwMENGODcxMSAvKiBBUk02NEFzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC02MDMyLDcgKzYwMTIsNiBAQAogCQkJCUJDMThDNDE2MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKU0xleGljYWxFbnZpcm9ubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQwNDgw
MTMxMDIxQTFEOTAwOEU3RjAxIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkNGMzlDMjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggaW4g
SGVhZGVycyAqLywKLQkJCQlBNzYxNDBEMjE4Mjk4MkNCMDA3NTA2MjQgLyogSlNBcmd1bWVudHNJ
dGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTcwRTE2RjVDRDAwQjM0NDYwIC8q
IEpTQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkUzMTdCNkI1QUIwMEE3QUUzRiAv
KiBKU0FycmF5QnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZFNTE3QjZCNUFCMDBB
N0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKQEAgLTY5
MjcsOCArNjkwNiw2IEBACiAJCQkJMEZFMDUwMTUxQUE5MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFy
Z3VtZW50c09mZnNldC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1RjBGNDE0RDEwNjM5MDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VD
Mzc2MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBNzYxNDBDRDE4
Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291
cmNlcyAqLywKLQkJCQlBNzYxNDBDRjE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0
b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2QjFDQzkxODY0MURGODAwODQ1
RDk3IC8qIEFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNzQzQkFBMTZCODgyNDkwMDlGOTI3NyAvKiBBUk02NERpc2Fzc2VtYmxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NkQzQjJDMzEwMTU2QkRFMDAyODY1RTcgLyogQVJNQXNzZW1ibGVyLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtNzI1NCw3ICs3MjMxLDYgQEAKIAkJCQkxNDBCN0QxRDBEQzY5
QUY3MDA5QzQyQjggLyogSlNMZXhpY2FsRW52aXJvbm1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQwNTY2QzQxMDdFQzI1NTAwNURCQzhEIC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUMyQ0YzOUMxMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJP
YmplY3QubW0gaW4gU291cmNlcyAqLywKLQkJCQlBNzYxNDBEMTE4Mjk4MkNCMDA3NTA2MjQgLyog
SlNBcmd1bWVudHNJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlEMDEwN0VD
Mzc2MDA0MjdBNDggLyogSlNBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCNjZFMjE3
QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjJCNjZFNDE3QjZCNUFCMDBBN0FFM0YgLyogSlNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAyMWIwOGUzOGYzOWE3ZTY5NTVlMTg0
ZjI5NWE4NDBiYTE2ZjMxZWY4Li5iZmEyMDNhNTE0NDUwNzY4MmJhMWQ2YjI1NWFlMmUxODkwY2E2
Mjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcApAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkVycm9y
LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JP
cGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0FycmF5SXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0Jv
dW5kRnVuY3Rpb24uaCIKQEAgLTE2Myw4ICsxNjIsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpzdWJ0eXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAodmFsdWUuaW5oZXJpdHMo
SlNBcnJheUl0ZXJhdG9yOjppbmZvKCkpCiAgICAgICAgIHx8IHZhbHVlLmluaGVyaXRzKEpTTWFw
SXRlcmF0b3I6OmluZm8oKSkKICAgICAgICAgfHwgdmFsdWUuaW5oZXJpdHMoSlNTZXRJdGVyYXRv
cjo6aW5mbygpKQotICAgICAgICB8fCB2YWx1ZS5pbmhlcml0cyhKU1N0cmluZ0l0ZXJhdG9yOjpp
bmZvKCkpCi0gICAgICAgIHx8IHZhbHVlLmluaGVyaXRzKEpTQXJndW1lbnRzSXRlcmF0b3I6Omlu
Zm8oKSkpCisgICAgICAgIHx8IHZhbHVlLmluaGVyaXRzKEpTU3RyaW5nSXRlcmF0b3I6OmluZm8o
KSkpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgQVNDSUlMaXRlcmFs
KCJpdGVyYXRvciIpKTsKIAogICAgIGlmICh2YWx1ZS5pbmhlcml0cyhKU0ludDhBcnJheTo6aW5m
bygpKSB8fCB2YWx1ZS5pbmhlcml0cyhKU0ludDE2QXJyYXk6OmluZm8oKSkgfHwgdmFsdWUuaW5o
ZXJpdHMoSlNJbnQzMkFycmF5OjppbmZvKCkpKQpAQCAtMzM3LDEzICszMzUsNiBAQCBKU1ZhbHVl
IEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgfQogCi0gICAgaWYgKEpTQXJndW1lbnRz
SXRlcmF0b3IqIGFyZ3VtZW50c0l0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0FyZ3VtZW50c0l0
ZXJhdG9yKj4odmFsdWUpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKLSAgICAgICAg
SlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIDEpOwot
ICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywgY29uc3RydWN0SW50
ZXJuYWxQcm9wZXJ0eShleGVjLCAiYXJndW1lbnRzIiwgYXJndW1lbnRzSXRlcmF0b3ItPml0ZXJh
dGVkVmFsdWUoKSkpOwotICAgICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfQotCiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTQwNiw4ICszOTcsNiBAQCBKU1ZhbHVlIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjppdGVyYXRvckVudHJpZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBp
dGVyYXRvciA9IHNldEl0ZXJhdG9yLT5jbG9uZShleGVjKTsKICAgICBlbHNlIGlmIChKU1N0cmlu
Z0l0ZXJhdG9yKiBzdHJpbmdJdGVyYXRvciA9IGpzRHluYW1pY0Nhc3Q8SlNTdHJpbmdJdGVyYXRv
cio+KHZhbHVlKSkKICAgICAgICAgaXRlcmF0b3IgPSBzdHJpbmdJdGVyYXRvci0+Y2xvbmUoZXhl
Yyk7Ci0gICAgZWxzZSBpZiAoSlNBcmd1bWVudHNJdGVyYXRvciogYXJndW1lbnRzSXRlcmF0b3Ig
PSBqc0R5bmFtaWNDYXN0PEpTQXJndW1lbnRzSXRlcmF0b3IqPih2YWx1ZSkpCi0gICAgICAgIGl0
ZXJhdG9yID0gYXJndW1lbnRzSXRlcmF0b3ItPmNsb25lKGV4ZWMpOwogICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmN2MxMTU4NGE5NTM2ZWYyOWZjNzI1NzZmMjIy
NzcwZmUxODNlOTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1
Y3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIgotCi0jaW5jbHVkZSAiQXJndW1l
bnRzSXRlcmF0b3JQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgi
Ci0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NlbGxJbmxpbmVz
LmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFzc0luZm8gQXJndW1lbnRzSXRl
cmF0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXJndW1lbnRzSXRlcmF0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0
b3IpIH07Ci0KLXZvaWQgQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtLCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZSogcHJvdG90eXBlKQotewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnRFbnVtIHwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzYwYzU5YjIxNjk3ZTc2YWMxZThlZjhmOWZh
Yjk1NThjYWJlOWQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3Ry
dWN0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQXJndW1lbnRzSXRlcmF0b3JD
b25zdHJ1Y3Rvcl9oCi0jZGVmaW5lIEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3JfaAotCi0j
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY2xhc3Mg
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGU7Ci0KLWNsYXNzIEFyZ3VtZW50c0l0ZXJhdG9yQ29u
c3RydWN0b3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Ci0KLSAgICBzdGF0aWMgQXJndW1lbnRzSXRlcmF0b3JD
b25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEFyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUpCi0gICAgewotICAgICAgICBBcmd1bWVudHNJ
dGVyYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEFyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBBcmd1bWVudHNJdGVy
YXRvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSk7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
LSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgQXJndW1lbnRzSXRlcmF0b3JD
b25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uo
dm0sIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZSopOwotfTsKLQotfQotCi0jZW5kaWYgLy8gIWRl
ZmluZWQoQXJndW1lbnRzSXRlcmF0b3JDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzM1YTlmYzUxMjg0YzA1NGQwMGZk
ZTdmZjg2Y2ZmNzAxOTI0ODMxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9y
UHJvdG90eXBlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oIgotCi0jaW5jbHVkZSAiSXRl
cmF0b3JPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNvbnN0IENsYXNzSW5m
byBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiQXJndW1lbnRzSXRlcmF0
b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEFyZ3VtZW50c0l0ZXJh
dG9yUHJvdG90eXBlKSB9OwotCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cmd1bWVudHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKLXN0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBl
RnVuY05leHQoRXhlY1N0YXRlKik7Ci0KLXZvaWQgQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOwotICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci0KLSAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBhcmd1bWVu
dHNJdGVyYXRvclByb3RvdHlwZUZ1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwotICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+bmV4dCwgYXJndW1lbnRzSXRlcmF0b3JQ
cm90b3R5cGVGdW5jTmV4dCwgRG9udEVudW0sIDApOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlRnVuY0l0ZXJhdG9yKENhbGxGcmFt
ZSogY2FsbEZyYW1lKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGVGdW5jTmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKLXsKLSAgICBK
U1ZhbHVlIHJlc3VsdDsKLSAgICBpZiAoanNDYXN0PEpTQXJndW1lbnRzSXRlcmF0b3IqPihjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKS0+bmV4dChjYWxsRnJhbWUsIHJlc3VsdCkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoY3JlYXRlSXRlclJlc3VsdE9iamVjdChjYWxsRnJhbWUsIHJl
c3VsdCwgZmFsc2UpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNyZWF0ZUl0ZXJSZXN1
bHRPYmplY3QoY2FsbEZyYW1lLCBqc1VuZGVmaW5lZCgpLCB0cnVlKSk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHNJdGVyYXRv
clByb3RvdHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTgzOWJmYTE3OWU4
ZGIwZDVmMDliOGQ2MjA0MzA5YzFmNzAwMGRiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
c0l0ZXJhdG9yUHJvdG90eXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEFyZ3Vt
ZW50c0l0ZXJhdG9yUHJvdG90eXBlX2gKLSNkZWZpbmUgQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5
cGVfaAotCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLWNsYXNz
IEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewot
cHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotCi0gICAgc3RhdGlj
IEFyZ3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgICAgIEFy
Z3VtZW50c0l0ZXJhdG9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZT4odm0uaGVhcCkpIEFyZ3VtZW50c0l0
ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwotICAgICAgICBwcm90b3R5cGUtPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwotICAgICAgICByZXR1cm4gcHJvdG90eXBlOwot
ICAgIH0KLQotICAgIERFQ0xBUkVfSU5GTzsKLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBBcmd1bWVudHNJdGVyYXRvclBy
b3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKLSAgICB7Ci0gICAgfQotICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOwotfTsKLQotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoQXJndW1lbnRz
SXRlcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBjYTVmMzZlNmJhNzNkZDYwMGMzMjljZmFiOGMyZWQz
NmI5ZTg0MzRmLi44ZTYxNzUxNWQ5MTI5YjFjMTY4M2RlODI4MjdjZWY0ZmIxNDU4YjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBA
IC02MSw3ICs2MSw2IEBACiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jUmVkdWNlKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY1JlZHVjZVJpZ2h0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1ZhbHVlcyhFeGVjU3RhdGUqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNLZXlzKEV4ZWNTdGF0ZSop
OwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0VudHJpZXMoRXhl
Y1N0YXRlKik7CiAKQEAgLTExNCw3ICsxMTMsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgQwog
ICByZWR1Y2UgICAgICAgICBhcnJheVByb3RvRnVuY1JlZHVjZSAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKICAgcmVkdWNlUmlnaHQgICAgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodCAgICBE
b250RW51bXxGdW5jdGlvbiAxCiAgIG1hcCAgICAgICAgICAgIGFycmF5UHJvdG9GdW5jTWFwICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQotICB2YWx1ZXMgICAgICAgICBhcnJheVByb3Rv
RnVuY1ZhbHVlcyAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgZW50cmllcyAgICAgICAg
YXJyYXlQcm90b0Z1bmNFbnRyaWVzICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCiAgIGtleXMg
ICAgICAgICAgIGFycmF5UHJvdG9GdW5jS2V5cyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAogICBmaW5kICAgICAgICAgICBhcnJheVByb3RvRnVuY0ZpbmQgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKQEAgLTE0MSw3ICsxMzksOSBAQCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFz
ZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKICAg
ICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwotICAgIEpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFycmF5UHJvdG9GdW5jVmFs
dWVzLCBEb250RW51bSwgMCk7CisKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG9WYWx1ZXNG
dW5jdGlvbigpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCBnbG9iYWxPYmplY3QtPmFycmF5UHJv
dG9WYWx1ZXNGdW5jdGlvbigpLCBEb250RW51bSk7CiAKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
cnVudGltZUZsYWdzKCkuaXNTeW1ib2xEaXNhYmxlZCgpKSB7CiAgICAgICAgIEpTT2JqZWN0KiB1
bnNjb3BhYmxlcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAppbmRleCA0NzJh
MWRkOWM5OGZkMTQ1OWVhYmUyNGY4NTg1NDg1NTQwYzJjOTQ0Li4zZmRlNjRkMGViMzQxNjVlOTY3
NzZmYmQ3ZjJhYjIzNmE0YWY2NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmgKQEAgLTQ4LDYgKzQ4LDggQEAgY2xhc3MgQXJyYXlQcm90b3R5
cGUgOiBwdWJsaWMgSlNBcnJheSB7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7CiB9OwogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jVmFsdWVzKEV4ZWNTdGF0ZSopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlm
IC8vIEFycmF5UHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuY3BwCmluZGV4IDgwN2Q1MWY5MjM5ZGUxMTRmMDc0NjhlZGYwMjMx
NmVjM2QxNmU0MzEuLjQwYjlhYzNjYTAwN2ZiYzk5YmM3OGVlZGNjNjQwMDU5YThkN2E0MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCi0jaW5jbHVkZSAiSlNBcmd1bWVudHNJdGVyYXRvci5oIgog
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMzMsMjAgKzEz
MiwxNCBAQCBib29sIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcAogICAgIENsb25lZEFyZ3VtZW50cyogdGhp
c09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVudHMqPihvYmplY3QpOwogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgCi0gICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNh
bGxlcgotICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUpCisgICAg
aWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZQorICAgICAgICB8fCBpZGVudCA9
PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIKKyAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVy
dHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpCiAgICAgICAgIHRoaXNPYmplY3QtPm1hdGVyaWFsaXpl
U3BlY2lhbHNJZk5lY2Vzc2FyeShleGVjKTsKICAgICAKICAgICBpZiAoQmFzZTo6Z2V0T3duUHJv
cGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCBzbG90KSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCi0gICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9y
U3ltYm9sKSB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPkpTQ19OQVRJVkVfRlVO
Q1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3VtZW50c0Z1bmNJdGVy
YXRvciwgRG9udEVudW0sIDApOwotICAgICAgICBpZiAoSlNPYmplY3Q6OmdldE93blByb3BlcnR5
U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCi0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0gICAgCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xNjMsNyArMTU2
LDggQEAgdm9pZCBDbG9uZWRBcmd1bWVudHM6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBKU1YKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIAogICAgIGlmIChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUKLSAgICAgICAg
fHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyKSB7CisgICAgICAgIHx8IGlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcgorICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9w
ZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkgewogICAgICAgICB0aGlzT2JqZWN0LT5tYXRlcmlh
bGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZXhlYyk7CiAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBk
dW1teSA9IHNsb3Q7IC8vIFNoYWRvdyB0aGUgZ2l2ZW4gUHV0UHJvcGVydHlTbG90IHRvIHByZXZl
bnQgY2FjaGluZy4KICAgICAgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2
YWx1ZSwgZHVtbXkpOwpAQCAtMTc5LDcgKzE3Myw4IEBAIGJvb2wgQ2xvbmVkQXJndW1lbnRzOjpk
ZWxldGVQcm9wZXJ0eShKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAKICAgICBpZiAoaWRlbnQgPT0gdm0ucHJv
cGVydHlOYW1lcy0+Y2FsbGVlCi0gICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMt
PmNhbGxlcikKKyAgICAgICAgfHwgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVyCisg
ICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAg
ICAgICB0aGlzT2JqZWN0LT5tYXRlcmlhbGl6ZVNwZWNpYWxzSWZOZWNlc3NhcnkoZXhlYyk7CiAg
ICAgCiAgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KHRoaXNPYmplY3QsIGV4ZWMsIGlk
ZW50KTsKQEAgLTE5MSw3ICsxODYsOCBAQCBib29sIENsb25lZEFyZ3VtZW50czo6ZGVmaW5lT3du
UHJvcGVydHkoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZQogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgCiAgICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGxlZQotICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIp
CisgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlcgorICAgICAgICB8
fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCkKICAgICAgICAgdGhp
c09iamVjdC0+bWF0ZXJpYWxpemVTcGVjaWFsc0lmTmVjZXNzYXJ5KGV4ZWMpOwogICAgIAogICAg
IHJldHVybiBCYXNlOjpkZWZpbmVPd25Qcm9wZXJ0eShvYmplY3QsIGV4ZWMsIGlkZW50LCBkZXNj
cmlwdG9yLCBzaG91bGRUaHJvdyk7CkBAIC0yMTAsNiArMjA2LDggQEAgdm9pZCBDbG9uZWRBcmd1
bWVudHM6Om1hdGVyaWFsaXplU3BlY2lhbHMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBwdXRE
aXJlY3RBY2Nlc3NvcihleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZXIsIGdsb2JhbE9iamVj
dCgpLT50aHJvd1R5cGVFcnJvckdldHRlclNldHRlcih2bSksIERvbnREZWxldGUgfCBEb250RW51
bSB8IEFjY2Vzc29yKTsKICAgICB9IGVsc2UKICAgICAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jYWxsZWUsIEpTVmFsdWUobV9jYWxsZWUuZ2V0KCkpKTsKKworICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGdsb2JhbE9iamVjdCgp
LT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgRG9udEVudW0pOwogICAgIAogICAgIG1fY2Fs
bGVlLmNsZWFyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25l
ZEFyZ3VtZW50cy5oCmluZGV4IDEyMTlkOTlkM2EwOWYzOTlhYzZmYjZlNDA4NzQ0MTI3YzU3ZGQ3
NGYuLjAyOGE2ZGE3MjViMDZmM2I2MDc3OTUxNDZjZDYzZDkxY2Y1NDMzMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCkBAIC0zNyw3ICsz
Nyw3IEBACiAvLyBzb21lIHNvcGhpc3RpY2F0ZWQgVmFsdWVSZWNvdmVyeSdzIGlmIGFuIG9wdGlt
aXppbmcgY29tcGlsZXIgaXMgaW4gcGxheSkgYW5kIHRoZSBhcHByb3ByaWF0ZQogLy8gcHJvcGVy
dGllcyBvZiB0aGUgb2JqZWN0IGFyZSBwb3B1bGF0ZWQuIFRoZSBvbmx5IHJlYXNvbiB3aHkgd2Ug
bmVlZCBhIHNwZWNpYWwgY2xhc3MgaXMgdG8gbWFrZQogLy8gdGhlIG9iamVjdCBjbGFpbSB0byBi
ZSAiQXJndW1lbnRzIiBmcm9tIGEgdG9TdHJpbmcgc3RhbmRwb2ludCwgYW5kIHRvIGF2b2lkIG1h
dGVyaWFsaXppbmcgdGhlCi0vLyBjYWxsZXIvY2FsbGVlIHByb3BlcnRpZXMgdW5sZXNzIHNvbWVv
bmUgYXNrcyBmb3IgdGhlbS4KKy8vIGNhbGxlci9jYWxsZWUvQEBpdGVyYXRvciBwcm9wZXJ0aWVz
IHVubGVzcyBzb21lb25lIGFza3MgZm9yIHRoZW0uCiBjbGFzcyBDbG9uZWRBcmd1bWVudHMgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaAppbmRleCAzYmNjYzQxNWRkZGU4MjEyYzNiM2MxZmZkMjg1Zjk1ZjQ5MTkx
NTQ2Li5kYTliZTBlYmVlZTk2OWViNDE1MGYxOTBmNGEyNzgxYzdiNDA5NTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKQEAgLTI3
LDcgKzI3LDYgQEAKIC8vIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG9mIHByb3BlcnR5IG5hbWVzLCBw
YXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAgdmFyaW91cwogLy8gd2F5
cyB3aXRob3V0IHJlcGVhdGluZyB0aGUgbGlzdC4KICNkZWZpbmUgSlNDX0NPTU1PTl9JREVOVElG
SUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKLSAgICBtYWNybyhBcmd1bWVudHNJdGVy
YXRvcikgXAogICAgIG1hY3JvKEFycmF5KSBcCiAgICAgbWFjcm8oQXJyYXlCdWZmZXIpIFwKICAg
ICBtYWNybyhBcnJheUl0ZXJhdG9yKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EaXJlY3RBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGlyZWN0QXJndW1lbnRzLmNwcAppbmRleCBkMDMzM2E3OTczMjc3YTNiMTQ1ZmQyMTJl
ZmU0ZDc2OTY1NDg4N2YwLi5iYjYxZTRmYWY5YzkwNmJhNDU1MGRmZDEzNGVhNWUxYjY3MWQ0NDJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EaXJlY3RBcmd1bWVu
dHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEFyZ3VtZW50
cy5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5lcy5o
IgogI2luY2x1ZGUgIkdlbmVyaWNBcmd1bWVudHNJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNBcmd1
bWVudHNJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CkBAIC0xMzAsNiArMTI5LDcgQEAgdm9pZCBEaXJlY3RBcmd1bWVudHM6Om92ZXJyaWRlVGhp
bmdzKFZNJiB2bSkKICAgICAKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIobV9sZW5ndGgpLCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUsIG1fY2FsbGVlLmdldCgpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZ2xvYmFsT2Jq
ZWN0KCktPmFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpLCBEb250RW51bSk7CiAgICAgCiAgICAg
dm9pZCogYmFja2luZ1N0b3JlOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmhlYXAudHJ5QWxsb2Nh
dGVTdG9yYWdlKHRoaXMsIG92ZXJyaWRlc1NpemUoKSwgJmJhY2tpbmdTdG9yZSkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyaWNBcmd1bWVudHNJbmxp
bmVzLmgKaW5kZXggY2I5ZGRkZDc2MDY3ZWMyOGRjOTQ5MDA2ZTM3YjkwNWNhMGExZmRiMi4uNWY5
NTJjNmYyYmZlZGI3OWY0YmI0NTkzNTE2MTRlYjE4ZjZmYTgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJpY0FyZ3VtZW50c0lubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9HZW5lcmljQXJndW1lbnRzSW5saW5lcy5oCkBA
IC0yNyw3ICsyNyw2IEBACiAjZGVmaW5lIEdlbmVyaWNBcmd1bWVudHNJbmxpbmVzX2gKIAogI2lu
Y2x1ZGUgIkdlbmVyaWNBcmd1bWVudHMuaCIKLSNpbmNsdWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9y
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ3LDYg
KzQ2LDEwIEBACiAgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIERvbnRFbnVt
LCB0aGlzT2JqZWN0LT5jYWxsZWUoKS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQorICAgICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0
b3JTeW1ib2wpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udEVu
dW0sIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24o
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KICAgICAKICAg
ICBPcHRpb25hbDx1aW50MzJfdD4gaW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKQEAgLTU1LDE3
ICs1OCw3IEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAKLSAgICBpZiAoQmFz
ZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIGlkZW50LCBzbG90KSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgaWYgKGlkZW50ID09IHZtLnByb3BlcnR5TmFt
ZXMtPml0ZXJhdG9yU3ltYm9sKSB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIHRoaXNPYmplY3QtPkpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGFyZ3Vt
ZW50c0Z1bmNJdGVyYXRvciwgRG9udEVudW0sIDApOwotICAgICAgICBpZiAoSlNPYmplY3Q6Omdl
dE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBpZGVudCwgc2xvdCkpCi0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgaWRlbnQsIHNs
b3QpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgpAQCAtOTIsOCArODUsMTAgQEAKICAg
ICAgICAgYXJyYXkuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkpOwogICAgIH0KICAgICBp
ZiAobW9kZS5pbmNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzKCkgJiYgIXRoaXNPYmplY3QtPm92ZXJy
b2RlVGhpbmdzKCkpIHsKLSAgICAgICAgYXJyYXkuYWRkKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5j
YWxsZWUpOwogICAgICAgICBhcnJheS5hZGQoZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCk7
CisgICAgICAgIGFycmF5LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlKTsKKyAgICAg
ICAgaWYgKG1vZGUuaW5jbHVkZVN5bWJvbFByb3BlcnRpZXMoKSkKKyAgICAgICAgICAgIGFycmF5
LmFkZChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXRlcmF0b3JTeW1ib2wpOwogICAgIH0KICAgICBC
YXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmplY3QsIGV4ZWMsIGFycmF5LCBtb2RlKTsK
IH0KQEAgLTEwNiw3ICsxMDEsOCBAQAogICAgIAogICAgIGlmICghdGhpc09iamVjdC0+b3ZlcnJv
ZGVUaGluZ3MoKQogICAgICAgICAmJiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
Ci0gICAgICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUpKSB7Cisg
ICAgICAgICAgICB8fCBpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUKKyAgICAgICAg
ICAgIHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkgewogICAg
ICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRoaW5ncyh2bSk7CiAgICAgICAgIFB1dFByb3BlcnR5
U2xvdCBkdW1teSA9IHNsb3Q7IC8vIFRoaXMgcHV0IGlzIG5vdCBjYWNoZWFibGUsIHNvIHdlIHNo
YWRvdyB0aGUgc2xvdCB0aGF0IHdhcyBnaXZlbiB0byB1cy4KICAgICAgICAgQmFzZTo6cHV0KHRo
aXNPYmplY3QsIGV4ZWMsIGlkZW50LCB2YWx1ZSwgZHVtbXkpOwpAQCAtMTQ0LDcgKzE0MCw4IEBA
CiAgICAgCiAgICAgaWYgKCF0aGlzT2JqZWN0LT5vdmVycm9kZVRoaW5ncygpCiAgICAgICAgICYm
IChpZGVudCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgKLSAgICAgICAgICAgIHx8IGlkZW50
ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkpCisgICAgICAgICAgICB8fCBpZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5jYWxsZWUKKyAgICAgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKSkKICAgICAgICAgdGhpc09iamVjdC0+b3ZlcnJpZGVU
aGluZ3Modm0pOwogICAgIAogICAgIE9wdGlvbmFsPHVpbnQzMl90PiBpbmRleCA9IHBhcnNlSW5k
ZXgoaWRlbnQpOwpAQCAtMTc3LDcgKzE3NCw4IEBACiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICAKICAgICBpZiAoaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoCi0gICAgICAg
IHx8IGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmNhbGxlZSkKKyAgICAgICAgfHwgaWRlbnQg
PT0gdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlCisgICAgICAgIHx8IGlkZW50ID09IHZtLnByb3Bl
cnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKQogICAgICAgICB0aGlzT2JqZWN0LT5vdmVycmlkZVRo
aW5nc0lmTmVjZXNzYXJ5KHZtKTsKICAgICBlbHNlIHsKICAgICAgICAgT3B0aW9uYWw8dWludDMy
X3Q+IG9wdGlvbmFsSW5kZXggPSBwYXJzZUluZGV4KGlkZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NDdkYzk2NGNjYmU3MmI3NjBkZjk1MjY1NDNlYzIyZWU0
MTliMTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcmd1bWVudHNJdGVyYXRvci5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNB
cmd1bWVudHNJdGVyYXRvci5oIgotCi0jaW5jbHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCi0jaW5j
bHVkZSAiRGlyZWN0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgQ2xhc3NJ
bmZvIEpTQXJndW1lbnRzSXRlcmF0b3I6OnNfaW5mbyA9IHsgIkFyZ3VtZW50c0l0ZXJhdG9yIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FyZ3VtZW50c0l0ZXJhdG9y
KSB9OwotCi12b2lkIEpTQXJndW1lbnRzSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
SlNPYmplY3QqIGFyZ3VtZW50cykKLXsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0g
ICAgbV9hcmd1bWVudHMuc2V0KHZtLCB0aGlzLCBhcmd1bWVudHMpOwotfQotCi1KU0FyZ3VtZW50
c0l0ZXJhdG9yKiBKU0FyZ3VtZW50c0l0ZXJhdG9yOjpjbG9uZShFeGVjU3RhdGUqIGV4ZWMpCi17
Ci0gICAgYXV0byBjbG9uZSA9IEpTQXJndW1lbnRzSXRlcmF0b3I6OmNyZWF0ZShleGVjLT52bSgp
LCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCktPmFyZ3VtZW50c0l0ZXJhdG9yU3RydWN0
dXJlKCksIG1fYXJndW1lbnRzLmdldCgpKTsKLSAgICBjbG9uZS0+bV9uZXh0SW5kZXggPSBtX25l
eHRJbmRleDsKLSAgICByZXR1cm4gY2xvbmU7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJndW1lbnRzRnVuY0l0ZXJhdG9yKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU09i
amVjdCogdGhpc09iaiA9IGV4ZWMtPnRoaXNWYWx1ZSgpLnRvVGhpcyhleGVjLCBTdHJpY3RNb2Rl
KS50b09iamVjdChleGVjKTsKLSAgICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKERpcmVjdEFyZ3Vt
ZW50czo6aW5mbygpKSAmJiAhdGhpc09iai0+aW5oZXJpdHMoU2NvcGVkQXJndW1lbnRzOjppbmZv
KCkpICYmICF0aGlzT2JqLT5pbmhlcml0cyhDbG9uZWRBcmd1bWVudHM6OmluZm8oKSkpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJBdHRlbXB0ZWQgdG8gdXNlIEFyZ3VtZW50cyBpdGVyYXRvciBvbiBub24tQXJndW1lbnRz
IG9iamVjdCIpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU0FyZ3VtZW50c0l0ZXJh
dG9yOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5h
cmd1bWVudHNJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqKSk7Ci19Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJndW1lbnRzSXRlcmF0b3IuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU2N2E1N2UzZGE4NzkzODUzZWU2NTE3M2RlNDNk
NjkyNzM3NzliNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FyZ3VtZW50c0l0ZXJhdG9yLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIEpTQXJndW1lbnRzSXRlcmF0b3JfaAot
I2RlZmluZSBKU0FyZ3VtZW50c0l0ZXJhdG9yX2gKLQotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU0FyZ3VtZW50c0l0ZXJhdG9yIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0
cnVjdHVyZUZsYWdzOwotCi0gICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKLQotICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwotICAgIH0KLQotICAgIHN0YXRpYyBKU0FyZ3Vt
ZW50c0l0ZXJhdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmpl
Y3QqIGFyZ3VtZW50cykKLSAgICB7Ci0gICAgICAgIEpTQXJndW1lbnRzSXRlcmF0b3IqIGluc3Rh
bmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNBcmd1bWVudHNJdGVyYXRvcj4odm0u
aGVhcCkpIEpTQXJndW1lbnRzSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIGluc3Rh
bmNlLT5maW5pc2hDcmVhdGlvbih2bSwgYXJndW1lbnRzKTsKLSAgICAgICAgcmV0dXJuIGluc3Rh
bmNlOwotICAgIH0KLQotICAgIGJvb2wgbmV4dChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSYgdmFsdWUpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBsZW5ndGggPQotICAgICAgICAgICAg
bV9hcmd1bWVudHMtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKLSAgICAgICAgaWYgKG1fbmV4dEluZGV4ID49IGxl
bmd0aCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFsdWUgPSBtX2FyZ3Vt
ZW50cy0+Z2V0SW5kZXgoY2FsbEZyYW1lLCBtX25leHRJbmRleCsrKTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgSlNWYWx1ZSBpdGVyYXRlZFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9hcmd1bWVudHMuZ2V0KCk7IH0KLSAgICBKU0FyZ3VtZW50c0l0ZXJhdG9yKiBjbG9uZShF
eGVjU3RhdGUqKTsKLQotcHJpdmF0ZToKLSAgICBKU0FyZ3VtZW50c0l0ZXJhdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQotICAg
ICAgICAsIG1fbmV4dEluZGV4KDApCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU09iamVjdCopOwotICAgIAotICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9hcmd1bWVudHM7Ci0gICAgc2l6ZV90IG1fbmV4dEluZGV4OwotfTsKLQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcmd1bWVudHNGdW5jSXRlcmF0b3IoRXhlY1N0YXRlKik7Ci0KLX0K
LQotI2VuZGlmIC8vICFkZWZpbmVkKEpTQXJndW1lbnRzSXRlcmF0b3JfaCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmZjIxY2I5
MGJhOTVhZTU4ZjUyOWM5ZWJlNzdmNzVlNThlMmY1ZjcwLi4yM2RmM2E0YTc0Y2RmM2ZhY2Y3ZjY5
OGY5NDgxMmVmNTZiNTBlYTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0zMCw4ICszMCw2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKIAotI2luY2x1ZGUgIkFyZ3VtZW50c0l0
ZXJhdG9yQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJBcmd1bWVudHNJdGVyYXRvclByb3RvdHlw
ZS5oIgogI2luY2x1ZGUgIkFycmF5Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBcnJheUl0ZXJh
dG9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJBcnJheUl0ZXJhdG9yUHJvdG90eXBlLmgiCkBA
IC01Niw3ICs1NCw2IEBACiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKLSNpbmNs
dWRlICJKU0FyZ3VtZW50c0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTQXJyYXlC
dWZmZXJQcm90b3R5cGUuaCIKQEAgLTI0MSw2ICsyMzgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Ojppbml0KFZNJiB2bSkKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3Bl
cnRpZXMoZXhlYywgdGhpcywgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVuY3Rpb24pOwogICAgIG1f
Y2FsbEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgY2FsbEZ1bmN0aW9uKTsKICAgICBtX2FwcGx5RnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBhcHBseUZ1bmN0aW9uKTsKKyAgICBtX2FycmF5UHJvdG9WYWx1
ZXNGdW5jdGlvbi5zZXQodm0sIHRoaXMsIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwg
dm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLnN0cmluZygpLCBhcnJheVByb3RvRnVuY1ZhbHVlcykp
OwogICAgIG1fbnVsbEdldHRlckZ1bmN0aW9uLnNldCh2bSwgdGhpcywgTnVsbEdldHRlckZ1bmN0
aW9uOjpjcmVhdGUodm0sIE51bGxHZXR0ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0
aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fbnVsbFNldHRlckZ1bmN0
aW9uLnNldCh2bSwgdGhpcywgTnVsbFNldHRlckZ1bmN0aW9uOjpjcmVhdGUodm0sIE51bGxTZXR0
ZXJGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSkpOwogICAgIG1fb2JqZWN0UHJvdG90eXBlLnNldCh2bSwgdGhpcywgT2JqZWN0UHJv
dG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIE9iamVjdFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KHZtLCB0aGlzLCBqc051bGwoKSkpKTsKQEAgLTY4OSw2ICs2ODcsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fZXZhbEZ1bmN0aW9uKTsKICAgICB2
aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsRnVuY3Rpb24pOwogICAgIHZpc2l0b3Iu
YXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2FwcGx5RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbik7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIpOwogCiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG90eXBlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDJjYTU4OTkz
MzdiNjUwNzYyZjIzOTcwYjI0OTZkOTZkNmJmZjBiOTIuLjUxM2RkZTc5YTk3MGRhYWQ2NWM0N2Q2
ZDk2MTEyODZkM2RmZTYzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMTA3LDcgKzEwNyw2IEBACiAgICAgRk9SX0VBQ0hfU0lNUExF
X0JVSUxUSU5fVFlQRV9XSVRIX0NPTlNUUlVDVE9SKG1hY3JvKSBcCiAgICAgRk9SX0VBQ0hfRVhQ
RVJJTUVOVEFMX0JVSUxUSU5fVFlQRV9XSVRIX0NPTlNUUlVDVE9SKG1hY3JvKSBcCiAgICAgREVG
SU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIEFycmF5SXRlcmF0b3IsIGFycmF5SXRlcmF0b3Ip
IFwKLSAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgQXJndW1lbnRzSXRlcmF0b3Is
IGFyZ3VtZW50c0l0ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8s
IE1hcEl0ZXJhdG9yLCBtYXBJdGVyYXRvcikgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElO
KG1hY3JvLCBTZXRJdGVyYXRvciwgc2V0SXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRf
QlVJTFRJTihtYWNybywgU3RyaW5nSXRlcmF0b3IsIHN0cmluZ0l0ZXJhdG9yKSBcCkBAIC0xODks
NiArMTg4LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJp
YWJsZU9iamVjdCB7CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZXZhbEZ1bmN0aW9u
OwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX2NhbGxGdW5jdGlvbjsKICAgICBXcml0
ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9hcHBseUZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8
R2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0dGVyOwogCiAgICAgV3JpdGVC
YXJyaWVyPE9iamVjdFByb3RvdHlwZT4gbV9vYmplY3RQcm90b3R5cGU7CkBAIC0zOTQsNiArMzk0
LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9i
amVjdCB7CiAgICAgSlNGdW5jdGlvbiogZXZhbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9l
dmFsRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBjYWxsRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX2NhbGxGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIGFwcGx5
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FwcGx5RnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBK
U0Z1bmN0aW9uKiBhcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Fy
cmF5UHJvdG9WYWx1ZXNGdW5jdGlvbi5nZXQoKTsgfQogICAgIEdldHRlclNldHRlciogdGhyb3dU
eXBlRXJyb3JHZXR0ZXJTZXR0ZXIoVk0mIHZtKQogICAgIHsKICAgICAgICAgaWYgKCFtX3Rocm93
VHlwZUVycm9yR2V0dGVyU2V0dGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01hcFByb3RvdHlwZS5jcHAKaW5kZXggZmU1MjVlY2ZjNDg0MDk1YjNiNjZiMTVhZTZhNWE2NzNj
OTZhYWU3OC4uYmY5YmI0YjZkYzZiN2MxZjExYjM5ZjY1ZTY0NjNiMjZlYjA4MDY1NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCkBAIC02Nyw4
ICs2NywxMCBAQCB2b2lkIE1hcFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJv
cGVydHlOYW1lcy0+c2V0LCBtYXBQcm90b0Z1bmNTZXQsIERvbnRFbnVtLCAyKTsKICAgICBKU0Nf
TkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIG1hcFByb3RvRnVuY0tleXMs
IERvbnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMt
PnZhbHVlcywgbWFwUHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElW
RV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBtYXBQcm90b0Z1bmNFbnRyaWVz
LCBEb250RW51bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRvclN5bWJvbCwgbWFwUHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOworCisg
ICAgSlNGdW5jdGlvbiogZW50cmllcyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLnN0cmluZygpLCBtYXBQcm90b0Z1bmNF
bnRyaWVzKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+ZW50cmllcywgZW50cmllcywgRG9udEVudW0pOworICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5bWJvbCwgZW50cmllcywg
RG9udEVudW0pOwogCiAgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNp
emUuc3RyaW5nKCksIG1hcFByb3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlZEFyZ3VtZW50cy5jcHAKaW5kZXggNjUyMDQ4Y2Y3YzA2MGM0NzNi
NGVjOTNmNjQwZjIxYjU5OTFkMzczOS4uYTVhMmZjNzViMzFiYWQ5OWRjMWFmNjE1MWIzYzc5NzU1
MjNkNzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVk
QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZWRB
cmd1bWVudHMuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAKICNpbmNsdWRlICJHZW5lcmljQXJndW1lbnRzSW5saW5lcy5oIgotI2luY2x1ZGUgIkpT
QXJndW1lbnRzSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewpAQCAtMTI1LDYgKzEyNCw3IEBAIHZvaWQgU2NvcGVkQXJndW1lbnRzOjpvdmVycmlk
ZVRoaW5ncyhWTSYgdm0pCiAgICAgCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKG1fdGFibGUtPmxlbmd0aCgpKSwgRG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsbGVlLCBtX2NhbGxlZS5nZXQoKSwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1i
b2wsIGdsb2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKSwgRG9udEVudW0p
OwogICAgIAogICAgIG1fb3ZlcnJvZGVUaGluZ3MgPSB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggYjMxNTg2MWE0NjU1ZTJj
MWZiN2UyNjRhNTZhMDZkMjc5ZDUwZTg5Ni4uNmEyMWMzN2NlMTRmNDcyNWVkM2M1OWE2NmUxYWZm
Nzg3MTJiZGIyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90
b3R5cGUuY3BwCkBAIC02NSw5ICs2NSwxMSBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Zm9yRWFjaCwgc2V0UHJvdG9GdW5jRm9yRWFj
aCwgRG9udEVudW0sIDEpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aGFzLCBzZXRQcm90b0Z1bmNIYXMsIERvbnRFbnVtLCAxKTsKICAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmtleXMsIHNldFByb3RvRnVuY0tleXMsIERvbnRFbnVt
LCAwKTsKLSAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlcywg
c2V0UHJvdG9GdW5jVmFsdWVzLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tih2bS5wcm9wZXJ0eU5hbWVzLT5lbnRyaWVzLCBzZXRQcm90b0Z1bmNFbnRyaWVzLCBEb250RW51
bSwgMCk7Ci0gICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgc2V0UHJvdG9GdW5jS2V5cywgRG9udEVudW0sIDApOworCisgICAgSlNGdW5jdGlv
biogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHZtLnBy
b3BlcnR5TmFtZXMtPnZhbHVlcy5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzKTsKKyAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVzLCB2
YWx1ZXMsIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIHZhbHVlcywgRG9udEVudW0pOwogCiAgICAg
R2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPnNpemUuc3RyaW5nKCksIHNldFBy
b3RvRnVuY1NpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9hcmd1bWVudHMtaXRlcmF0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2FyZ3VtZW50cy1pdGVyYXRvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTgwNTMyMTA3ZGE5NzY5
Y2U5OGQyODFhNmY1YjE0NTE3MTg1OWI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hcmd1bWVudHMtaXRlcmF0b3IuanMKQEAgLTAsMCArMSw3
MCBAQAorZnVuY3Rpb24gdGVzdChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0
dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdEFyZ3VtZW50cyhjaGVjaykgeworICAgIChmdW5jdGlv
biAoKSB7CisgICAgICAgIGNoZWNrKGFyZ3VtZW50cywgW10pOworICAgIH0oKSk7CisKKyAgICAo
ZnVuY3Rpb24gKGEsIGIsIGMpIHsKKyAgICAgICAgY2hlY2soYXJndW1lbnRzLCBbYSwgYiwgY10p
OworICAgIH0oKSk7CisKKyAgICAoZnVuY3Rpb24gKCkgeworICAgICAgICAndXNlIHN0cmljdCc7
CisgICAgICAgIGNoZWNrKGFyZ3VtZW50cywgW10pOworICAgIH0oKSk7CisKKyAgICAoZnVuY3Rp
b24gKGEsIGIsIGMpIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworICAgICAgICBjaGVjayhhcmd1
bWVudHMsIFthLCBiLCBjXSk7CisgICAgfSgpKTsKK30KKwordGVzdEFyZ3VtZW50cyhmdW5jdGlv
biAoYXJncykgeworICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGFyZ3NbU3ltYm9sLml0ZXJhdG9y
XTsKKyAgICB0ZXN0KGl0ZXJhdG9yTWV0aG9kLCBBcnJheS5wcm90b3R5cGUudmFsdWVzKTsKKyAg
ICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoYXJncywg
U3ltYm9sLml0ZXJhdG9yKTsKKyAgICB0ZXN0KGRlc2NyaXB0b3Iud3JpdGFibGUsIHRydWUpOwor
ICAgIHRlc3QoZGVzY3JpcHRvci5jb25maWd1cmFibGUsIHRydWUpOworICAgIHRlc3QoZGVzY3Jp
cHRvci5lbnVtZXJhYmxlLCBmYWxzZSk7CisgICAgdGVzdChkZXNjcmlwdG9yLnZhbHVlLCBpdGVy
YXRvck1ldGhvZCk7Cit9KTsKKwordGVzdEFyZ3VtZW50cyhmdW5jdGlvbiAoYXJncywgZXhwZWN0
ZWQpIHsKKyAgICB2YXIgaXRlcmF0b3IgPSBhcmdzW1N5bWJvbC5pdGVyYXRvcl0oKTsKKyAgICB0
ZXN0KGl0ZXJhdG9yLnRvU3RyaW5nKCksICdbb2JqZWN0IEFycmF5IEl0ZXJhdG9yXScpOworICAg
IHZhciBpbmRleCA9IDA7CisgICAgZm9yICh2YXIgdmFsdWUgb2YgaXRlcmF0b3IpIHsKKyAgICAg
ICAgdGVzdCh2YWx1ZSwgZXhwZWN0ZWRbaW5kZXgrK10pOworICAgIH0KKyAgICB0ZXN0KGFyZ3Mu
bGVuZ3RoLCBpbmRleCk7CisKKyAgICB2YXIgaW5kZXggPSAwOworICAgIGZvciAodmFyIHZhbHVl
IG9mIGFyZ3MpIHsKKyAgICAgICAgdGVzdCh2YWx1ZSwgZXhwZWN0ZWRbaW5kZXgrK10pOworICAg
IH0KKyAgICB0ZXN0KGFyZ3MubGVuZ3RoLCBpbmRleCk7Cit9KTsKKwordGVzdEFyZ3VtZW50cyhm
dW5jdGlvbiAoYXJncykgeworICAgIHZhciBzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scyhhcmdzKTsKKyAgICB0ZXN0KHN5bWJvbHMubGVuZ3RoLCAxKTsKKyAgICB0ZXN0KHN5
bWJvbHNbMF0sIFN5bWJvbC5pdGVyYXRvcik7Cit9KTsKKwordGVzdEFyZ3VtZW50cyhmdW5jdGlv
biAoYXJncykgeworICAgICd1c2Ugc3RyaWN0JzsKKyAgICBhcmdzW1N5bWJvbC5pdGVyYXRvcl0g
PSAnbm90IHRocm93IGVycm9yJzsKK30pOworCit0ZXN0QXJndW1lbnRzKGZ1bmN0aW9uIChhcmdz
KSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIGRlbGV0ZSBhcmdzW1N5bWJvbC5pdGVyYXRvcl07
CisgICAgdGVzdChhcmdzW1N5bWJvbC5pdGVyYXRvcl0sIHVuZGVmaW5lZCk7CisKKyAgICB2YXIg
c3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoYXJncyk7CisgICAgdGVzdChz
eW1ib2xzLmxlbmd0aCwgMCk7Cit9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvaXRlcmF0b3ItZnVuY3Rpb25zLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9pdGVyYXRvci1mdW5jdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJlZGI2
ZTkwM2I3OWM4MGZhNzk3ZDgyOWQ4M2MzYTEwMWMwY2YwMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaXRlcmF0b3ItZnVuY3Rpb25zLmpzCkBA
IC0wLDAgKzEsMzMgQEAKK2Z1bmN0aW9uIHRlc3QoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1
ZTogJyArIGFjdHVhbCk7Cit9CisKK3Rlc3QoQXJyYXkucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRv
cl0sIEFycmF5LnByb3RvdHlwZS52YWx1ZXMpOwordGVzdChNYXAucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl0sIE1hcC5wcm90b3R5cGUuZW50cmllcyk7Cit0ZXN0KFNldC5wcm90b3R5cGVbU3lt
Ym9sLml0ZXJhdG9yXSwgU2V0LnByb3RvdHlwZS52YWx1ZXMpOworCitmdW5jdGlvbiBhcmd1bWVu
dHNUZXN0cyh2YWx1ZXMpIHsKKyAgICB0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgcmV0dXJu
IGFyZ3VtZW50c1tTeW1ib2wuaXRlcmF0b3JdOworICAgIH0oKSwgdmFsdWVzKTsKKworICAgIHRl
c3QoZnVuY3Rpb24gKGEsIGIsIGMpIHsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1tTeW1ib2wu
aXRlcmF0b3JdOworICAgIH0oKSwgdmFsdWVzKTsKKworICAgIHRlc3QoZnVuY3Rpb24gKCkgewor
ICAgICAgICAndXNlIHN0cmljdCc7CisgICAgICAgIHJldHVybiBhcmd1bWVudHNbU3ltYm9sLml0
ZXJhdG9yXTsKKyAgICB9KCksIHZhbHVlcyk7CisKKyAgICB0ZXN0KGZ1bmN0aW9uIChhLCBiLCBj
KSB7CisgICAgICAgICd1c2Ugc3RyaWN0JzsKKyAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1tTeW1i
b2wuaXRlcmF0b3JdOworICAgIH0oKSwgdmFsdWVzKTsKK30KKworYXJndW1lbnRzVGVzdHMoQXJy
YXkucHJvdG90eXBlLnZhbHVlcyk7Cit2YXIgYXJyYXlWYWx1ZXMgPSBBcnJheS5wcm90b3R5cGUu
dmFsdWVzOworQXJyYXkucHJvdG90eXBlLnZhbHVlcyA9IG51bGw7Cithcmd1bWVudHNUZXN0cyhh
cnJheVZhbHVlcyk7Cg==
</data>
<flag name="review"
          id="275749"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>