<?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>201663</bug_id>
          
          <creation_ts>2019-09-10 15:59:19 -0700</creation_ts>
          <short_desc>SVGLengthValue should use two enums for &apos;type&apos; and &apos;mode&apos; instead of one unsigned for &apos;units&apos;</short_desc>
          <delta_ts>2019-09-12 17:41:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>199843</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1569709</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-10 15:59:19 -0700</bug_when>
    <thetext>If SVGLengthType and SVGLengthMode are converted to enum class type with size unit_8, SVGLengthValue will not need to use the bit operations to store them in on unsigned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569724</commentid>
    <comment_count>1</comment_count>
      <attachid>378508</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-10 16:25:05 -0700</bug_when>
    <thetext>Created attachment 378508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569758</commentid>
    <comment_count>2</comment_count>
      <attachid>378508</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-09-10 17:31:12 -0700</bug_when>
    <thetext>Comment on attachment 378508
Patch

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

&gt; Source/WebCore/svg/SVGLengthValue.cpp:328
&gt; +    if (from.lengthType() == lengthType() || from.isZero() || isZero() || from.lengthType() == SVGLengthType::EMS || from.lengthType() == SVGLengthType::EXS) {

This is pretty confusing.

&gt; Source/WebCore/svg/SVGLengthValue.h:87
&gt; +    void newValueSpecifiedUnits(SVGLengthType, float valueInSpecifiedUnits);

What does &quot;new value&quot; mean here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569872</commentid>
    <comment_count>3</comment_count>
      <attachid>378508</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-11 01:42:01 -0700</bug_when>
    <thetext>Comment on attachment 378508
Patch

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

Nice cleanup, much better to read!

&gt; Source/WebCore/ChangeLog:9
&gt; +        It used to allocate the least significant bits 4 bits to the SVGLengthMode

bits 4 bits -&gt; 4 bits

&gt;&gt; Source/WebCore/svg/SVGLengthValue.h:87
&gt;&gt; +    void newValueSpecifiedUnits(SVGLengthType, float valueInSpecifiedUnits);
&gt; 
&gt; What does &quot;new value&quot; mean here?

I agree, we can use a better naming convention in SVGLengthValue -- after all only SVGLength is exposed to the Web, and we have to stick with the confusing official names like newValueSpecifiedUnits (see SVGLength.idl).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570051</commentid>
    <comment_count>4</comment_count>
      <attachid>378596</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-11 16:39:55 -0700</bug_when>
    <thetext>Created attachment 378596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570054</commentid>
    <comment_count>5</comment_count>
      <attachid>378508</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-11 16:53:26 -0700</bug_when>
    <thetext>Comment on attachment 378508
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        It used to allocate the least significant bits 4 bits to the SVGLengthMode
&gt; 
&gt; bits 4 bits -&gt; 4 bits

Fixed.

&gt;&gt; Source/WebCore/svg/SVGLengthValue.cpp:328
&gt;&gt; +    if (from.lengthType() == lengthType() || from.isZero() || isZero() || from.lengthType() == SVGLengthType::EMS || from.lengthType() == SVGLengthType::EXS) {
&gt; 
&gt; This is pretty confusing.

I replaced the last two clauses &quot;from.lengthType() == SVGLengthType::EMS || from.lengthType() == SVGLengthType::EXS&quot; with from.isRelative() since from.lengthType() == SVGLengthType::Percentage is handled above..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570055</commentid>
    <comment_count>6</comment_count>
      <attachid>378598</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-11 16:54:31 -0700</bug_when>
    <thetext>Created attachment 378598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570057</commentid>
    <comment_count>7</comment_count>
      <attachid>378599</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-11 16:58:50 -0700</bug_when>
    <thetext>Created attachment 378599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570207</commentid>
    <comment_count>8</comment_count>
      <attachid>378635</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-12 01:47:20 -0700</bug_when>
    <thetext>Created attachment 378635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570397</commentid>
    <comment_count>9</comment_count>
      <attachid>378682</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-12 15:28:10 -0700</bug_when>
    <thetext>Created attachment 378682
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570418</commentid>
    <comment_count>10</comment_count>
      <attachid>378687</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-12 16:17:14 -0700</bug_when>
    <thetext>Created attachment 378687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570445</commentid>
    <comment_count>11</comment_count>
      <attachid>378687</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-12 17:40:02 -0700</bug_when>
    <thetext>Comment on attachment 378687
Patch

Clearing flags on attachment: 378687

Committed r249822: &lt;https://trac.webkit.org/changeset/249822&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570446</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-12 17:40:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1570447</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-12 17:41:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55324552&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378508</attachid>
            <date>2019-09-10 16:25:05 -0700</date>
            <delta_ts>2019-09-11 16:39:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190910162504.patch</filename>
            <type>text/plain</type>
            <size>129721</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWE4MjlmMWEyMTZhMTM3
MzM0YjY5NWMyMjRkZDQzYTI2ZTg2NzBmOC4uNzM5ZmU4MTkwMThkY2UxNDczNjcxY2I3Yzk4MGU5
MGJlZWVmZGZmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4MSBAQAorMjAxOS0wOS0xMCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xl
bmd0aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0
ZWFkIG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgaGFkIG9uZSB1bnNpZ25lZCB0
byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhUeXBlLgorICAgICAgICBJdCB1c2Vk
IHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzIDQgYml0cyB0byB0aGUgU1ZH
TGVuZ3RoTW9kZQorICAgICAgICB3aGlsZSBpdCBsZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0
aFR5cGUuCisKKyAgICAgICAgVGhpcyB3aWxsIG5vdCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9k
ZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUgbWFkZSBvZgorICAgICAgICBzaXplIHVpbnRfOC4KKwor
ICAgICAgICBBbHNvIGluIHRoaXMgcGF0Y2g6CisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRp
dmVWYWx1ZXNNb2RlIGlzIGFsc28gbWFkZSBlbnVtIGNsYXNzLgorCisgICAgICAgIC0tIFNWR0xl
bmd0aFZhbHVlOjpibGVuZCgpIGlzIG1vdmVkIHRvIFNWR0xlbmd0aFZhbHVlLmNwcCBzbyB3ZSBk
byBub3QKKyAgICAgICAgICAgbmVlZCB0byBpbmNsdWRlIFNWR0xlbmd0aENvbnRleHQuaCBpbiBT
VkdMZW5ndGhWYWx1ZS5oLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFR5cGUgYW5kIFNWR0xlbmd0
aE1vZGUgYXJlIG1vdmVkIHRvIFNWR0xlbmd0aFZhbHVlLmguIEluc3RlYWQKKyAgICAgICAgICAg
b2YgaGF2aW5nIFNWR0xlbmd0aFZhbHVlLmggaW5jbHVkZXMgU1ZHTGVuZ3RoQ29udHRleHQuaCwg
dGhlIG9wcG9zaXRlCisgICAgICAgICAgIHdpbGwgaGFwcGVuLgorCisgICAgICAgIC0tIFNWR0Fu
aW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIGlzIGRlbGV0ZWQuIEl0IHNob3VsZCBoYXZlIGJl
ZW4gZGVsZXRlZAorICAgICAgICAgICB3aXRoIHRoZSBTVkcgdGVhciBvZmYgb2JqZWN0cyByZW1v
dmFsLgorCisgICAgICAgIC0tIFNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+IGFuZCBT
VkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhWYWx1ZT4KKyAgICAgICAgICAgYXJlIGRlbGV0ZWQu
IFRoZXkgc2hvdWxkIGhhdmUgYmVlbiBkZWxldGVkIHdpdGggU1ZHQW5pbWF0ZWRUeXBlIHJlbW92
YWwuCisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExl
bmd0aEF0dHJpYnV0ZSgpIGlzIGRlbGV0ZWQuIEl0CisgICAgICAgICAgIHdhcyBvbmx5IGNhbGxl
ZCBmcm9tIFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPi4KKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xl
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3Vs
YXRlQ1NTS2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0
dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6
TGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6
OlJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojpp
bml0aWFsVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFp
dHM8U1ZHQW5nbGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZH
Q2lyY2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJz
b3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHRWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3Ro
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHNGb3JCaW5kaW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6dW5pdFR5cGUpOiBEZWxldGVkLgorICAgICAg
ICAqIHN2Zy9TVkdMZW5ndGguaWRsOgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3RoKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZVRvVXNlclVu
aXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRW
YWx1ZUZyb21Vc2VyVW5pdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29u
dGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFn
ZVRvVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4dC5oOgor
ICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoTGlzdC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
TGVuZ3RoVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGVuZ3RoVHlwZVRvU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGhWYWx1ZTo6U1ZHTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVu
Z3RoVmFsdWU6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dmFs
dWVGb3JCaW5kaW5ncyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6
c2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OnZhbHVlQXNQZXJj
ZW50YWdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFz
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpuZXdWYWx1
ZVNwZWNpZmllZFVuaXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpjb252
ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6
ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVl
Ojp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVl
OjpibGVuZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpzdG9yZVVuaXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6ZXh0cmFjdFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFs
dWU6Om9wZXJhdG9yPT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVu
Z3RoVmFsdWU6Om9wZXJhdG9yIT0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoVmFsdWU6OnVuaXRUeXBlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0TW9kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aFZhbHVlOjppc1plcm8gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoVmFsdWU6OmlzUmVsYXRpdmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0xlbmd0aFZhbHVlOjpibGVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhWYWx1ZT46OmluaXRpYWxWYWx1ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhWYWx1ZT46
OnBhcnNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R0xlbmd0aFZhbHVlPjo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMaW5l
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHTWFya2VyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdT
VkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6Omhhc0ludHJpbnNpY1dp
ZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6Omhhc0ludHJpbnNp
Y0hlaWdodCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjppbnRyaW5z
aWNXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjppbnRyaW5z
aWNIZWlnaHQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKToKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGll
cy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRpb25MZW5ndGhMaXN0RnVuY3Rpb246OmFuaW1h
dGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVG
dW5jdGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aEZ1bmN0
aW9uOjphbmltYXRlKToKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5
QW5pbWF0b3JJbXBsLmg6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0
eUxpc3RBbmltYXRvckltcGwuaDoKKwogMjAxOS0wOS0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBXZWJQYWdlUHJveHkgaWRlbnRpZmllciB0byB0
aGUgTmV0d29yayBQcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzk0MTU1YTEwYWRkOTI1ZWFkNzYxYmE1MTdlNGQ4ZThh
Y2YxYTg0Ni4uNjZmYTAwMjRhODA0OTI4YTk4ZjY3MGQwNjg2OWYwNjA5NGUzZDQ4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjUxLDcgKzI1MSw2IEBACiAJCTA4NzU1OEM2MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQ
YWlyQXdhcmVUZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA4NzU1OEM0MTNCNEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdh
cmVUZXh0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1MDY3RDExREEwNDVC
MDAxODJCOTggLyogUGFpbnRJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2ODAxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4ODUwNjdF
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDg4QTBERkQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA4OEEwRTBDMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0
eVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QzJGN0ExMjM5MDA4
MTAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyog
U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCAqLzsgfTsKIAkJMDg5NTgyNTYwRTg1N0E3RTAwRjgy
QzgzIC8qIEltYWdlTG9hZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODk1ODI1NDBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTUzNCw3ICs1
NTMzLDYgQEAKIAkJMDg3NTU4QzQxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2Fy
ZVRleHRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdXJyb2dh
dGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYWludEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRQaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQkwODhBMERGRDEyNkVGMURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURl
c2NyaXB0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhB
MEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJvcGVydHlUcmFpdHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDg4QzJGNzUxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRB
dHRyaWJ1dGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4
QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjA3Niw3ICsxNjA3NCw2IEBACiAJCQkJNTVF
RTUzNTgyMjNCMjlGOTAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwu
aCAqLywKIAkJCQk1NUVFNTM1QTIyM0IyOUZCMDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFuaW1hdG9yLmggKi8sCiAJCQkJNTVFRTUzNTYyMjNCMjlGNzAwRkJBOTQ0IC8qIFNWR0FuaW1h
dGVkUHJvcGVydHlBbmltYXRvckltcGwuaCAqLywKLQkJCQkwODhBMERGRDEyNkVGMURCMDA5NzhG
N0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggKi8sCiAJCQkJNTVFRTUzNUMy
MjNCMkEwRDAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlJbXBsLmggKi8sCiAJCQkJNzI2
NkYwMkEyMjQzMTQ5QjAwODMzOTc1IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlMaXN0LmggKi8sCiAJ
CQkJNTVCRTAyNUUyMjNCMjlDNDAwMzJGMDhBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlQYWlyQWNj
ZXNzb3IuaCAqLywKQEAgLTMxNzM1LDcgKzMxNzMyLDYgQEAKIAkJCQkyNEQ5MTJCODEzQ0E5QTY5
MDBEMjE5MTUgLyogU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5NzcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjIyNzk3QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMDg4QTBFMDYxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTAwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzJC
ODQzNDE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzk5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXgg
ZDhhYzMyODkyZGNkMTM1NTI2Mjk4YWUxMjViZmIxN2M4YzE3NTBhOS4uZTBjMzE4ZWU3N2NiMTNi
OTg2ZjA1NzE2NmU5ZDg5YzQ2ZDYwOWEyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5o
CkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIFN0eWxlUnVsZVBhZ2U7CiBjbGFzcyBTdHlsZVNoZWV0
OwogY2xhc3MgU3R5bGVTaGVldExpc3Q7CiBjbGFzcyBTdHlsZWRFbGVtZW50OworY2xhc3MgU1ZH
RWxlbWVudDsKIGNsYXNzIFNWR1NWR0VsZW1lbnQ7CiBjbGFzcyBWaWV3cG9ydFN0eWxlUmVzb2x2
ZXI7CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRleCA0MjQ0Y2E2MDE0NDhmMWIxMGE4
ZjFmY2JmOTE3MDIzNGQzYTAxNzliLi5jYjc2ODE3MTZjYWNjYzgwMzI0Y2NlNmZjNzlkMTZkYzBj
M2I1MGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVu
ZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVy
U3R5bGUuaApAQCAtMjU5LDE0ICsyNTksMTQgQEAgcHJpdmF0ZToKIGlubGluZSBTVkdMZW5ndGhW
YWx1ZSBTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpCiB7CiAgICAg
U1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KExlbmd0aFR5cGVOdW1iZXIsIDApOworICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgMCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAogaW5s
aW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsS2VybmluZygpCiB7CiAg
ICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVu
aXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOworICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVu
aXRzKFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgMCk7CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAK
aW5kZXggN2RhOTE5OTNlM2ZjZThiODBhZjg1NmRjY2VlNWQ4YWFhNjAxYmI5YS4uMTc3YzM5NTZh
ZmNlZTYyM2E4MmY3MTMzYjIyN2M5YmRiMTAzOTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxpcHNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCkBAIC03OSw4ICs3OSw4IEBAIHZv
aWQgUmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKQogewogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgmZ3JhcGhpY3NFbGVtZW50KCkpOwogICAgIG1f
Y2VudGVyID0gRmxvYXRQb2ludCgKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0
aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3goKSwgTGVuZ3RoTW9kZVdpZHRoKSwKLSAgICAgICAgbGVu
Z3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3koKSwgTGVuZ3Ro
TW9kZUhlaWdodCkpOworICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuc3ZnU3R5bGUoKS5jeCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCksCisgICAgICAgIGxlbmd0
aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN5KCksIFNWR0xlbmd0
aE1vZGU6OkhlaWdodCkpOwogICAgIGlmIChpczxTVkdDaXJjbGVFbGVtZW50PihncmFwaGljc0Vs
ZW1lbnQoKSkpIHsKICAgICAgICAgZmxvYXQgcmFkaXVzID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZv
ckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucigpKTsKICAgICAgICAgbV9yYWRpaSA9IEZsb2F0
U2l6ZShyYWRpdXMsIHJhZGl1cyk7CkBAIC04OSw4ICs4OSw4IEBAIHZvaWQgUmVuZGVyU1ZHRWxs
aXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIoKQogCiAgICAgQVNTRVJUKGlzPFNWR0VsbGlw
c2VFbGVtZW50PihncmFwaGljc0VsZW1lbnQoKSkpOwogICAgIG1fcmFkaWkgPSBGbG9hdFNpemUo
Ci0gICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgp
LnJ4KCksIExlbmd0aE1vZGVXaWR0aCksCi0gICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ5KCksIExlbmd0aE1vZGVIZWlnaHQpKTsKKyAgICAg
ICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucngoKSwg
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgpLAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVu
Z3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKIH0K
IAogdm9pZCBSZW5kZXJTVkdFbGxpcHNlOjpmaWxsU2hhcGUoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVj
dC5jcHAKaW5kZXggNGIyNGRmZDNkMWRhYTM2N2UyMzY3MTFiMmFhOWQ2NDdkYWMxYmI2OS4uNjYx
ZDIxOTQyYzZkMmY0NjJmYzg1YTA1NzdkYWVjMjhlYjZmZWNlYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgUmVuZGVyU1ZHUmVjdDo6dXBkYXRlU2hhcGVGcm9tRWxlbWVudCgpCiAgICAgbV91c2VQYXRo
RmFsbGJhY2sgPSBmYWxzZTsKIAogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgm
cmVjdEVsZW1lbnQoKSk7Ci0gICAgRmxvYXRTaXplIGJvdW5kaW5nQm94U2l6ZShsZW5ndGhDb250
ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkud2lkdGgoKSwgTGVuZ3RoTW9kZVdpZHRoKSwgbGVu
Z3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLmhlaWdodCgpLCBMZW5ndGhNb2RlSGVp
Z2h0KSk7CisgICAgRmxvYXRTaXplIGJvdW5kaW5nQm94U2l6ZShsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkud2lkdGgoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpLCBsZW5ndGhD
b250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuaGVpZ2h0KCksIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCkpOwogCiAgICAgLy8gRWxlbWVudCBpcyBpbnZhbGlkIGlmIGVpdGhlciBkaW1lbnNpb24g
aXMgbmVnYXRpdmUuCiAgICAgaWYgKGJvdW5kaW5nQm94U2l6ZS53aWR0aCgpIDwgMCB8fCBib3Vu
ZGluZ0JveFNpemUuaGVpZ2h0KCkgPCAwKQpAQCAtNzQsOCArNzQsOCBAQCB2b2lkIFJlbmRlclNW
R1JlY3Q6OnVwZGF0ZVNoYXBlRnJvbUVsZW1lbnQoKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
bV9maWxsQm91bmRpbmdCb3ggPSBGbG9hdFJlY3QoRmxvYXRQb2ludChsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS54KCksIExlbmd0aE1vZGVXaWR0aCksCi0g
ICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnko
KSwgTGVuZ3RoTW9kZUhlaWdodCkpLAorICAgIG1fZmlsbEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxl
KCkueCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCksCisgICAgICAgIGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
KSksCiAgICAgICAgIGJvdW5kaW5nQm94U2l6ZSk7CiAKICAgICAvLyBUbyBkZWNpZGUgaWYgdGhl
IHN0cm9rZSBjb250YWlucyBhIHBvaW50IHdlIGNyZWF0ZSB0d28gcmVjdHMgd2hpY2ggcmVwcmVz
ZW50IHRoZSBpbm5lciBhbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUGF0aERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRo
RGF0YS5jcHAKaW5kZXggMGY4NDk5ZTUzYjAzMDVhZDAwOGNlYTQzODE4ZjNkNzFkZWZlY2U1Ni4u
MmJhYjE4MDJhNjU1NGQ5MWI1NWEwOTc4NjU4ODE2ZTAyMTcxYzEzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKQEAgLTUyLDggKzUyLDggQEAgc3Rh
dGljIFBhdGggcGF0aEZyb21DaXJjbGVFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQp
CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KCZlbGVtZW50KTsKICAgICBmbG9h
dCByID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnIoKSk7
CiAgICAgaWYgKHIgPiAwKSB7Ci0gICAgICAgIGZsb2F0IGN4ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN4KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHls
ZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgICAgICBmbG9hdCBjeCA9IGxlbmd0aENv
bnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeCgpLCBTVkdMZW5ndGhNb2Rl
OjpXaWR0aCk7CisgICAgICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0
aChzdHlsZS5zdmdTdHlsZSgpLmN5KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCk7CiAgICAgICAg
IHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY3ggLSByLCBjeSAtIHIsIHIgKiAyLCByICogMikp
OwogICAgIH0KICAgICByZXR1cm4gcGF0aDsKQEAgLTY3LDE3ICs2NywxNyBAQCBzdGF0aWMgUGF0
aCBwYXRoRnJvbUVsbGlwc2VFbGVtZW50KGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQpCiAKICAg
ICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIFNWR0xlbmd0aENvbnRleHQg
bGVuZ3RoQ29udGV4dCgmZWxlbWVudCk7Ci0gICAgZmxvYXQgcnggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgTGVuZ3RoTW9kZVdpZHRoKTsKKyAg
ICBmbG9hdCByeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUo
KS5yeCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7CiAgICAgaWYgKHJ4IDw9IDApCiAgICAgICAg
IHJldHVybiB7IH07CiAKLSAgICBmbG9hdCByeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUuc3ZnU3R5bGUoKS5yeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsKKyAgICBmbG9hdCBy
eSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeSgpLCBT
VkdMZW5ndGhNb2RlOjpIZWlnaHQpOwogICAgIGlmIChyeSA8PSAwKQogICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIGZsb2F0IGN4ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN4KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgY3kgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
Y3koKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
OworICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdT
dHlsZSgpLmN5KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCk7CiAgICAgcGF0aC5hZGRFbGxpcHNl
KEZsb2F0UmVjdChjeCAtIHJ4LCBjeSAtIHJ5LCByeCAqIDIsIHJ5ICogMikpOwogICAgIHJldHVy
biBwYXRoOwogfQpAQCAtMTM4LDE5ICsxMzgsMTkgQEAgc3RhdGljIFBhdGggcGF0aEZyb21SZWN0
RWxlbWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogCiAgICAgYXV0byYgc3R5bGUgPSBy
ZW5kZXJlci0+c3R5bGUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVs
ZW1lbnQpOwotICAgIGZsb2F0IHdpZHRoID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChz
dHlsZS53aWR0aCgpLCBMZW5ndGhNb2RlV2lkdGgpOworICAgIGZsb2F0IHdpZHRoID0gbGVuZ3Ro
Q29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS53aWR0aCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0
aCk7CiAgICAgaWYgKHdpZHRoIDw9IDApCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBmbG9h
dCBoZWlnaHQgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLmhlaWdodCgpLCBM
ZW5ndGhNb2RlSGVpZ2h0KTsKKyAgICBmbG9hdCBoZWlnaHQgPSBsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlLmhlaWdodCgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpOwogICAgIGlm
IChoZWlnaHQgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAg
ICBmbG9hdCB4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LngoKSwgTGVuZ3RoTW9kZVdpZHRoKTsKLSAgICBmbG9hdCB5ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnkoKSwgTGVuZ3RoTW9kZUhlaWdodCk7Ci0gICAg
ZmxvYXQgcnggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
cngoKSwgTGVuZ3RoTW9kZVdpZHRoKTsKLSAgICBmbG9hdCByeSA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsKKyAg
ICBmbG9hdCB4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOworICAgIGZsb2F0IHkgPSBsZW5ndGhDb250ZXh0
LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkueSgpLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpOworICAgIGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5z
dmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICBmbG9hdCByeSA9IGxl
bmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeSgpLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQpOwogICAgIGJvb2wgaGFzUnggPSByeCA+IDA7CiAgICAgYm9vbCBoYXNS
eSA9IHJ5ID4gMDsKICAgICBpZiAoaGFzUnggfHwgaGFzUnkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5l
LmNwcAppbmRleCAwYjYzZDZjZGZmYjU1YTQyZWE5MDQ1OThhMDFkMWU2ZTI5YWVmMmZhLi5lZDU3
ZWFiNWE0ZTdhYzEwZmM0ZTc1ZmExMmU4Y2ZjMWI0NTVjMmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxp
bmUuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGZsb2F0IFNWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGlu
ZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdChjb25zdCBTVkdSZW5kZXJTdHlsZSYKIHsKICAgICBp
ZiAoc3R5bGUuYmFzZWxpbmVTaGlmdCgpID09IEJhc2VsaW5lU2hpZnQ6Okxlbmd0aCkgewogICAg
ICAgICBhdXRvIGJhc2VsaW5lU2hpZnRWYWx1ZUxlbmd0aCA9IHN0eWxlLmJhc2VsaW5lU2hpZnRW
YWx1ZSgpOwotICAgICAgICBpZiAoYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVM
ZW5ndGgubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkg
KiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhD
b250ZXh0KGNvbnRleHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmNwcAppbmRleCA0OGQ4MGFlOTkyNmUw
NjNkOWVmMjE5MjQyZDNkZTc4MTc4ZWNlNGU1Li5iY2YzNTZhODFmOGVhZjE5YzhkNGQ5Njg3YTVm
YTEwMzFhNTZjMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5nLmNwcApAQCAtNDEsNyArNDEsNyBAQCBm
bG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2VybmluZ0FuZFNw
YWNpbmcoY29uc3QgU1ZHUmVuZGVyUwogewogICAgIGZsb2F0IGtlcm5pbmcgPSAwOwogICAgIGF1
dG8ga2VybmluZ0xlbmd0aCA9IHN0eWxlLT5rZXJuaW5nKCk7Ci0gICAgaWYgKGtlcm5pbmdMZW5n
dGgudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAoa2VybmluZ0xl
bmd0aC5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAgICAgICAg
a2VybmluZyA9IGtlcm5pbmdMZW5ndGgudmFsdWVBc1BlcmNlbnRhZ2UoKSAqIG1fZm9udC5waXhl
bFNpemUoKTsKICAgICBlbHNlIHsKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250
ZXh0KGNvbnRleHRFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5l
YXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVu
dEF0dHJpYnV0ZXMuaAppbmRleCBmNTIwMTlmZmZlOWE0MGE0MDcyZTIzNWM1Y2FiMGRkZTFiZDkw
NTVjLi42ZmQ5NWJkNmVlZTMwMmNlNGU1ZWY1MTljNWUyMWExNjU3MzU3M2M3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0yNiw3ICsyNiw3
IEBAIHN0cnVjdCBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMgOiBHcmFkaWVudEF0dHJpYnV0ZXMg
ewogICAgIExpbmVhckdyYWRpZW50QXR0cmlidXRlcygpCiAgICAgICAgIDogbV94MSgpCiAgICAg
ICAgICwgbV95MSgpCi0gICAgICAgICwgbV94MihMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKKyAg
ICAgICAgLCBtX3gyKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpCiAgICAgICAgICwgbV95
MigpCiAgICAgICAgICwgbV94MVNldChmYWxzZSkKICAgICAgICAgLCBtX3kxU2V0KGZhbHNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCmluZGV4IDg3
YmU3MjI4ODE0M2UzZGUxMWMxZDc0ZWU4NWFmZTg2Y2ViNDExODAuLjYxMjNkYmU5MGYzNzQ3NmIx
YjRlOGNjZWJlYjczNjA5ZGRkMDcwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9S
YWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFs
R3JhZGllbnRBdHRyaWJ1dGVzLmgKQEAgLTI1LDkgKzI1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVz
IHsKICAgICBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMoKQotICAgICAgICA6IG1fY3goTGVuZ3Ro
TW9kZVdpZHRoLCAiNTAlIikKLSAgICAgICAgLCBtX2N5KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIp
Ci0gICAgICAgICwgbV9yKExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCisgICAgICAgIDogbV9jeChT
VkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCisgICAgICAgICwgbV9jeShTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgIjUwJSIpCisgICAgICAgICwgbV9yKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAl
IikKICAgICAgICAgLCBtX2N4U2V0KGZhbHNlKQogICAgICAgICAsIG1fY3lTZXQoZmFsc2UpCiAg
ICAgICAgICwgbV9yU2V0KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuZ2xlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKaW5kZXgg
NGQ0MDJmN2ZjZDQ1YTFmYzdlNzk0N2Q5NjFkZTllYTU5MTRiZTQ2MS4uY2M0NTQ0MTgzY2YwZGY5
MGZiN2ViOTJhOTNhYTNkZjFlYjMxNTI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuZ2xlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5o
CkBAIC01NiwxMCArNTYsNCBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzIHsgMCB9OwogfTsKIAotdGVtcGxhdGU8Pgotc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR0FuZ2xlVmFsdWU+IHsKLSAgICBzdGF0aWMgU1ZHQW5nbGVWYWx1ZSBpbml0aWFsVmFsdWUo
KSB7IHJldHVybiBTVkdBbmdsZVZhbHVlKCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5n
KGNvbnN0IFNWR0FuZ2xlVmFsdWUmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygp
OyB9Ci19OwotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKaW5kZXgg
ZDkzMDQwYTFmNTZhYWVmZjVjMjkyMWQ0NmFiNzNkYjEwOGFkNzhmNC4uNDlkNDU5MzJmMDcxZTM1
NDI4YjcxMjk0MGIzZWI1MDFlNTQ4ZjUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVF
bGVtZW50LmNwcApAQCAtNTQsMTEgKzU0LDExIEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAg
ICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAgICAgIG1fY3ktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyQXR0cikKLSAgICAgICAg
bV9yLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAg
ICAgICAgbV9yLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZl
VmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3Io
cGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuaAppbmRleCA3MjBmMzEwZTY0MGY4MmRiZWU2NjcwNjQzZjc5MzEzYjRmNWVmYTg1Li43MWI3
NjMwZDIzYmQ1MWFmNGE4YzEzMTkyZmY0YjhjM2RiMGIzZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDaXJjbGVFbGVtZW50LmgKQEAgLTU1LDkgKzU1LDkgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVy
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0N1cnNvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1l
bnQuY3BwCmluZGV4IDVjZDdkMTlkZTkzOTVlZTFmZjQ1ZDBiN2U0NmU4NTNlMGJiZjc0NDcuLjJm
ZDU3NjY0OWI3MjI4ZWEwZmQyNWVhZWRjYTczNWQ4NDI1M2E4NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAKQEAgLTY0LDkgKzY0LDkgQEAgdm9pZCBTVkdDdXJzb3JF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW4KICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJy
b3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1
cnNvckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKaW5k
ZXggZWQ2NGQ1ZmExOWU4MzVmOTA4MDUzMjU1NWYxN2M4Y2Y0NzQ0YzAyMi4uNWRkNGQ0YmQ3ZmIy
YjZlYjVkMWVlMTQ0MTZlM2ZhNDNkNWRlZTIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0N1cnNvckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29y
RWxlbWVudC5oCkBAIC02MSw4ICs2MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IGZpbmFsOwogCiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQp
IH07CiAgICAgSGFzaFNldDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4gbV9jbGllbnRzOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKaW5kZXggODMzMmViNWRiZmMy
OGY4NjI3ODI0YmY4ODlmOGYzNDYwNjZkMzQxYy4uYWRiNmNiY2E0MjM5Zjc4YjZiOTAzMDY3NDhl
YjAzYzI1NjY2YWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
CkBAIC01NSwxMyArNTUsMTMgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKICAgICBTVkdQYXJz
aW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1l
czo6Y3hBdHRyKQotICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKKyAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwog
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgbV9yeC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1f
cngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNN
b2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCi0g
ICAgICAgIG1fcnktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0
aHMpKTsKKyAgICAgICAgbV9yeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVu
Z3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBh
cnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmgKaW5kZXggMzAzNTU4ZTAyZTUzZmZhMjg4MWYxMzVmMGFlODE1OWU3
MTVjM2MwYi4uY2EwN2IzZjFiY2ZjNmFjODMxMmE4OWQ1MjgxYjNjMmJhZWRkNDk2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgKQEAgLTU3LDEwICs1NywxMCBAQCBwcml2
YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2N4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5kZXggMjRjNmM1MmY0ODM4Zjcy
YWMzYjhlNmM3OTRhOGI1Yjc5NzAyNzFiYy4uMTg2Yjc3MWU1OGUzZGE4YzIxYTEyZTFmZDg4YzMx
YjAxYTQxZTViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAt
NzYsMTMgKzc2LDEzIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKICAgICAgICAgICAgIG1fcHJpbWl0aXZlVW5pdHMtPnNldEJhc2VWYWxJ
bnRlcm5hbDxTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICB9
IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0
dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAg
bV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwg
bmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAppbmRleCAx
NTg5YTZjNDJiZGE4NzcxNDVkNWUwNzM3ZWM4ZmExZjRhYmNlZWRmLi41OTAzMjA5NTljZTllZDRi
ZjJiOTRmZWZhZTRjNjFlMGQ0NmNiMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmgKQEAgLTY5LDEwICs2OSwxMCBAQCBwcml2YXRlOgogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4gbV9maWx0ZXJVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlz
LCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CiAgICAg
UmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcHJpbWl0aXZlVW5pdHMgeyBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VT
RVJTUEFDRU9OVVNFKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICItMTAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoLCAiMTIwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEyMCUi
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIi0xMCUiKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpIZWlnaHQsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1v
ZGU6OldpZHRoLCAiMTIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdo
dCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCAiMTIwJSIpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuY3BwCmluZGV4IDM2NGNiMjgwZjMyNzlmMjBmNTI2YTYxYzhhMzIzMTAzY2M0N2JlYzguLjMw
ZGE0MzRmNGNkMzlkMGFjMjAxNGM3Nzc2YTUyOGE3ODI0MzI4MjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuY3BwCkBAIC01MSwxMyArNTEsMTMgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG4KICAgICBT
VkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwor
ICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwog
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0
aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWln
aHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAg
ICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAgICBtX3Jlc3VsdC0+c2V0
QmFzZVZhbEludGVybmFsKHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IGMyODE2ZGEz
NjM1ZDA2NTYzYjkxYzgzNTA4YmQ4MTM4Y2IzOWFiOTQuLmM5OGIxM2VkOTYyNzZhZjllMTRmNjQy
ODExYTZmZDc0Njc3MmFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTc1LDEwICs3NSwxMCBA
QCBwcml2YXRlOgogCiAgICAgLy8gU3BlYzogSWYgdGhlIHgveSBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIwJSIgd2VyZSBzcGVjaWZp
ZWQuCiAgICAgLy8gU3BlYzogSWYgdGhlIHdpZHRoL2hlaWdodCBhdHRyaWJ1dGUgaXMgbm90IHNw
ZWNpZmllZCwgdGhlIGVmZmVjdCBpcyBhcyBpZiBhIHZhbHVlIG9mICIxMDAlIiB3ZXJlIHNwZWNp
ZmllZC4KLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMCUiKSB9OwotICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0LCAiMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUiKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpXaWR0aCwgIjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVp
Z2h0LCAiMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMDAlIikg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMDAlIikgfTsKICAgICBS
ZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1fcmVzdWx0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0
ZSh0aGlzKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVp
Z25PYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0
RWxlbWVudC5jcHAKaW5kZXggNWFjZDVmY2IzMTk4MGRlN2I4ZTY2YjA4ZDNjNWQzNWI2MDdiMjgy
OS4uN2ZmM2I4NjdmYzU5MmQ4ZGIyM2FmYTQ2NTBmZjdlNmNiMGYzM2RhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC01OSwxMyArNTks
MTMgQEAgdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXQKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VF
cnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAg
ICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hl
aWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdF
cnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKaW5kZXggMDJhMTk0YzQxN2E3YWI3NzMwNDE0ODI3N2Qz
ZjllNjQ5ZmIwNjhhNC4uZGIyMDQzMzk1NWViZTIzNDEzZTYwOTZhYjU0NWE3YmUzOTQ4YzBkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgKQEAgLTU4
LDEwICs1OCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Rocygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9w
cm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
eCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpIZWlnaHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDk2NzBlMjY0NDA2N2NmZGFiMzQ3MzAzNTE5
YjE0ZjBmYzE4ZjE2YjcuLjdiNjRhMDIxNGEzYmEwZjBlODUxYzQ1ZDBlOWQ3MzQ0MjFjNzY0Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC03OSwxMyArNzksMTMg
QEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJv
ciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAg
IG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
ciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hl
aWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwor
ICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3Ro
TmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNp
bmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuaAppbmRleCA5ZmI1Nzg2ODc1ZmIxMTRjNTIzMjg2NWU0ZTA4M2FlYjNmY2E4NDAz
Li5lYWZmNjE4NmQ4OWQ5MzQ4ZmJjYTE1MTg1ZGRmYWE2YTBkZWRkMmM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQm
IG5ld0RvY3VtZW50KSBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Oldp
ZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVp
Z2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4gbV9wcmVzZXJ2
ZUFzcGVjdFJhdGlvIHsgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpjcmVhdGUodGhp
cykgfTsKICAgICBTVkdJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
ZW5ndGguaAppbmRleCBmZjBmZDM1MTRiMjYzZTEzOGQ1Y2NhOTA3ZjNhNzk4N2I2ZjNiOWVmLi5j
NjM2OTRhZWIwM2RkZDA3NGE2ZTFlNjA5NmYyZjU3ZjNmMmI0YzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiU1ZH
TGVuZ3RoQ29udGV4dC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAi
U1ZHVmFsdWVQcm9wZXJ0eS5oIgogCkBAIC0zOCwxNyArMzksMTcgQEAgY2xhc3MgU1ZHTGVuZ3Ro
IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHk8U1ZHTGVuZ3RoVmFsdWU+IHsKIHB1YmxpYzoKICAg
ICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHczYyBuYW1pbmcgc2NoZW1l
LCBmb3IgSURMIGdlbmVyYXRpb24KICAgICBlbnVtIHsKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
VU5LTk9XTiA9IExlbmd0aFR5cGVVbmtub3duLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9OVU1C
RVIgPSBMZW5ndGhUeXBlTnVtYmVyLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9QRVJDRU5UQUdF
ID0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX0VNUyA9IExl
bmd0aFR5cGVFTVMsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyA9IExlbmd0aFR5cGVFWFMs
Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BYID0gTGVuZ3RoVHlwZVBYLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9DTSA9IExlbmd0aFR5cGVDTSwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTU0g
PSBMZW5ndGhUeXBlTU0sCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX0lOID0gTGVuZ3RoVHlwZUlO
LAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCA9IExlbmd0aFR5cGVQVCwKLSAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfUEMgPSBMZW5ndGhUeXBlUEMKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfVU5L
Tk9XTiAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OlVua25vd24p
LAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9OVU1CRVIgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVS
Q0VOVEFHRSAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRh
Z2UpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6RU1TKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfRVhT
ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkVYUyksCisg
ICAgICAgIFNWR19MRU5HVEhUWVBFX1BYICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihTVkdMZW5ndGhUeXBlOjpQWCksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX0NNICAgICAgICAg
ICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpDTSksCisgICAgICAgIFNW
R19MRU5HVEhUWVBFX01NICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5n
dGhUeXBlOjpNTSksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX0lOICAgICAgICAgICA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpJTiksCisgICAgICAgIFNWR19MRU5HVEhU
WVBFX1BUICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpQ
VCksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BDICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihTVkdMZW5ndGhUeXBlOjpQQykKICAgICB9OwogCiAgICAgc3RhdGljIFJlZjxTVkdM
ZW5ndGg+IGNyZWF0ZSgpCkBAIC03OSw5ICs4MCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IFNWR0xlbmd0aDo6Y3JlYXRlKG1fdmFsdWUpOwogICAgIH0KIAotICAgIHVuc2lnbmVkIHNob3J0
IHVuaXRUeXBlKCkKKyAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSgpICBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fdmFsdWUudW5pdFR5cGUoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3ZhbHVlLmxlbmd0aFR5cGUoKSk7CiAgICAgfQogCiAgICAgRXhj
ZXB0aW9uT3I8ZmxvYXQ+IHZhbHVlRm9yQmluZGluZ3MoKQpAQCAtMTMwLDE3ICsxMzEsMjIgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUsIGZs
b2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMp
CisgICAgeworICAgICAgICBtX3ZhbHVlLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMobGVuZ3RoVHlw
ZSwgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzRm9yQmluZGluZ3ModW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUsIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKICAgICB7CiAgICAgICAgIGlmIChpc1Jl
YWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25B
bGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUubmV3VmFsdWVT
cGVjaWZpZWRVbml0cyh1bml0VHlwZSwgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgIAorICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTiB8
fCB1bml0VHlwZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAgbV92YWx1ZS5uZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXRUeXBlKSwgdmFsdWVJ
blNwZWNpZmllZFVuaXRzKTsKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7Ci0gICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIAogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBl
KQpAQCAtMTQ4LDEwICsxNTQsMTMgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgp
KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVy
cm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmll
ZFVuaXRzKHVuaXRUeXBlLCBTVkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsK
KyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNWR19MRU5HVEhUWVBFX1VOS05PV04gfHwgdW5pdFR5
cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
b3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgICAgIGF1dG8gcmVzdWx0ID0gbV92YWx1ZS5jb252
ZXJ0VG9TcGVjaWZpZWRVbml0cyhzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih1bml0VHlwZSks
IFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0pOwogICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
CisKICAgICAgICAgY29tbWl0Q2hhbmdlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAppbmRleCAwNGU0NjNlM2MxZTA3MDBhODA1MDI0YzY5
NGFmNjMyMTNhZjE0MmFlLi4zNGQzYmZiNTNkOTg2M2NlMjE5OThkYTE4OTE3NGI3ZGEwMmNmYTRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmlkbApAQCAtNDAsNiArNDAsNiBAQCBpbnRlcmZhY2Ug
U1ZHTGVuZ3RoIHsKICAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVj
aWZpZWRVbml0czsKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlQXNTdHJpbmc7CiAKLSAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25l
ZCBzaG9ydCB1bml0VHlwZSwgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0
cyk7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBJbXBsZW1lbnRlZEFzPW5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHNGb3JCaW5kaW5nc10gdm9pZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVk
IHNob3J0IHVuaXRUeXBlLCB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRz
KTsKICAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY29udmVydFRvU3BlY2lmaWVkVW5pdHMo
dW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhD
b250ZXh0LmNwcAppbmRleCAwODAwMDE3NmJhYzBmYjkwZmVhMzUwZmZkNjJlNTZlYzRiYmMxMjll
Li44MTgzZDRmYTRiMWU0NDhjZDRhM2IwMGY3ZjNmNDc5NDUxMWVlYzUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5A
a2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVp
cyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNCBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC04
NSwxMCArODUsMTAgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6cmVzb2x2ZUxlbmd0aChjb25z
dCBTVkdFbGVtZW50KiBjb250ZXh0LCBTVkdVbml0VHlwZXM6OlMKICAgICByZXR1cm4geC52YWx1
ZUFzUGVyY2VudGFnZSgpOwogfQogCi1mbG9hdCBTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQorZmxvYXQgU1ZH
TGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xl
bmd0aE1vZGUgbGVuZ3RoTW9kZSkKIHsKICAgICBpZiAobGVuZ3RoLmlzUGVyY2VudCgpKSB7Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0
cyhsZW5ndGgudmFsdWUoKSAvIDEwMCwgbW9kZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gY29u
dmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhsZW5ndGgudmFsdWUoKSAvIDEwMCwg
bGVuZ3RoTW9kZSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKQEAgLTk5LDQ5ICs5OSw0OSBAQCBmbG9hdCBTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxl
bmd0aChjb25zdCBMZW5ndGgmIGxlbmd0aCwgU1ZHTGVuZ3RoTW9kZSBtb2RlKQogICAgIEZsb2F0
U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKTsK
IAotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAgIHN3
aXRjaCAobGVuZ3RoTW9kZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAgICAg
ICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgdmlld3BvcnRTaXplLndpZHRo
KCkpOwotICAgIGNhc2UgTGVuZ3RoTW9kZUhlaWdodDoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6
OkhlaWdodDoKICAgICAgICAgcmV0dXJuIGZsb2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCB2aWV3
cG9ydFNpemUuaGVpZ2h0KCkpOwotICAgIGNhc2UgTGVuZ3RoTW9kZU90aGVyOgorICAgIGNhc2Ug
U1ZHTGVuZ3RoTW9kZTo6T3RoZXI6CiAgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aCwgc3RkOjpzcXJ0KHZpZXdwb3J0U2l6ZS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSAv
IDIpKTsKICAgICB9OwogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4gU1ZH
TGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xl
bmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSBmcm9tVW5pdCkgY29uc3QKK0V4Y2VwdGlvbk9y
PGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2
YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUp
IGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIFNWR0xlbmd0aENvbnRleHQgY2FycmllcyBhIGN1c3Rv
bSB2aWV3cG9ydCwgZm9yY2UgcmVzb2x2aW5nIGFnYWluc3QgaXQuCiAgICAgaWYgKCFtX292ZXJy
aWRkZW5WaWV3cG9ydC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gMTAwJSA9IDEwMC4wIGluc3Rl
YWQgb2YgMS4wIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBi
ZSBjaGFuZ2VkCi0gICAgICAgIGlmIChmcm9tVW5pdCA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkK
KyAgICAgICAgaWYgKGxlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAg
ICAgICAgICAgIHZhbHVlIC89IDEwMDsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Q
ZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUsIG1vZGUpOworICAgICAgICByZXR1cm4gY29udmVy
dFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyh2YWx1ZSwgbGVuZ3RoTW9kZSk7CiAgICAg
fQogCi0gICAgc3dpdGNoIChmcm9tVW5pdCkgewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246
CisgICAgc3dpdGNoIChsZW5ndGhUeXBlKSB7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtu
b3duOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLSAg
ICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6
CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICBjYXNl
IFNWR0xlbmd0aFR5cGU6OlBYOgogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBMZW5n
dGhUeXBlUGVyY2VudGFnZToKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50
YWdlVG9Vc2VyVW5pdHModmFsdWUgLyAxMDAsIG1vZGUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVN
UzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiBj
b252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKHZhbHVlIC8gMTAwLCBsZW5ndGhN
b2RlKTsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVNUzoKICAgICAgICAgcmV0dXJuIGNvbnZl
cnRWYWx1ZUZyb21FTVNUb1VzZXJVbml0cyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRVhT
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RVhTOgogICAgICAgICByZXR1cm4gY29udmVydFZh
bHVlRnJvbUVYU1RvVXNlclVuaXRzKHZhbHVlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVDTToKKyAg
ICBjYXNlIFNWR0xlbmd0aFR5cGU6OkNNOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhl
bHNQZXJJbmNoIC8gMi41NGY7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpNTToKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAv
IDI1LjRmOwotICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6
SU46CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBM
ZW5ndGhUeXBlUFQ6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQVDoKICAgICAgICAgcmV0dXJu
IHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDcyOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UEM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1Bp
eGVsc1BlckluY2ggLyA2OwogICAgIH0KIApAQCAtMTQ5LDMwICsxNDksMzAgQEAgRXhjZXB0aW9u
T3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZsb2F0
IHZhbHVlLCBTVkdMZW4KICAgICByZXR1cm4gMDsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNW
R0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNW
R0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB0b1VuaXQpIGNvbnN0CitFeGNlcHRpb25P
cjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmbG9h
dCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5
cGUpIGNvbnN0CiB7Ci0gICAgc3dpdGNoICh0b1VuaXQpIHsKLSAgICBjYXNlIExlbmd0aFR5cGVV
bmtub3duOgorICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoVHlw
ZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
IH07Ci0gICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6
TnVtYmVyOgogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZToKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRh
Z2UodmFsdWUgKiAxMDAsIG1vZGUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAgICBjYXNl
IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVG
cm9tVXNlclVuaXRzVG9QZXJjZW50YWdlKHZhbHVlICogMTAwLCBsZW5ndGhNb2RlKTsKKyAgICBj
YXNlIFNWR0xlbmd0aFR5cGU6OkVNUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21V
c2VyVW5pdHNUb0VNUyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRVhTOgorICAgIGNhc2Ug
U1ZHTGVuZ3RoVHlwZTo6RVhTOgogICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVVzZXJV
bml0c1RvRVhTKHZhbHVlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OlBYOgogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBl
Q006CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDTToKICAgICAgICAgcmV0dXJuIHZhbHVlICog
Mi41NGYgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNh
c2UgU1ZHTGVuZ3RoVHlwZTo6TU06CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIDI1LjRmIC8gY3Nz
UGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0
aFR5cGU6OklOOgogICAgICAgICByZXR1cm4gdmFsdWUgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAg
IGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAg
IHJldHVybiB2YWx1ZSAqIDcyIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExlbmd0aFR5
cGVQQzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBDOgogICAgICAgICByZXR1cm4gdmFsdWUg
KiA2IC8gY3NzUGl4ZWxzUGVySW5jaDsKICAgICB9CiAKQEAgLTE4MCwxOCArMTgwLDE4IEBAIEV4
Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzKGZsb2F0IHZhbHVlLCBTVkdMCiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZs
b2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJjZW50
YWdlKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUpIGNvbnN0CitFeGNlcHRpb25Pcjxm
bG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2Vu
dGFnZShmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBjb25zdAogewogICAg
IEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgaWYgKCFkZXRlcm1pbmVWaWV3cG9ydCh2aWV3
cG9ydFNpemUpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Ig
fTsKIAotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAg
IHN3aXRjaCAobGVuZ3RoTW9kZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAg
ICAgICAgIHJldHVybiB2YWx1ZSAvIHZpZXdwb3J0U2l6ZS53aWR0aCgpICogMTAwOwotICAgIGNh
c2UgTGVuZ3RoTW9kZUhlaWdodDoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OkhlaWdodDoKICAg
ICAgICAgcmV0dXJuIHZhbHVlIC8gdmlld3BvcnRTaXplLmhlaWdodCgpICogMTAwOwotICAgIGNh
c2UgTGVuZ3RoTW9kZU90aGVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6T3RoZXI6CiAgICAg
ICAgIHJldHVybiB2YWx1ZSAvIChzdGQ6OnNxcnQodmlld3BvcnRTaXplLmRpYWdvbmFsTGVuZ3Ro
U3F1YXJlZCgpIC8gMikpICogMTAwOwogICAgIH07CiAKQEAgLTE5OSwxOCArMTk5LDE4IEBAIEV4
Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzVG9QZXJjZW50YWdlKGZsb2F0CiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZs
b2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVu
aXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUpIGNvbnN0CitFeGNlcHRpb25Pcjxm
bG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJV
bml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBjb25zdAogewogICAg
IEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgaWYgKCFkZXRlcm1pbmVWaWV3cG9ydCh2aWV3
cG9ydFNpemUpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Ig
fTsKIAotICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAg
IHN3aXRjaCAobGVuZ3RoTW9kZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAg
ICAgICAgIHJldHVybiB2YWx1ZSAqIHZpZXdwb3J0U2l6ZS53aWR0aCgpOwotICAgIGNhc2UgTGVu
Z3RoTW9kZUhlaWdodDoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OkhlaWdodDoKICAgICAgICAg
cmV0dXJuIHZhbHVlICogdmlld3BvcnRTaXplLmhlaWdodCgpOwotICAgIGNhc2UgTGVuZ3RoTW9k
ZU90aGVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6T3RoZXI6CiAgICAgICAgIHJldHVybiB2
YWx1ZSAqIHN0ZDo6c3FydCh2aWV3cG9ydFNpemUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAy
KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuaAppbmRleCA4ZTk3
ZTIxNGI5YjM1MmE4ODkwNDVlYzJhMjkyYjk1ZDVlN2E3MzcxLi4xNzIwNTk1YjY0YmE4YWI4YWMy
ZGVmOGViNGMxZTZjYzI0ZWE5ZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0
LmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMjEsMzUgKzIyLDE1IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZH
VW5pdFR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsK
LWNsYXNzIFNWR0xlbmd0aFZhbHVlOwogCiBzdHJ1Y3QgTGVuZ3RoOwogCi1lbnVtIFNWR0xlbmd0
aFR5cGUgewotICAgIExlbmd0aFR5cGVVbmtub3duID0gMCwKLSAgICBMZW5ndGhUeXBlTnVtYmVy
LAotICAgIExlbmd0aFR5cGVQZXJjZW50YWdlLAotICAgIExlbmd0aFR5cGVFTVMsCi0gICAgTGVu
Z3RoVHlwZUVYUywKLSAgICBMZW5ndGhUeXBlUFgsCi0gICAgTGVuZ3RoVHlwZUNNLAotICAgIExl
bmd0aFR5cGVNTSwKLSAgICBMZW5ndGhUeXBlSU4sCi0gICAgTGVuZ3RoVHlwZVBULAotICAgIExl
bmd0aFR5cGVQQwotfTsKLQotZW51bSBTVkdMZW5ndGhNb2RlIHsKLSAgICBMZW5ndGhNb2RlV2lk
dGggPSAwLAotICAgIExlbmd0aE1vZGVIZWlnaHQsCi0gICAgTGVuZ3RoTW9kZU90aGVyCi19Owot
CiBjbGFzcyBTVkdMZW5ndGhDb250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTVkdMZW5n
dGhDb250ZXh0KGNvbnN0IFNWR0VsZW1lbnQqKTsKQEAgLTY0LDkgKzQ1LDkgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBGbG9hdFBvaW50IHJlc29sdmVQb2ludChjb25zdCBTVkdFbGVtZW50KiwgU1ZH
VW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgsIGNvbnN0IFNW
R0xlbmd0aFZhbHVlJiB5KTsKICAgICBzdGF0aWMgZmxvYXQgcmVzb2x2ZUxlbmd0aChjb25zdCBT
VkdFbGVtZW50KiwgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmKTsKIAotICAgIGZsb2F0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIFNWR0xlbmd0
aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIpOwotICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0
VmFsdWVUb1VzZXJVbml0cyhmbG9hdCwgU1ZHTGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSBmcm9t
VW5pdCkgY29uc3Q7Ci0gICAgRXhjZXB0aW9uT3I8ZmxvYXQ+IGNvbnZlcnRWYWx1ZUZyb21Vc2Vy
VW5pdHMoZmxvYXQsIFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdDsK
KyAgICBmbG9hdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhNb2RlID0g
U1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOworICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFs
dWVUb1VzZXJVbml0cyhmbG9hdCwgU1ZHTGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSkgY29uc3Q7
CisgICAgRXhjZXB0aW9uT3I8ZmxvYXQ+IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQs
IFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUpIGNvbnN0OwogCiAgICAgYm9vbCBkZXRlcm1p
bmVWaWV3cG9ydChGbG9hdFNpemUmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xlbmd0aExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0
LmgKaW5kZXggYjAxNDdmYTIzNGY0ZDlhODhmOWZjOWYzMWQ1ZjM4ODk3MzE2NzY5NS4uNWViNTcw
MWM2NzQ2ODc5MmQwNTYyYzE1YjUyMTZiNDkyYzAyMWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoTGlzdC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJsaWMg
U1ZHVmFsdWVQcm9wZXJ0eUxpc3Q8U1ZHTGVuZ3RoPiB7CiAgICAgdXNpbmcgQmFzZTo6QmFzZTsK
IAogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRlKFNWR0xlbmd0
aE1vZGUgbGVuZ3RoTW9kZSA9IExlbmd0aE1vZGVPdGhlcikKKyAgICBzdGF0aWMgUmVmPFNWR0xl
bmd0aExpc3Q+IGNyZWF0ZShTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBTVkdMZW5ndGhNb2Rl
OjpPdGhlcikKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0xlbmd0aExp
c3QobGVuZ3RoTW9kZSkpOwogICAgIH0KQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7IExlbmd0aE1vZGVP
dGhlciB9OworICAgIFNWR0xlbmd0aE1vZGUgbV9sZW5ndGhNb2RlIHsgU1ZHTGVuZ3RoTW9kZTo6
T3RoZXIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoVmFsdWUuY3BwCmluZGV4IGRkMmVkZTE0ZmI3MTdjMTZhMGZiOGU2MDJhNDFhZTk4NzRh
MTE4ZWYuLmZlYWU5OTM4ZmE1ZTQyZmJiZjhkZDRiYTFkYTg1YzBkNTM5OTU3NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5u
QGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1
aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyLDU4ICsyMiwzNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAKLSNp
bmNsdWRlICJDU1NIZWxwZXIuaCIKKyNpbmNsdWRlICJBbmltYXRpb25VdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5o
IgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ly8gSGVscGVyIGZ1bmN0aW9ucwotc3RhdGljIGlubGluZSB1bnNpZ25lZCBzdG9yZVVuaXQoU1ZH
TGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHR5cGUpCitzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIqIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0g
ICAgcmV0dXJuIChtb2RlIDw8IDQpIHwgdHlwZTsKLX0KLQotc3RhdGljIGlubGluZSBTVkdMZW5n
dGhNb2RlIGV4dHJhY3RNb2RlKHVuc2lnbmVkIHVuaXQpCi17Ci0gICAgdW5zaWduZWQgbW9kZSA9
IHVuaXQgPj4gNDsgICAgCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aE1vZGU+KG1v
ZGUpOwotfQotCi1zdGF0aWMgaW5saW5lIFNWR0xlbmd0aFR5cGUgZXh0cmFjdFR5cGUodW5zaWdu
ZWQgdW5pdCkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odW5pdCAm
ICgoMSA8PCA0KSAtIDEpKTsKLX0KLQotc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBsZW5ndGhU
eXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewot
ICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246Ci0gICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgor
ICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93
bjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuICIiOyAg
ICAKLSAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlw
ZTo6UGVyY2VudGFnZToKICAgICAgICAgcmV0dXJuICIlIjsKLSAgICBjYXNlIExlbmd0aFR5cGVF
TVM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiAiZW0iOwot
ICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVYUzoKICAg
ICAgICAgcmV0dXJuICJleCI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpQWDoKICAgICAgICAgcmV0dXJuICJweCI7Ci0gICAgY2FzZSBMZW5ndGhUeXBl
Q006CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDTToKICAgICAgICAgcmV0dXJuICJjbSI7Ci0g
ICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNTToKICAgICAg
ICAgcmV0dXJuICJtbSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpJTjoKICAgICAgICAgcmV0dXJuICJpbiI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFQ6
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQVDoKICAgICAgICAgcmV0dXJuICJwdCI7Ci0gICAg
Y2FzZSBMZW5ndGhUeXBlUEM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKICAgICAgICAg
cmV0dXJuICJwYyI7CiAgICAgfQogCkBAIC04MSw5MiArNjAsNzUgQEAgc3RhdGljIGlubGluZSBj
b25zdCBjaGFyKiBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSB0eXBlKQogICAgIHJl
dHVybiAiIjsKIH0KIAotaW5saW5lIFNWR0xlbmd0aFR5cGUgcGFyc2VMZW5ndGhUeXBlKGNvbnN0
IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQpCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0aFR5
cGUgcGFyc2VMZW5ndGhUeXBlKGNvbnN0IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQpCiB7
CiAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlTnVtYmVyOwor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOwogCiAgICAgY29uc3QgVUNoYXIg
Zmlyc3RDaGFyID0gKnB0cjsKIAogICAgIGlmICgrK3B0ciA9PSBlbmQpCi0gICAgICAgIHJldHVy
biBmaXJzdENoYXIgPT0gJyUnID8gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgOiBMZW5ndGhUeXBlVW5r
bm93bjsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hhciA9PSAnJScgPyBTVkdMZW5ndGhUeXBlOjpQ
ZXJjZW50YWdlIDogU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjsKIAogICAgIGNvbnN0IFVDaGFyIHNl
Y29uZENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyICE9IGVuZCkKLSAgICAgICAgcmV0dXJu
IExlbmd0aFR5cGVVbmtub3duOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6VW5rbm93
bjsKIAogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENoYXIgPT0gJ20nKQotICAg
ICAgICByZXR1cm4gTGVuZ3RoVHlwZUVNUzsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6
OkVNUzsKICAgICBpZiAoZmlyc3RDaGFyID09ICdlJyAmJiBzZWNvbmRDaGFyID09ICd4JykKLSAg
ICAgICAgcmV0dXJuIExlbmd0aFR5cGVFWFM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBl
OjpFWFM7CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAneCcpCi0g
ICAgICAgIHJldHVybiBMZW5ndGhUeXBlUFg7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBl
OjpQWDsKICAgICBpZiAoZmlyc3RDaGFyID09ICdjJyAmJiBzZWNvbmRDaGFyID09ICdtJykKLSAg
ICAgICAgcmV0dXJuIExlbmd0aFR5cGVDTTsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6
OkNNOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ20nICYmIHNlY29uZENoYXIgPT0gJ20nKQotICAg
ICAgICByZXR1cm4gTGVuZ3RoVHlwZU1NOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
TU07CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnaScgJiYgc2Vjb25kQ2hhciA9PSAnbicpCi0gICAg
ICAgIHJldHVybiBMZW5ndGhUeXBlSU47CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpJ
TjsKICAgICBpZiAoZmlyc3RDaGFyID09ICdwJyAmJiBzZWNvbmRDaGFyID09ICd0JykKLSAgICAg
ICAgcmV0dXJuIExlbmd0aFR5cGVQVDsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBU
OwogICAgIGlmIChmaXJzdENoYXIgPT0gJ3AnICYmIHNlY29uZENoYXIgPT0gJ2MnKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoVHlwZVBDOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UEM7
CiAKLSAgICByZXR1cm4gTGVuZ3RoVHlwZVVua25vd247CisgICAgcmV0dXJuIFNWR0xlbmd0aFR5
cGU6OlVua25vd247CiB9CiAKLVNWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShTVkdMZW5n
dGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKLSAgICA6IG1fdW5pdChz
dG9yZVVuaXQobW9kZSwgTGVuZ3RoVHlwZU51bWJlcikpCitTVkdMZW5ndGhWYWx1ZTo6U1ZHTGVu
Z3RoVmFsdWUoU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNT
dHJpbmcpCisgICAgOiBtX2xlbmd0aE1vZGUobGVuZ3RoTW9kZSkKKyAgICAsIG1fbGVuZ3RoVHlw
ZShTVkdMZW5ndGhUeXBlOjpOdW1iZXIpCiB7CiAgICAgc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFz
U3RyaW5nKTsKIH0KIAotU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xl
bmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUsIFNW
R0xlbmd0aFR5cGUgdW5pdFR5cGUpCi0gICAgOiBtX3VuaXQoc3RvcmVVbml0KG1vZGUsIHVuaXRU
eXBlKSkKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250
ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlLCBTVkdM
ZW5ndGhUeXBlIGxlbmd0aFR5cGUpCisgICAgOiBtX2xlbmd0aE1vZGUobGVuZ3RoTW9kZSkKKyAg
ICAsIG1fbGVuZ3RoVHlwZShsZW5ndGhUeXBlKQogewogICAgIHNldFZhbHVlKHZhbHVlLCBjb250
ZXh0KTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OnNldFZhbHVlQXNT
dHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nLCBTVkdMZW5ndGhNb2RlIG1vZGUpCitF
eGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlQXNTdHJpbmcsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKIHsKICAgICBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IDA7Ci0gICAgbV91bml0ID0gc3RvcmVVbml0KG1vZGUs
IExlbmd0aFR5cGVOdW1iZXIpOworICAgIG1fbGVuZ3RoTW9kZSA9IGxlbmd0aE1vZGU7CisgICAg
bV9sZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOwogICAgIHJldHVybiBzZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcpOwogfQogCi1ib29sIFNWR0xlbmd0aFZhbHVlOjpvcGVy
YXRvcj09KGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4g
bV91bml0ID09IG90aGVyLm1fdW5pdCAmJiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9PSBvdGhl
ci5tX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKLX0KLQotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6b3Bl
cmF0b3IhPShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
ICFvcGVyYXRvcj09KG90aGVyKTsKLX0KLQotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmlu
ZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQorU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0
cmluZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVl
c01vZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQogewotICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aCht
b2RlKTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobGVuZ3RoTW9kZSk7CiAKICAgICBpZiAo
bGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZykuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHBhcnNlRXJyb3IgPSBQYXJzaW5nQXR0cmlidXRlRmFpbGVkRXJyb3I7Ci0gICAgZWxz
ZSBpZiAobmVnYXRpdmVWYWx1ZXNNb2RlID09IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocyAmJiBsZW5n
dGgudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQorICAgIGVsc2UgaWYgKG5lZ2F0aXZlVmFs
dWVzTW9kZSA9PSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCAmJiBsZW5ndGgu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQogICAgICAgICBwYXJzZUVycm9yID0gTmVnYXRp
dmVWYWx1ZUZvcmJpZGRlbkVycm9yOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotU1ZHTGVu
Z3RoVHlwZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdFR5cGUoKSBjb25zdAotewotICAgIHJldHVybiBl
eHRyYWN0VHlwZShtX3VuaXQpOwotfQotCi1TVkdMZW5ndGhNb2RlIFNWR0xlbmd0aFZhbHVlOjp1
bml0TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGV4dHJhY3RNb2RlKG1fdW5pdCk7Ci19Ci0K
IGZsb2F0IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250
ZXh0KSBjb25zdAogewogICAgIGF1dG8gcmVzdWx0ID0gdmFsdWVGb3JCaW5kaW5ncyhjb250ZXh0
KTsKQEAgLTE3NywyMyArMTM5LDI0IEBAIGZsb2F0IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZShjb25z
dCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0KSBjb25zdAogCiBFeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoVmFsdWU6OnZhbHVlRm9yQmluZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJV
bml0cyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cywgZXh0cmFjdE1vZGUobV91bml0KSwgZXh0cmFj
dFR5cGUobV91bml0KSk7CisgICAgcmV0dXJuIGNvbnRleHQuY29udmVydFZhbHVlVG9Vc2VyVW5p
dHMobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMsIG1fbGVuZ3RoTW9kZSwgbV9sZW5ndGhUeXBlKTsK
IH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OnNldFZhbHVlKGNvbnN0IFNW
R0xlbmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUs
IFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1
ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewog
ICAgIC8vIEZJWE1FOiBTZWVtcyBsaWtlIGEgYnVnIHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBv
ZiBtX3VuaXQgZXZlbiBpZiBzZXRWYWx1ZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgotICAgIG1fdW5p
dCA9IHN0b3JlVW5pdChtb2RlLCB1bml0VHlwZSk7CisgICAgbV9sZW5ndGhNb2RlID0gbGVuZ3Ro
TW9kZTsKKyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOwogICAgIHJldHVybiBzZXRWYWx1
ZSh2YWx1ZSwgY29udGV4dCk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVl
OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICAvLyAxMDAlID0gMTAwLjAgaW5zdGVhZCBvZiAxLjAgZm9yIGhpc3RvcmljYWwgcmVh
c29ucywgdGhpcyBjb3VsZCBldmVudHVhbGx5IGJlIGNoYW5nZWQKLSAgICBpZiAoZXh0cmFjdFR5
cGUobV91bml0KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAobV9sZW5ndGhUeXBl
ID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHZhbHVlID0gdmFsdWUgLyAx
MDA7CiAKLSAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gY29udGV4dC5jb252ZXJ0VmFsdWVGcm9t
VXNlclVuaXRzKHZhbHVlLCBleHRyYWN0TW9kZShtX3VuaXQpLCBleHRyYWN0VHlwZShtX3VuaXQp
KTsKKyAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gY29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNl
clVuaXRzKHZhbHVlLCBtX2xlbmd0aE1vZGUsIG1fbGVuZ3RoVHlwZSk7CiAgICAgaWYgKGNvbnZl
cnRlZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udmVydGVkVmFsdWUu
cmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gY29udmVy
dGVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7CkBAIC0yMDIsNyArMTY1LDcgQEAgRXhjZXB0
aW9uT3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OnNldFZhbHVlKGZsb2F0IHZhbHVlLCBjb25zdCBT
VkdMZW5ndGhDb250ZXh0JgogZmxvYXQgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlQXNQZXJjZW50YWdl
KCkgY29uc3QKIHsKICAgICAvLyAxMDAlID0gMTAwLjAgaW5zdGVhZCBvZiAxLjAgZm9yIGhpc3Rv
cmljYWwgcmVhc29ucywgdGhpcyBjb3VsZCBldmVudHVhbGx5IGJlIGNoYW5nZWQKLSAgICBpZiAo
ZXh0cmFjdFR5cGUobV91bml0KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAobV9s
ZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMDsKIAogICAgIHJldHVybiBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0czsKQEAgLTIyMSw4MyArMTg0LDc2IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xl
bmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlm
ICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIGNvbnZlcnRlZE51bWJlciwgZmFsc2UpKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAotICAgIGF1dG8gdHlwZSA9IHBh
cnNlTGVuZ3RoVHlwZShwdHIsIGVuZCk7Ci0gICAgaWYgKHR5cGUgPT0gTGVuZ3RoVHlwZVVua25v
d24pCisgICAgYXV0byBsZW5ndGhUeXBlID0gcGFyc2VMZW5ndGhUeXBlKHB0ciwgZW5kKTsKKyAg
ICBpZiAobGVuZ3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAotICAgIG1fdW5pdCA9IHN0b3JlVW5pdChl
eHRyYWN0TW9kZShtX3VuaXQpLCB0eXBlKTsKKyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBl
OwogICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gY29udmVydGVkTnVtYmVyOwogICAgIHJl
dHVybiB7IH07CiB9CiAKIFN0cmluZyBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1N0cmluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNp
c2lvbihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyksIGxlbmd0aFR5cGVUb1N0cmluZyhleHRyYWN0
VHlwZShtX3VuaXQpKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpm
aXhlZFByZWNpc2lvbihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyksIGxlbmd0aFR5cGVUb1N0cmlu
ZyhtX2xlbmd0aFR5cGUpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6
Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgZmxvYXQgdmFsdWUp
Cit2b2lkIFNWR0xlbmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKFNWR0xlbmd0aFR5
cGUgbGVuZ3RoVHlwZSwgZmxvYXQgdmFsdWUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gTGVuZ3RoVHlw
ZVVua25vd24gfHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0KLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFj
dE1vZGUobV91bml0KSwgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odHlwZSkpOworICAgIEFT
U0VSVChsZW5ndGhUeXBlICE9IFNWR0xlbmd0aFR5cGU6OlVua25vd24pOworICAgIG1fbGVuZ3Ro
VHlwZSA9IGxlbmd0aFR5cGU7CiAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsK
LSAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6
Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgY29uc3QgU1ZHTGVu
Z3RoQ29udGV4dCYgY29udGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyhTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUsIGNvbnN0IFNW
R0xlbmd0aENvbnRleHQmIGNvbnRleHQpCiB7Ci0gICAgaWYgKHR5cGUgPT0gTGVuZ3RoVHlwZVVu
a25vd24gfHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0KICAgICBhdXRvIHZhbHVlSW5Vc2VyVW5pdHMgPSB2YWx1
ZUZvckJpbmRpbmdzKGNvbnRleHQpOwogICAgIGlmICh2YWx1ZUluVXNlclVuaXRzLmhhc0V4Y2Vw
dGlvbigpKQogICAgICAgICByZXR1cm4gdmFsdWVJblVzZXJVbml0cy5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAKLSAgICBhdXRvIG9yaWdpbmFsVW5pdEFuZFR5cGUgPSBtX3VuaXQ7Ci0gICAgbV91bml0
ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCksIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5
cGU+KHR5cGUpKTsKKyAgICBhdXRvIG9yaWdpbmFsTGVuZ3RoVHlwZSA9IG1fbGVuZ3RoVHlwZTsK
KyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOwogICAgIGF1dG8gcmVzdWx0ID0gc2V0VmFs
dWUodmFsdWVJblVzZXJVbml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCk7Ci0gICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBtX3VuaXQgPSBvcmlnaW5hbFVu
aXRBbmRUeXBlOwotICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAg
ICB9CisgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB7IH07
CiAKLSAgICByZXR1cm4geyB9OworICAgIG1fbGVuZ3RoVHlwZSA9IG9yaWdpbmFsTGVuZ3RoVHlw
ZTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIH0KIAogU1ZHTGVuZ3Ro
VmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgU1ZHTGVuZ3RoVHlwZSB0eXBlOworICAgIFNWR0xl
bmd0aFR5cGUgbGVuZ3RoVHlwZTsKICAgICBzd2l0Y2ggKHZhbHVlLnByaW1pdGl2ZVR5cGUoKSkg
ewogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI6Ci0gICAgICAgIHR5cGUg
PSBMZW5ndGhUeXBlTnVtYmVyOworICAgICAgICBsZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6
TnVtYmVyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRToKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQZXJjZW50YWdlOworICAgICAg
ICBsZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzoKLSAgICAgICAgdHlwZSA9IExl
bmd0aFR5cGVFTVM7CisgICAgICAgIGxlbmd0aFR5cGUgPSBTVkdMZW5ndGhUeXBlOjpFTVM7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6Ci0gICAg
ICAgIHR5cGUgPSBMZW5ndGhUeXBlRVhTOworICAgICAgICBsZW5ndGhUeXBlID0gU1ZHTGVuZ3Ro
VHlwZTo6RVhTOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlUFg7CisgICAgICAgIGxlbmd0aFR5cGUg
PSBTVkdMZW5ndGhUeXBlOjpQWDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0NNOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZUNNOworICAgICAgICBs
ZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6Q007CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTToKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVNTTsK
KyAgICAgICAgbGVuZ3RoVHlwZSA9IFNWR0xlbmd0aFR5cGU6Ok1NOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU46Ci0gICAgICAgIHR5cGUgPSBMZW5n
dGhUeXBlSU47CisgICAgICAgIGxlbmd0aFR5cGUgPSBTVkdMZW5ndGhUeXBlOjpJTjsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOgotICAgICAgICB0
eXBlID0gTGVuZ3RoVHlwZVBUOworICAgICAgICBsZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6
UFQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzoK
LSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQQzsKKyAgICAgICAgbGVuZ3RoVHlwZSA9IFNWR0xl
bmd0aFR5cGU6OlBDOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVU5LTk9XTjoKICAgICBkZWZhdWx0OgpAQCAtMzA1LDQ0ICsyNjEsNDQgQEAgU1ZHTGVu
Z3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQ
cmltaXRpdmVWYWx1ZSYgdmEKICAgICB9OwogCiAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwot
ICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHR5cGUsIHZhbHVlLmZsb2F0VmFsdWUo
KSk7CisgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMobGVuZ3RoVHlwZSwgdmFsdWUu
ZmxvYXRWYWx1ZSgpKTsKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCiBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IFNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiBsZW5ndGgpCiB7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIGNzc1R5
cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV047Ci0gICAgc3dpdGNoIChsZW5ndGgu
dW5pdFR5cGUoKSkgewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CisgICAgc3dpdGNoIChs
ZW5ndGgubGVuZ3RoVHlwZSgpKSB7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFn
ZToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U6CiAgICAgICAgIGNzc1R5cGUg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVNUzoKICAgICAg
ICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFWFM6CiAg
ICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQWDoK
ICAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006
CiAgICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok1N
OgogICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTTsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpJ
TjoKICAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6
UFQ6CiAgICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6
OlBDOgogICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsKICAgICAg
ICAgYnJlYWs7CiAgICAgfTsKQEAgLTM1MCw0NiArMzA2LDUwIEBAIFJlZjxDU1NQcmltaXRpdmVW
YWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmCiAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoLnZhbHVl
SW5TcGVjaWZpZWRVbml0cygpLCBjc3NUeXBlKTsKIH0KIAotU1ZHTGVuZ3RoTW9kZSBTVkdMZW5n
dGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQorU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmJsZW5k
KGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBmbG9hdCBwcm9ncmVzcykgY29uc3QKIHsKLSAg
ICB1c2luZyBNYXAgPSBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFNWR0xlbmd0aE1vZGU+OwotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYXA+IG1hcCA9IFtdIHsKLSAgICAgICAgc3RydWN0IE1v
ZGUgewotICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZTsKLSAgICAgICAgICAg
IFNWR0xlbmd0aE1vZGUgbW9kZTsKLSAgICAgICAgfTsKLSAgICAgICAgc3RhdGljIGNvbnN0IE1v
ZGUgbW9kZXNbXSA9IHsKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2Rl
V2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0
IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpjeEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAot
ICAgICAgICAgICAgeyBTVkdOYW1lczo6Y3lBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAg
ICAgICAgICB7IFNWR05hbWVzOjpkeEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAg
ICAgeyBTVkdOYW1lczo6ZHlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7
IFNWR05hbWVzOjpmeEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdO
YW1lczo6ZnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVz
Ojp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6
aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6
eDFBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OngyQXR0
ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp5MUF0dHIsIExl
bmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnkyQXR0ciwgTGVuZ3Ro
TW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6cmVmWEF0dHIsIExlbmd0aE1v
ZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6cmVmWUF0dHIsIExlbmd0aE1vZGVI
ZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgTGVuZ3Ro
TW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0
ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpzdGFydE9mZnNl
dEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICB9OwotICAgICAgICBNYXAgbWFwOwot
ICAgICAgICBmb3IgKGF1dG8mIG1vZGUgOiBtb2RlcykKLSAgICAgICAgICAgIG1hcC5hZGQobW9k
ZS5uYW1lLCBtb2RlLm1vZGUpOwotICAgICAgICByZXR1cm4gbWFwOwotICAgIH0oKTsKLSAgICAK
LSAgICBhdXRvIHJlc3VsdCA9IG1hcC5nZXQoKS5maW5kKGF0dHJOYW1lKTsKLSAgICBpZiAocmVz
dWx0ID09IG1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIExlbmd0aE1vZGVPdGhlcjsK
LSAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICBpZiAoKGZyb20uaXNaZXJvKCkgJiYgaXNa
ZXJvKCkpCisgICAgICAgIHx8IGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlVu
a25vd24KKyAgICAgICAgfHwgbGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlVua25vd24K
KyAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmIGZyb20ubGVuZ3RoVHlwZSgpICE9IFNWR0xl
bmd0aFR5cGU6OlBlcmNlbnRhZ2UgJiYgbGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBl
cmNlbnRhZ2UpCisgICAgICAgIHx8ICghaXNaZXJvKCkgJiYgZnJvbS5sZW5ndGhUeXBlKCkgPT0g
U1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSAmJiBsZW5ndGhUeXBlKCkgIT0gU1ZHTGVuZ3RoVHlw
ZTo6UGVyY2VudGFnZSkKKyAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmICFpc1plcm8oKSAm
JiAoZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6RU1TIHx8IGZyb20ubGVuZ3Ro
VHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OkVYUykgJiYgZnJvbS5sZW5ndGhUeXBlKCkgIT0gbGVu
Z3RoVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgU1ZHTGVuZ3RoVmFsdWUg
bGVuZ3RoOworCisgICAgaWYgKGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBl
cmNlbnRhZ2UgfHwgbGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpIHsK
KyAgICAgICAgYXV0byBmcm9tUGVyY2VudCA9IGZyb20udmFsdWVBc1BlcmNlbnRhZ2UoKSAqIDEw
MDsKKyAgICAgICAgYXV0byB0b1BlcmNlbnQgPSB2YWx1ZUFzUGVyY2VudGFnZSgpICogMTAwOwor
ICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhTVkdMZW5ndGhUeXBlOjpQZXJj
ZW50YWdlLCBXZWJDb3JlOjpibGVuZChmcm9tUGVyY2VudCwgdG9QZXJjZW50LCBwcm9ncmVzcykp
OworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIGlmIChmcm9tLmxlbmd0aFR5
cGUoKSA9PSBsZW5ndGhUeXBlKCkgfHwgZnJvbS5pc1plcm8oKSB8fCBpc1plcm8oKSB8fCBmcm9t
Lmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpFTVMgfHwgZnJvbS5sZW5ndGhUeXBlKCkg
PT0gU1ZHTGVuZ3RoVHlwZTo6RVhTKSB7CisgICAgICAgIGF1dG8gZnJvbVZhbHVlID0gZnJvbS52
YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgYXV0byB0b1ZhbHVlID0gdmFsdWVJblNw
ZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGlmIChpc1plcm8oKSkKKyAgICAgICAgICAgIGxlbmd0
aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKGZyb20ubGVuZ3RoVHlwZSgpLCBXZWJDb3JlOjpibGVu
ZChmcm9tVmFsdWUsIHRvVmFsdWUsIHByb2dyZXNzKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKGxlbmd0aFR5cGUoKSwgV2ViQ29yZTo6
YmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcykpOworICAgICAgICByZXR1cm4gbGVu
Z3RoOworICAgIH0KKworICAgIEFTU0VSVCghaXNSZWxhdGl2ZSgpKTsKKyAgICBBU1NFUlQoIWZy
b20uaXNSZWxhdGl2ZSgpKTsKKworICAgIFNWR0xlbmd0aENvbnRleHQgbm9uUmVsYXRpdmVMZW5n
dGhDb250ZXh0KG51bGxwdHIpOworICAgIGF1dG8gZnJvbVZhbHVlSW5Vc2VyVW5pdHMgPSBub25S
ZWxhdGl2ZUxlbmd0aENvbnRleHQuY29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZnJvbS52YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoKSwgZnJvbS5sZW5ndGhNb2RlKCksIGZyb20ubGVuZ3RoVHlwZSgpKTsK
KyAgICBpZiAoZnJvbVZhbHVlSW5Vc2VyVW5pdHMuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvIGZyb21WYWx1ZSA9IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4
dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZyb21WYWx1ZUluVXNlclVuaXRzLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBsZW5ndGhNb2RlKCksIGxlbmd0aFR5cGUoKSk7CisgICAgaWYgKGZyb21W
YWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZsb2F0IHRv
VmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICBsZW5ndGgubmV3VmFsdWVTcGVj
aWZpZWRVbml0cyhsZW5ndGhUeXBlKCksIFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpKTsKKyAgICByZXR1cm4gbGVuZ3RoOwog
fQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaAppbmRleCA5MjY2
MWIyMWU1M2U3MDBjYTFiYWZlZTUxZTFmN2M1YWM5ZDZlMzQ1Li4zZGYxMTE4OTQ0YTQ4ODk3ZTJm
NGFjYWU1ZDU1YzJhZmM1ZGEzZWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGVuZ3RoVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaApA
QCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIwLDM1ICsyMSw1NCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFu
aW1hdGlvblV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNWR1BhcnNpbmdFcnJvci5oIgogI2luY2x1
ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3MgU1ZHTGVuZ3Ro
Q29udGV4dDsKKworZW51bSBjbGFzcyBTVkdMZW5ndGhUeXBlIDogdWludDhfdCB7CisgICAgVW5r
bm93biA9IDAsCisgICAgTnVtYmVyLAorICAgIFBlcmNlbnRhZ2UsCisgICAgRU1TLAorICAgIEVY
UywKKyAgICBQWCwKKyAgICBDTSwKKyAgICBNTSwKKyAgICBJTiwKKyAgICBQVCwKKyAgICBQQwor
fTsKKworZW51bSBjbGFzcyBTVkdMZW5ndGhNb2RlIDogdWludDhfdCB7CisgICAgV2lkdGgsCisg
ICAgSGVpZ2h0LAorICAgIE90aGVyCit9OwogCi1lbnVtIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVz
TW9kZSB7Ci0gICAgQWxsb3dOZWdhdGl2ZUxlbmd0aHMsCi0gICAgRm9yYmlkTmVnYXRpdmVMZW5n
dGhzCitlbnVtIGNsYXNzIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSA6IHVpbnQ4X3Qgewor
ICAgIEFsbG93LAorICAgIEZvcmJpZAogfTsKIAogY2xhc3MgU1ZHTGVuZ3RoVmFsdWUgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIC8vIEZJWE1FOiBPbmNlIGFs
bCBTVkdMZW5ndGhWYWx1ZSB1c2VycyB1c2UgTGVuZ3RoIGludGVybmFsbHksIHdlIG1ha2UgdGhp
cyBhIHdyYXBwZXIgZm9yIExlbmd0aC4KLSAgICBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2Rl
ID0gTGVuZ3RoTW9kZU90aGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcgPSBTdHJpbmco
KSk7Ci0gICAgU1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBT
VkdMZW5ndGhNb2RlID0gTGVuZ3RoTW9kZU90aGVyLCBTVkdMZW5ndGhUeXBlID0gTGVuZ3RoVHlw
ZU51bWJlcik7CisgICAgU1ZHTGVuZ3RoVmFsdWUoU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1v
ZGU6Ok90aGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcgPSBTdHJpbmcoKSk7CisgICAg
U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhN
b2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIFNWR0xlbmd0aFR5cGUgPSBTVkdMZW5ndGhUeXBl
OjpOdW1iZXIpOwogCi0gICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSgpIGNvbnN0OwotICAgIFNW
R0xlbmd0aE1vZGUgdW5pdE1vZGUoKSBjb25zdDsKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUg
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYsIFNWR1BhcnNpbmdFcnJvciYs
IFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSA9IFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9k
ZTo6QWxsb3cpOwogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0xlbmd0aFZhbHVlJikg
Y29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR0xlbmd0aFZhbHVlJikgY29uc3Q7
CisgICAgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGhU
eXBlOyB9CisgICAgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGhNb2RlOyB9CiAKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgY29uc3RydWN0KFNWR0xl
bmd0aE1vZGUsIGNvbnN0IFN0cmluZyYsIFNWR1BhcnNpbmdFcnJvciYsIFNWR0xlbmd0aE5lZ2F0
aXZlVmFsdWVzTW9kZSA9IEFsbG93TmVnYXRpdmVMZW5ndGhzKTsKKyAgICBib29sIGlzWmVybygp
IGNvbnN0IHsgcmV0dXJuICFtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsgIH0KKyAgICBib29sIGlz
UmVsYXRpdmUoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6
UGVyY2VudGFnZSB8fCBtX2xlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6RU1TIHx8IG1fbGVu
Z3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpFWFM7IH0KIAogICAgIGZsb2F0IHZhbHVlKGNvbnN0
IFNWR0xlbmd0aENvbnRleHQmKSBjb25zdDsKICAgICBFeGNlcHRpb25PcjxmbG9hdD4gdmFsdWVG
b3JCaW5kaW5ncyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JikgY29uc3Q7CkBAIC02Myw5OCArODMs
MzAgQEAgcHVibGljOgogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYsIFNWR0xlbmd0aE1v
ZGUpOwotICAgIAotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMo
dW5zaWduZWQgc2hvcnQsIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQsIGNvbnN0
IFNWR0xlbmd0aENvbnRleHQmKTsKLQotICAgIC8vIEhlbHBlciBmdW5jdGlvbnMKLSAgICBib29s
IGlzUmVsYXRpdmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byB0eXBlID0gdW5pdFR5cGUo
KTsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwgdHlwZSA9
PSBMZW5ndGhUeXBlRU1TIHx8IHR5cGUgPT0gTGVuZ3RoVHlwZUVYUzsKLSAgICB9Ci0KLSAgICBi
b29sIGlzWmVybygpIGNvbnN0IAotICAgIHsKLSAgICAgICAgcmV0dXJuICFtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0czsKLSAgICB9CisKKyAgICB2b2lkIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoU1ZH
TGVuZ3RoVHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhTVkdMZW5ndGhUeXBlLCBjb25zdCBTVkdM
ZW5ndGhDb250ZXh0Jik7CiAKICAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgZnJvbUNTU1ByaW1p
dGl2ZVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJik7CiAgICAgc3RhdGljIFJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gdG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYp
OwotICAgIHN0YXRpYyBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0KLSAgICBTVkdMZW5ndGhWYWx1ZSBibGVu
ZChjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbSwgZmxvYXQgcHJvZ3Jlc3MpIGNvbnN0Ci0gICAg
ewotICAgICAgICBhdXRvIHRvVHlwZSA9IHVuaXRUeXBlKCk7Ci0gICAgICAgIGF1dG8gZnJvbVR5
cGUgPSBmcm9tLnVuaXRUeXBlKCk7Ci0gICAgICAgIGlmICgoZnJvbS5pc1plcm8oKSAmJiBpc1pl
cm8oKSkKLSAgICAgICAgICAgIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVVbmtub3duCi0gICAg
ICAgICAgICB8fCB0b1R5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24KLSAgICAgICAgICAgIHx8ICgh
ZnJvbS5pc1plcm8oKSAmJiBmcm9tVHlwZSAhPSBMZW5ndGhUeXBlUGVyY2VudGFnZSAmJiB0b1R5
cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAgICAgICB8fCAoIWlzWmVybygpICYm
IGZyb21UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlICYmIHRvVHlwZSAhPSBMZW5ndGhUeXBl
UGVyY2VudGFnZSkKLSAgICAgICAgICAgIHx8ICghZnJvbS5pc1plcm8oKSAmJiAhaXNaZXJvKCkg
JiYgKGZyb21UeXBlID09IExlbmd0aFR5cGVFTVMgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVY
UykgJiYgZnJvbVR5cGUgIT0gdG9UeXBlKSkKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLQot
ICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0KLSAgICAgICAgaWYgKGZyb21UeXBlID09
IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8IHRvVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkg
ewotICAgICAgICAgICAgYXV0byBmcm9tUGVyY2VudCA9IGZyb20udmFsdWVBc1BlcmNlbnRhZ2Uo
KSAqIDEwMDsKLSAgICAgICAgICAgIGF1dG8gdG9QZXJjZW50ID0gdmFsdWVBc1BlcmNlbnRhZ2Uo
KSAqIDEwMDsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHMoTGVuZ3RoVHlwZVBlcmNlbnRhZ2UsIFdlYkNvcmU6OmJsZW5kKGZyb21QZXJjZW50
LCB0b1BlcmNlbnQsIHByb2dyZXNzKSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICByZXR1cm4g
bGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZyb21UeXBlID09IHRvVHlwZSB8fCBm
cm9tLmlzWmVybygpIHx8IGlzWmVybygpIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVFTVMgfHwg
ZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVYUykgewotICAgICAgICAgICAgYXV0byBmcm9tVmFsdWUg
PSBmcm9tLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwotICAgICAgICAgICAgYXV0byB0b1ZhbHVl
ID0gdmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Ci0gICAgICAgICAgICBpZiAoaXNaZXJvKCkpIHsK
LSAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVu
aXRzKGZyb21UeXBlLCBXZWJDb3JlOjpibGVuZChmcm9tVmFsdWUsIHRvVmFsdWUsIHByb2dyZXNz
KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgYXV0byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0b1R5cGUs
IFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpKTsKLSAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFTU0VSVCghaXNSZWxhdGl2ZSgpKTsKLSAgICAgICAgQVNTRVJU
KCFmcm9tLmlzUmVsYXRpdmUoKSk7Ci0KLSAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBub25SZWxh
dGl2ZUxlbmd0aENvbnRleHQobnVsbHB0cik7Ci0gICAgICAgIGF1dG8gZnJvbVZhbHVlSW5Vc2Vy
VW5pdHMgPSBub25SZWxhdGl2ZUxlbmd0aENvbnRleHQuY29udmVydFZhbHVlVG9Vc2VyVW5pdHMo
ZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSwgZnJvbS51bml0TW9kZSgpLCBmcm9tVHlwZSk7
Ci0gICAgICAgIGlmIChmcm9tVmFsdWVJblVzZXJVbml0cy5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgIHJldHVybiB7IH07Ci0KLSAgICAgICAgYXV0byBmcm9tVmFsdWUgPSBub25SZWxhdGl2
ZUxlbmd0aENvbnRleHQuY29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmcm9tVmFsdWVJblVzZXJV
bml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgdW5pdE1vZGUoKSwgdG9UeXBlKTsKLSAgICAgICAg
aWYgKGZyb21WYWx1ZS5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0K
LSAgICAgICAgZmxvYXQgdG9WYWx1ZSA9IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHRvVHlwZSwgV2Vi
Q29yZTo6YmxlbmQoZnJvbVZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB0b1ZhbHVlLCBwcm9n
cmVzcykpOwotICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9CisKKyAgICBTVkdMZW5n
dGhWYWx1ZSBibGVuZChjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbSwgZmxvYXQgcHJvZ3Jlc3Mp
IGNvbnN0OwogCiBwcml2YXRlOgogICAgIGZsb2F0IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIHsg
MCB9OwotICAgIHVuc2lnbmVkIG1fdW5pdDsKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9k
ZTsKKyAgICBTVkdMZW5ndGhUeXBlIG1fbGVuZ3RoVHlwZTsKIH07CiAKLXRlbXBsYXRlPD4gc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPiB7Ci0gICAgc3RhdGljIFNWR0xl
bmd0aFZhbHVlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQotICAgIHN0YXRpYyBPcHRp
b25hbDxTVkdMZW5ndGhWYWx1ZT4gcGFyc2UoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUs
IGNvbnN0IFN0cmluZyYgc3RyaW5nKQotICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVu
Z3RoOwotICAgICAgICBsZW5ndGguc2V0VmFsdWVBc1N0cmluZyhzdHJpbmcsIFNWR0xlbmd0aFZh
bHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKS5oYXNF
eGNlcHRpb24oKTsKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICB9Ci0gICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5ndGhWYWx1ZSYgbGVuZ3RoKSB7IHJldHVybiBsZW5n
dGgudmFsdWVBc1N0cmluZygpOyB9Ci19OworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgYSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGIpCit7CisgICAgcmV0dXJu
IGEudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPT0gYi52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSAm
JiBhLmxlbmd0aE1vZGUoKSA9PSBiLmxlbmd0aE1vZGUoKSAmJiBhLmxlbmd0aFR5cGUoKSA9PSBi
Lmxlbmd0aFR5cGUoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgYSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGIpCit7CisgICAgcmV0dXJuIGEudmFs
dWVJblNwZWNpZmllZFVuaXRzKCkgIT0gYi52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSB8fCBhLmxl
bmd0aE1vZGUoKSAhPSBiLmxlbmd0aE1vZGUoKSB8fCBhLmxlbmd0aFR5cGUoKSAhPSBiLmxlbmd0
aFR5cGUoKTsKK30KIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1l
bnQuY3BwCmluZGV4IDY1ZmU1NGZhODA0NjFhOTc5ZGY2NjFkYWQxZjkxMWRhNjExOWU5ZmEuLjNj
NGQzOWUwMjUxZjM0OGU3N2FjYzExZWRlOGNmM2RiYzk3YTRjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgU1ZHTGluZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgbV94MS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3gxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAgICAgIG1feTEt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4MkF0dHIp
Ci0gICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94Mi0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6eTJBdHRyKQotICAgICAgICBtX3kyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwor
ICAgICAgICBtX3kyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBv
cnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCmluZGV4IDU4Mjc3N2E3YWRmN2MzOWIyMWI2YjcwOGUw
ZWRlZmE0ZDhiYmMwMzkuLjM2YTBiYjRjMjliNDA3MjgzOWRiOGFlYzZmMmEzYzc3N2Y3ZGZjOGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCkBAIC01NiwxMCArNTYsMTAgQEAgcHJp
dmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbDsKIAog
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9
OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAK
aW5kZXggN2Q3ZDdjMjM2NGYyZTRjZjVlODI0ZGJmMDBkYzhkNDRhMjgzNzYxMC4uOWZhOTVjZTNl
ZWI4MjMwNjg3NmJmNmQ2YjgyMzA3MWI0MGI5Yjc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTY0LDEzICs2NCwxMyBAQCB2b2lk
IFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQQogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIG1feDEt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTFBdHRyKQot
ICAgICAgICBtX3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3kxLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6eDJBdHRyKQotICAgICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikKLSAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKKyAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZh
bHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5o
CmluZGV4IGIwZTZlYjUwZDRlYTY4ODBmNmM5MWIwYWJjNTFkMzY1MWE0OWIyMjIuLmFlZmU2NGNl
MTQ2NzY3ODRjMGQxYTkyNGNlM2RmZWFkN2JhY2MzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKQEAgLTU5LDEwICs1OSwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MSB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV95MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIx
MDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApp
bmRleCBmNTM0NjI0MGYwMTYxNTU3YjJiOWUzZjY0OTRhYTZmMmUxNWRjZDg5Li44MzA2ZmQ3NmJj
YTc5ZTgwMWU5MzYwZjIzOWRhN2JlOGI5ZDY3ZmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCkBAIC03OSwxMyArNzksMTMgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW4KICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6cmVmWEF0dHIpCi0gICAgICAgIG1fcmVmWC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3JlZlgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJlZllBdHRyKQotICAgICAgICBt
X3JlZlktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fcmVmWS0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVp
Z2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Om1hcmtlcldpZHRoQXR0cikKLSAgICAgICAgbV9tYXJrZXJXaWR0aC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX21hcmtlcldpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRy
KQotICAgICAgICBtX21hcmtlckhlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAg
ICAgICAgbV9tYXJrZXJIZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAog
ICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCmluZGV4IDFjODZlNzU5NzhlZmU2
MDAwYTE3NWEwNGExODhmMGExMmFmYmY2MjQuLmZmNzZiMDcyYjNlYjUyMzNkOWFhYWUxZWMxMzg2
MDY1NWFmMDYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAtODgs
MTAgKzg4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50
VHlwZSwgY29uc3QgU1ZHQW5nbGVWYWx1ZSYpOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3By
b3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9y
ZWZYIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3JlZlkgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX21hcmtlcldpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgsICIzIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2Vy
SGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCAiMyIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3JlZlggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yZWZZIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X21hcmtlcldpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpXaWR0aCwgIjMiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJI
ZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgIjMiKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21hcmtlclVu
aXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR01hcmtlclVuaXRz
U3Ryb2tlV2lkdGgpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkQW5nbGU+IG1fb3JpZW50QW5nbGUg
eyBTVkdBbmltYXRlZEFuZ2xlOjpjcmVhdGUodGhpcykgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRP
cmllbnRUeXBlPiBtX29yaWVudFR5cGUgeyBTVkdBbmltYXRlZE9yaWVudFR5cGU6OmNyZWF0ZSh0
aGlzLCBTVkdNYXJrZXJPcmllbnRBbmdsZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCmluZGV4IDhmMmE4MDJhZWUwZmJmNDg3NGU0NDY4NGUyYTg0NmFiZjBmYzg2N2MuLmI3
YTBmMTFiYWZjNDA2YThiNjZlOTFmOWMwOGQ4YmNhZTAyZjM0ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcApAQCAtODIsMTMgKzgyLDEzIEBAIHZvaWQgU1ZHTWFza0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0g
ICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV93aWR0
aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCmluZGV4IDk1NjQ2NDliYzgz
YzM0MTJjNDA2NGQwMzAzZDgyZDU4NGIyMzc5NmYuLmMzZTQ5YmFhZmE5ODFkZDU3OTdlNTU0Zjg5
NTY0ZDJkMTRjNDY2MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCkBAIC02NCwx
MCArNjQsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJv
cGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUi
KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgsICIxMjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
aGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCAiMTIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiLTEwJSIpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIi0xMCUiKSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsICIxMjAlIikgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9t
YXNrVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmlt
YXRlZEVudW1lcmF0aW9uPiBtX21hc2tDb250ZW50VW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0
aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9O
VVNFKSB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4
IGNkZGMzYTNlOGIxMzgzZjA2MGY0OTFmZGU2MzZiYzkxZWY2NDllODcuLjgzODlhNzFmMTBjMDFm
ZmZmNjcwYWQxYzNiNzkzNzViYzk0YjFlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcApAQCAtOTMsMTMgKzkzLDEzIEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocykp
OworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0
aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCmluZGV4IGQxYWQ1
OWM4ZGU0YmViOThhMDAzZTliMWFmZGY0NjMxYThhMWFkZmMuLjFlNjYxZDdmZDQ2NWFiOWJiNzhl
YWU2Y2E5ZWE2MWU2ZDYwN2QxN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5oCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
eSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtX3BhdHRlcm5Vbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBT
VkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcGF0dGVybkNvbnRlbnRVbml0cyB7IFNWR0FuaW1h
dGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVf
VVNFUlNQQUNFT05VU0UpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdD4gbV9w
YXR0ZXJuVHJhbnNmb3JtIHsgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0OjpjcmVhdGUodGhpcykg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAK
aW5kZXggYjExZDg3NTQ4MjY1NGFhNzU2ODk0ODk0OTM1NmYxNDk2YWVjMDRjNS4uZmUxZDQ5ODgw
N2NjOTBhNmE3MzIxMjkwNjM4ZGZjOWJmNDllMGE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTY2LDE3ICs2NiwxNyBAQCB2b2lk
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQQogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIG1fY3gt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQot
ICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N5LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBwYXJzZUVy
cm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OmZ4QXR0cikKLSAgICAgICAgbV9meC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX2Z4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeUF0dHIpCi0gICAgICAgIG1fZnktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fZnktPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmckF0dHIpCi0g
ICAgICAgIG1fZnItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Ro
cykpOworICAgICAgICBtX2ZyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0
aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJz
aW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKaW5kZXggZjMxNWQ5NDgwOGM1ZGQ4Y2JmNDE5
MmFiYTFmZDA3NGU0NjVmYTAzOS4uODRmMTE1ODhmM2UyODFlNmY2ZTA3YTYwOWQwODlhOTc4NzA4
YTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQu
aApAQCAtNjMsMTIgKzYzLDEyIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N4IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICI1MCUiKSB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjUwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVPdGhlciwgIjUwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z4IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9mciB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiMCUiKSB9
OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKSB9OworICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCAiNTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6T3Ro
ZXIsICI1MCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9meCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X2ZyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhl
ciwgIjAlIikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCmluZGV4IGViNTM5OTgwYjVlOTExNmIxZjI4YjI2MGYzMDhmMDE1
ZWE4OTA2MTcuLmVjYTEzZjA0NjRlOGQ2ZmE0ZmFmZWYxZWVhYjE0ZWFiYjU3ZDFjOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcApAQCAtNTgsMTcgKzU4LDE3IEBAIHZvaWQg
U1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vy
cm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0
aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAg
ICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5n
dGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpy
eEF0dHIpCi0gICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0
aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Is
IFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dp
ZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAg
ICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdh
dGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwog
CiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVl
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAppbmRleCBmYzI0NzkyODZlZTdiYTQ1
YmM3NjY4YmVkZTgzYjc1ZjQ2NzljYTRlLi5jNWY1ZjJjMGU0YzA1NTVhNDZlMGIyNWZhOTJlNTNm
Njk1ODI1ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaApAQCAtNjEsMTIgKzYx
LDEyIEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3J5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKaW5kZXggYzU3Y2ZmYzU5MWFhODdkMDRhODZkNTkwZTNlNjU3MDQyMGRlYjky
Yy4uZDc1N2VhYzRlNDcyODZkNmQ0MDEwYzhjZjhkNWM3Mzk2MTA5MjcwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMjMxLDIzICsyMzEsMjMgQEAgdm9pZCBTVkdTVkdF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAog
ICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRy
KSB7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpOwor
ICAgICAgICBhdXRvIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGU6OkZvcmJpZCk7CiAgICAgICAgIGlmIChwYXJzZUVycm9yICE9IE5vRXJyb3IgfHwgdmFsdWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBkZWZpbml0ZWx5IHRo
ZSBjb3JyZWN0IGJlaGF2aW9yIGZvciBhIG1pc3NpbmcvcmVtb3ZlZCBhdHRyaWJ1dGUuCiAgICAg
ICAgICAgICAvLyBOb3Qgc3VyZSBpdCdzIGNvcnJlY3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcgb3Ig
Zm9yIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIHBhcnNlZC4KLSAgICAgICAgICAgIGxlbmd0aCA9
IFNWR0xlbmd0aFZhbHVlKExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiX3MpOworICAgICAgICAgICAg
bGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWUoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMDAlIl9zKTsK
ICAgICAgICAgfQogICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwobGVuZ3RoKTsK
ICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAg
YXV0byBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpOworICAgICAgICBhdXRv
IGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQp
OwogICAgICAgICBpZiAocGFyc2VFcnJvciAhPSBOb0Vycm9yIHx8IHZhbHVlLmlzRW1wdHkoKSkg
ewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBi
ZWhhdmlvciBmb3IgYSByZW1vdmVkIGF0dHJpYnV0ZS4KICAgICAgICAgICAgIC8vIE5vdCBzdXJl
IGl0J3MgY29ycmVjdCBmb3IgdGhlIGVtcHR5IHN0cmluZyBvciBmb3Igc29tZXRoaW5nIHRoYXQg
Y2FuJ3QgYmUgcGFyc2VkLgotICAgICAgICAgICAgbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWUoTGVu
Z3RoTW9kZUhlaWdodCwgIjEwMCUiX3MpOworICAgICAgICAgICAgbGVuZ3RoID0gU1ZHTGVuZ3Ro
VmFsdWUoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMTAwJSJfcyk7CiAgICAgICAgIH0KICAgICAg
ICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChsZW5ndGgpOwogICAgIH0KQEAgLTU3Niwx
NyArNTc2LDE3IEBAIEZsb2F0U2l6ZSBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld3BvcnRTaXpl
KCkgY29uc3QKIAogYm9vbCBTVkdTVkdFbGVtZW50OjpoYXNJbnRyaW5zaWNXaWR0aCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHdpZHRoKCkudW5pdFR5cGUoKSAhPSBMZW5ndGhUeXBlUGVyY2VudGFn
ZTsKKyAgICByZXR1cm4gd2lkdGgoKS5sZW5ndGhUeXBlKCkgIT0gU1ZHTGVuZ3RoVHlwZTo6UGVy
Y2VudGFnZTsKIH0KIAogYm9vbCBTVkdTVkdFbGVtZW50OjpoYXNJbnRyaW5zaWNIZWlnaHQoKSBj
b25zdAogewotICAgIHJldHVybiBoZWlnaHQoKS51bml0VHlwZSgpICE9IExlbmd0aFR5cGVQZXJj
ZW50YWdlOworICAgIHJldHVybiBoZWlnaHQoKS5sZW5ndGhUeXBlKCkgIT0gU1ZHTGVuZ3RoVHlw
ZTo6UGVyY2VudGFnZTsKIH0KIAogTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6OmludHJpbnNpY1dpZHRo
KCkgY29uc3QKIHsKLSAgICBpZiAod2lkdGgoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJj
ZW50YWdlKQorICAgIGlmICh3aWR0aCgpLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQ
ZXJjZW50YWdlKQogICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKIAogICAgIFNWR0xl
bmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0aGlzKTsKQEAgLTU5NSw3ICs1OTUsNyBAQCBMZW5n
dGggU1ZHU1ZHRWxlbWVudDo6aW50cmluc2ljV2lkdGgoKSBjb25zdAogCiBMZW5ndGggU1ZHU1ZH
RWxlbWVudDo6aW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAoaGVpZ2h0KCkudW5p
dFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAoaGVpZ2h0KCkubGVuZ3Ro
VHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiBMZW5n
dGgoMCwgRml4ZWQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKaW5kZXggOWVhY2Q4MDkxZGMxMTk2MWE5Njkw
MTk5NzYzZmMyMDI1ZDI1NzhjMC4uZDQ2YjQyODhmZDgyZTQ2YzY1ZjI2YjFlZWEwN2QyYmYxMDQw
NmVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCkBAIC0xNjQsMTAgKzE2NCwxMCBA
QCBwcml2YXRlOgogICAgIFJlZjxTVkdQb2ludD4gbV9jdXJyZW50VHJhbnNsYXRlIHsgU1ZHUG9p
bnQ6OmNyZWF0ZSgpIH07CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiX3MpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUiX3MpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiX3MpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMTAwJSJfcykgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHAKaW5kZXggMTgyMGIzY2NkMmU1MjZjOTIxNDMxZjRlNDdmNjExYzU5MjNmZjJhNC4uZWI2
OWUwYzVmZjk2YzlhNjc1ZGM2MmMxOWE0ZGIxMGM4NWM5ZjBkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lk
IFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbQogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAg
ICAgICAgICBtX2xlbmd0aEFkanVzdC0+c2V0QmFzZVZhbEludGVybmFsPFNWR0xlbmd0aEFkanVz
dFR5cGU+KHByb3BlcnR5VmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
dGV4dExlbmd0aEF0dHIpCi0gICAgICAgIG1fdGV4dExlbmd0aC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fdGV4dExlbmd0aC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
T3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZv
cmJpZCkpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5h
bWUsIHZhbHVlKTsKIApAQCAtMTk3LDkgKzE5Nyw5IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
CiBTVkdBbmltYXRlZExlbmd0aCYgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5p
bWF0ZWQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdMZW5ndGhWYWx1ZT4gZGVm
YXVsdFRleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8U1ZHTGVuZ3RoVmFsdWU+IGRlZmF1bHRUZXh0TGVuZ3RoKFNWR0xlbmd0aE1vZGU6Ok90aGVy
KTsKICAgICBpZiAobV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCkgPT0gZGVmYXVsdFRl
eHRMZW5ndGgpCi0gICAgICAgIG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpLm5ld1Zh
bHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3Ro
KCkpOworICAgICAgICBtX3RleHRMZW5ndGgtPmJhc2VWYWwoKS0+dmFsdWUoKS5uZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3Ro
KCkpOwogICAgIHJldHVybiBtX3RleHRMZW5ndGg7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuaAppbmRleCA1OGE3ZDM3NzE0ODdiZWQzZTY3MDkzMGI5NWM2
ZmZhOGI1NjFiNWM4Li5kYjBmZWYyM2YxNjYwMmU0ZTNmNzlmYjJiOGNjYzUyZTUyZTkyOWQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCkBAIC0xMDcsOSAr
MTA3LDkgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBib29sIGlzVGV4dENvbnRlbnQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fdGV4dExlbmd0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZU90aGVyKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV90ZXh0TGVuZ3RoIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9sZW5ndGhBZGp1c3QgeyBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoQWRqdXN0U3BhY2luZykgfTsKLSAg
ICBTVkdMZW5ndGhWYWx1ZSBtX3NwZWNpZmllZFRleHRMZW5ndGggeyBMZW5ndGhNb2RlT3RoZXIg
fTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBtX3NwZWNpZmllZFRleHRMZW5ndGggeyBTVkdMZW5ndGhN
b2RlOjpPdGhlciB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCA3NmZiYmE3OTI2ZmNkMjAxOTBlZmUy
ZjdjMTVlYmY3YmQxNzhmMjg3Li5kOWZlMWY0NzRkZDZjMGY3YzZmMzY0NGVjNWJlYjVlODcwYWY0
YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtNjcs
NyArNjcsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgogICAgIFNWR1BhcnNpbmdFcnJvciBw
YXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpzdGFydE9m
ZnNldEF0dHIpCi0gICAgICAgIG1fc3RhcnRPZmZzZXQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV9zdGFydE9mZnNldC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWV0aG9kQXR0cikgewogICAgICAgICBT
VkdUZXh0UGF0aE1ldGhvZFR5cGUgcHJvcGVydHlWYWx1ZSA9IFNWR1Byb3BlcnR5VHJhaXRzPFNW
R1RleHRQYXRoTWV0aG9kVHlwZT46OmZyb21TdHJpbmcodmFsdWUpOwogICAgICAgICBpZiAocHJv
cGVydHlWYWx1ZSA+IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKaW5k
ZXggNTY3N2Y1YmViMjM3ZmMzODJiNGMwZDJlYmJhOGRiYTJlNGE5ZDI4NS4uNzhmMDdmMGEwYWRi
NDQzYmM0MWRiYzE0NWJmNDA0ZjQ0MTdiYjI3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lz
dHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3N0YXJ0T2Zmc2V0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlT3RoZXIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3N0YXJ0T2Zmc2V0
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlcikg
fTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tZXRob2QgeyBTVkdBbmltYXRl
ZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVGV4dFBhdGhNZXRob2RBbGlnbikgfTsKICAg
ICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9zcGFjaW5nIHsgU1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0KSB9OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCmluZGV4IDBl
NzEzNGMxMzgzNTdjNmNkYjNkYjU3YzFkNjI0MmYzMTMxN2Y5NzcuLjM3OWM1YTY2OTkzNzBlZGU1
NjRmZjNiZjE3NmE0YjgyODQzOWI2ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuaApAQCAtNTcsMTAgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aExpc3Q+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3kgeyBTVkdBbmlt
YXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1fZHggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdD4gbV9keSB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aExpc3Q+IG1fZHggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0
PiBtX2R5IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+IG1fcm90YXRlIHsg
U1ZHQW5pbWF0ZWROdW1iZXJMaXN0OjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCA5YTcyOTg0MmVkMmQ5YjY2Njk5MTAwZWI3NWRkMzE4
YjU4MmFkOWU3Li5hZDkyMzg0MTM1ZmEyOGRkNTM4OWU4Nzg5NjQ0ZWY5NWI3ZTdmODdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC04MCwxMyArODAsMTMgQEAgdm9pZCBT
VkdVc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJv
cjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAg
IG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lk
dGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWRO
ZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1f
aGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZh
bHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBh
cnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKaW5k
ZXggMWY1MmJjMWRjZjBkMjE5MjMwNWE2NWFmODA1YmU2ZDMxZDA3MGNmYi4uYWI1OWNkM2M5MTYz
MmU2NGFiNjgzOGU3NGE4NzU5NWMzNzBmYjgyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1VzZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5oCkBAIC05NiwxMCArOTYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVEZXBl
bmRlbnRTaGFkb3dUcmVlcygpOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWln
aHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCkgfTsKIAogICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkRXZlbnQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9zaGFkb3dUcmVlTmVlZHNVcGRhdGUgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNz
b3JJbXBsLmgKaW5kZXggZDMyNjc4YzFjZDBlM2UwZDIzMjM4MGRmYjAyNGUzMzI5YTc2NGI5My4u
OTliMmFhOTEzMTYzZDllMGRkOGMzNzNmNDY3ZmRkOTY0NGZiYThiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlBY2Nlc3NvckltcGwuaApAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlw
ZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1v
ZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwg
Ym9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgU1ZHTGVuZ3RoTW9k
ZSBsZW5ndGhNb2RlID0gcHJvcGVydHkob3duZXIpLT5iYXNlVmFsKCktPnZhbHVlKCkudW5pdE1v
ZGUoKTsKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gcHJvcGVydHkob3duZXIp
LT5iYXNlVmFsKCktPnZhbHVlKCkubGVuZ3RoTW9kZSgpOwogICAgICAgICByZXR1cm4gU1ZHQW5p
bWF0ZWRMZW5ndGhBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KG93bmVy
KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIGxl
bmd0aE1vZGUpOwogICAgIH0KIApAQCAtMTQ2LDcgKzE0Niw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRv
cihPd25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNj
dW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIHJl
dHVybiBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUs
IHByb3BlcnR5KG93bmVyKSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQs
IGlzQWRkaXRpdmUsIExlbmd0aE1vZGVXaWR0aCk7CisgICAgICAgIHJldHVybiBTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcjo6Y3JlYXRlKGF0dHJpYnV0ZU5hbWUsIHByb3BlcnR5KG93bmVy
KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIFNW
R0xlbmd0aE1vZGU6OldpZHRoKTsKICAgICB9CiAKICAgICB2b2lkIGFwcGVuZEFuaW1hdGVkSW5z
dGFuY2UoT3duZXJUeXBlJiBvd25lciwgU1ZHQXR0cmlidXRlQW5pbWF0b3ImIGFuaW1hdG9yKSBj
b25zdCBmaW5hbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2ZhODJjNjE4ZDZiYmU0NTc2NzQwY2E2ODUwM2UxODQyZWI5Y2ZjZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaAorKysgL2Rl
di9udWxsCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgot
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBTVkdFbGVtZW50OwotCi1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9u
IHsgICAgICAgICAgICAKLSAgICAvLyBFbXB0eSB2YWx1ZQotICAgIFNWR0FuaW1hdGVkUHJvcGVy
dHlEZXNjcmlwdGlvbigpCi0gICAgICAgIDogbV9lbGVtZW50KG51bGxwdHIpCi0gICAgICAgICwg
bV9hdHRyaWJ1dGVOYW1lKG51bGxwdHIpCi0gICAgewotICAgIH0KLQotICAgIC8vIERlbGV0ZWQg
dmFsdWUKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24oV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fZWxlbWVudChyZWludGVycHJldF9jYXN0PFNW
R0VsZW1lbnQqPigtMSkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudCA9PSByZWlu
dGVycHJldF9jYXN0PFNWR0VsZW1lbnQqPigtMSk7Ci0gICAgfQotCi0gICAgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eURlc2NyaXB0aW9uKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcm
IGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgICAgICwg
bV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUuaW1wbCgpKQotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fZWxlbWVudCk7Ci0gICAgICAgIEFTU0VSVChtX2F0dHJpYnV0ZU5hbWUpOwotICAgIH0K
LQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRp
b24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudCA9PSBvdGhl
ci5tX2VsZW1lbnQgJiYgbV9hdHRyaWJ1dGVOYW1lID09IG90aGVyLm1fYXR0cmlidXRlTmFtZTsK
LSAgICB9Ci0KLSAgICBTVkdFbGVtZW50KiBtX2VsZW1lbnQ7Ci0gICAgQXRvbVN0cmluZ0ltcGwq
IG1fYXR0cmlidXRlTmFtZTsKLX07Ci0KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb25IYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24mIGtleSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdIYXNo
ZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbik+KCZr
ZXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNWR0FuaW1hdGVkUHJv
cGVydHlEZXNjcmlwdGlvbiYgYSwgY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9u
JiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICB9Ci0KLSAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi1z
dHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaFRyYWl0cyA6IFdURjo6U2lt
cGxlQ2xhc3NIYXNoVHJhaXRzPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbj4geyB9Owot
IAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlv
bkltcGwuaAppbmRleCA5MjMzYWU5MmY5NTIyMjFkYmU5MDM5MGQ1ZjhhNDVkMGI1MzY0M2FiLi41
YzkwZjUyNWVkNDIxZWM2NzI5ZGJlN2E4NzRkNmFlYmI4MDk1MGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlv
bkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAg
ICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9JdGVtcy5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSA9IChpIDwgZnJvbUl0ZW1zLnNpemUoKSAm
JiBwcm9ncmVzcyA8IDAuNSA/IGZyb21JdGVtcyA6IHRvSXRlbXMpW2ldLT52YWx1ZSgpLnVuaXRU
eXBlKCk7CisgICAgICAgICAgICBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUgPSAoaSA8IGZyb21J
dGVtcy5zaXplKCkgJiYgcHJvZ3Jlc3MgPCAwLjUgPyBmcm9tSXRlbXMgOiB0b0l0ZW1zKVtpXS0+
dmFsdWUoKS5sZW5ndGhUeXBlKCk7CiAKICAgICAgICAgICAgIGZsb2F0IGZyb20gPSBpIDwgZnJv
bUl0ZW1zLnNpemUoKSA/IGZyb21JdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0
KSA6IDA7CiAgICAgICAgICAgICBmbG9hdCB0byA9IHRvSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUo
bGVuZ3RoQ29udGV4dCk7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGZs
b2F0IHZhbHVlID0gYW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0
KTsKIAogICAgICAgICAgICAgdmFsdWUgPSBCYXNlOjphbmltYXRlKHByb2dyZXNzLCByZXBlYXRD
b3VudCwgZnJvbSwgdG8sIHRvQXRFbmRPZkR1cmF0aW9uLCB2YWx1ZSk7Ci0gICAgICAgICAgICBh
bmltYXRlZEl0ZW1zW2ldLT52YWx1ZSgpLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIHZhbHVlLCBs
ZW5ndGhNb2RlLCB1bml0VHlwZSk7CisgICAgICAgICAgICBhbmltYXRlZEl0ZW1zW2ldLT52YWx1
ZSgpLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIHZhbHVlLCBsZW5ndGhNb2RlLCBsZW5ndGhUeXBl
KTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5oCmluZGV4IDI4YzUxMmEwOWE3NDlkYjI1YmQ3M2RhY2JiYWQ2ZDQ4OWRiN2EzNTIuLjgy
YmRjNTRiZDU5ZmU0YTMwYzk0OGZkZGUzZWMxYzU3NjMzMzk3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bkltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHByb2dyZXNz
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHTGVuZ3RoVmFsdWUmIGFuaW1hdGVkKQogICAgIHsK
ICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQpOwot
ICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gcHJvZ3Jlc3MgPCAwLjUgPyBtX2Zyb20u
dW5pdFR5cGUoKSA6IG1fdG8udW5pdFR5cGUoKTsKKyAgICAgICAgU1ZHTGVuZ3RoVHlwZSBsZW5n
dGhUeXBlID0gcHJvZ3Jlc3MgPCAwLjUgPyBtX2Zyb20ubGVuZ3RoVHlwZSgpIDogbV90by5sZW5n
dGhUeXBlKCk7CiAKICAgICAgICAgZmxvYXQgZnJvbSA9IChtX2FuaW1hdGlvbk1vZGUgPT0gQW5p
bWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IG1fZnJvbSkudmFsdWUobGVuZ3RoQ29udGV4dCk7
CiAgICAgICAgIGZsb2F0IHRvID0gbV90by52YWx1ZShsZW5ndGhDb250ZXh0KTsKQEAgLTE4NSw3
ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IHZhbHVlID0gYW5pbWF0ZWQudmFsdWUo
bGVuZ3RoQ29udGV4dCk7CiAKICAgICAgICAgdmFsdWUgPSBCYXNlOjphbmltYXRlKHByb2dyZXNz
LCByZXBlYXRDb3VudCwgZnJvbSwgdG8sIHRvQXRFbmRPZkR1cmF0aW9uLCB2YWx1ZSk7Ci0gICAg
ICAgIGFuaW1hdGVkID0geyBsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbV9sZW5ndGhNb2RlLCB1bml0
VHlwZSB9OworICAgICAgICBhbmltYXRlZCA9IHsgbGVuZ3RoQ29udGV4dCwgdmFsdWUsIG1fbGVu
Z3RoTW9kZSwgbGVuZ3RoVHlwZSB9OwogICAgIH0KIAogICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxj
dWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZy
b20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBs
LmgKaW5kZXggZmQzZGM5NjBmZmE3ZDMxMjkwMTM3ZDQ1MmNkZTFhMjg3OWE3ZWRiZC4uNjI3Njc4
NDk5NDgxNTY5NWUxN2NkYjMwOWU1ODQ1OWY2YmU4OGJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvcklt
cGwuaApAQCAtMzksMTMgKzM5LDEzIEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6
CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRp
dmUpCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92
ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0Fk
ZGl0aXZlLCBTVkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChT
VkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgU3RyaW5n
IGJhc2VWYWx1ZSA9IGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKHRhcmdldEVsZW1lbnQsIGNzc1By
b3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7Ci0gICAgICAgIFNWR0xlbmd0
aFZhbHVlIHZhbHVlKExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIFNWR0xlbmd0aFZhbHVlIHZh
bHVlKFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICAgICAgaWYgKCF2YWx1ZS5zZXRWYWx1ZUFz
U3RyaW5nKGJhc2VWYWx1ZSkuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBtX3Byb3BlcnR5
LT5zZXRWYWx1ZSh2YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgK
aW5kZXggYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOC4uMTU5OGY1NjZi
MjljNDEzOGRjMjRkOWJmODM4MDlmZjU5NGFjNmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1h
dG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBm
aW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJs
aWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0
ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVO
YW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11
bGF0ZWQsIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICB9CiAKICAgICB2
b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378596</attachid>
            <date>2019-09-11 16:39:55 -0700</date>
            <delta_ts>2019-09-11 16:54:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190911163954.patch</filename>
            <type>text/plain</type>
            <size>134811</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJiMzk5MDA3ZmJiOWIy
N2Y4ZDAzZWU1YjNhNTZkMjA0YWNiN2QxYy4uNGIwMGFhZjhjNjEwYmE1M2I0YzUyNTY0MGQ4Mjgx
MTI5OWQ1ZjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOS0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xl
bmd0aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0
ZWFkIG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyIGFuZCBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFs
dWUgaGFkIG9uZSB1bnNpZ25lZCB0byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhU
eXBlLgorICAgICAgICBJdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCA0
IGJpdHMgb2YgdGhpcyB1bnNpZ25lZCB0byB0aGUKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSB3aGls
ZSBpdCBsZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0aFR5cGUuCisKKyAgICAgICAgVGhpcyB3
aWxsIG5vdCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9kZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUg
bWFkZSBvZgorICAgICAgICBzaXplIHVpbnRfOC4KKworICAgICAgICBBbHNvIGluIHRoaXMgcGF0
Y2g6CisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIGlzIG1hZGUgZW51
bSBjbGFzcy4KKworICAgICAgICAtLSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoKSBpcyBtb3ZlZCB0
byBTVkdMZW5ndGhWYWx1ZS5jcHAgc28gd2UgZG8gbm90CisgICAgICAgICAgIG5lZWQgdG8gaW5j
bHVkZSBTVkdMZW5ndGhDb250ZXh0LmggaW4gU1ZHTGVuZ3RoVmFsdWUuaC4KKworICAgICAgICAt
LSBTVkdMZW5ndGhUeXBlIGFuZCBTVkdMZW5ndGhNb2RlIGFyZSBtb3ZlZCB0byBTVkdMZW5ndGhW
YWx1ZS5oLiBJbnN0ZWFkCisgICAgICAgICAgIG9mIGhhdmluZyBTVkdMZW5ndGhWYWx1ZS5oIGlu
Y2x1ZGVzIFNWR0xlbmd0aENvbnR0ZXh0LmgsIHRoZSBvcHBvc2l0ZQorICAgICAgICAgICB3aWxs
IGhhcHBlbi4KKworICAgICAgICAtLSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBp
cyBkZWxldGVkLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgICAgd2l0aCB0
aGUgU1ZHIHRlYXIgb2ZmIG9iamVjdHMgcmVtb3ZhbC4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdBbmdsZVZhbHVlPiBhbmQgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFs
dWU+CisgICAgICAgICAgIGFyZSBkZWxldGVkLiBUaGV5IHNob3VsZCBoYXZlIGJlZW4gZGVsZXRl
ZCB3aXRoIFNWR0FuaW1hdGVkVHlwZSByZW1vdmFsLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFZh
bHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBpcyBkZWxldGVkLiBJ
dAorICAgICAgICAgICB3YXMgb25seSBjYWxsZWQgZnJvbSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdM
ZW5ndGhWYWx1ZT4uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1h
dGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1
bmMpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRl
Q1NTS2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJp
YnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGlu
ZWFyR3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRy
aWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJh
ZGlhbEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojppbml0
aWFsVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8
U1ZHQW5nbGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZH
RWxsaXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6OnVuaXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3Ro
Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZv
ckxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFs
dWVUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0
Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJv
bVBlcmNlbnRhZ2VUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENv
bnRleHQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExp
c3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVU
b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlbmd0aFR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6cHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjps
ZW5ndGhUeXBlVG9QcmltaXRpdmVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZh
bHVlOjpTVkdMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpibGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6c3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJh
Y3RNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0VHlw
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dW5p
dE1vZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6
OnZhbHVlQXNQZXJjZW50YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xlbmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aFR5cGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmlzWmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGhWYWx1ZTo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoVmFsdWU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6aW5pdGlh
bFZhbHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNW
R0xlbmd0aFZhbHVlPjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJv
cGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAg
KiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bh
dHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5F
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
aGFzSW50cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6aGFzSW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmludHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OmludHJpbnNpY0hlaWdodCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAg
ICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RG
dW5jdGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RG
dW5jdGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
aW9uTGVuZ3RoRnVuY3Rpb246OmFuaW1hdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NW
R1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorCiAyMDE5LTA5LTExICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OICgyNDUwMDYp
OiBjYW4ndCBzY3JvbGwgaW4gInJlYWQgbW9yZSIgdmlldyBpbiBFdmVudGJyaXRlIGFwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGI4ZDI3ZmM0MWY0NzhmYjQzNjUzNWYwN2M2M2FhZTliNmRiOTNlNWEuLmM2MzEwM2IyZjI1ODRl
NGYxYmI4NmRkZmM0ZTJkNzg2M2M2MmMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MSw3ICsyNTEsNiBAQAogCQkwODc1
NThDNjEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEz
QjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2N0YxMURB
MDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUw
NjgwMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFp
bnRQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
OEEwREZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhB
MEUwQzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwRTAzMTI2RUYxREIwMDk3OEY3
QSAvKiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5
b3V0QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDg4QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVz
LmggKi87IH07CiAJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5NTgyNTQwRTg1
N0E3RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1MzYsNyArNTUzNSw2IEBACiAJCTA4NzU1OEM0MTNC
NEE1N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdFMTFEQTA0NUIwMDE4
MkI5OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBh
aW50UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4QTBERkQxMjZFRjFE
QjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8q
IFNWR1Byb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNW
R1Byb3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc1
MTIzOTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc2MTIzOTAwODAwMDNENjVDRSAv
KiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTYwOTQsNyArMTYwOTIsNiBAQAogCQkJCTU1RUU1MzU4MjIzQjI5RjkwMEZCQTk0NCAv
KiBTVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNUEyMjNC
MjlGQjAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oICovLAogCQkJCTU1
RUU1MzU2MjIzQjI5RjcwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBs
LmggKi8sCi0JCQkJMDg4QTBERkQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVy
dHlEZXNjcmlwdGlvbi5oICovLAogCQkJCTU1RUU1MzVDMjIzQjJBMEQwMEZCQTk0NCAvKiBTVkdB
bmltYXRlZFByb3BlcnR5SW1wbC5oICovLAogCQkJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAv
KiBTVkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovLAogCQkJCTU1QkUwMjVFMjIzQjI5QzQwMDMy
RjA4QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yLmggKi8sCkBAIC0zMTc3OSw3
ICszMTc3Niw2IEBACiAJCQkJMjREOTEyQjgxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBo
SXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4OEEw
RTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8q
IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAw
QkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGQ4YWMzMjg5MmRjZDEzNTUyNjI5OGFl
MTI1YmZiMTdjOGMxNzUwYTkuLmUwYzMxOGVlNzdjYjEzYjk4NmYwNTcxNjZlOWQ4OWM0NmQ2MDlh
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFz
cyBTdHlsZVJ1bGVQYWdlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0
OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdTVkdF
bGVtZW50OwogY2xhc3MgVmlld3BvcnRTdHlsZVJlc29sdmVyOwogc3RydWN0IFJlc291cmNlTG9h
ZGVyT3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBiYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRl
MDE3M2YzNjdlOTk3Li42ZjY0Y2M2ZWE4ZDZhMjM4MDY0YzNjMzFmM2JlNzllNzQ3ZDExYjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1h
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGhCb3gg
YmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IEwK
IAogc3RhdGljIGlubGluZSBTVkdMZW5ndGhWYWx1ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVy
dHlCbGVuZGluZ0NsaWVudCosIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gdG8uYmxlbmQo
ZnJvbSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgIHJldHVybiBTVkdM
ZW5ndGhWYWx1ZTo6YmxlbmQoZnJvbSwgdG8sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jl
c3MpKTsKIH0KIAogc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGJsZW5kRnVu
Yyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3QgVmVjdG9yPFNWR0xlbmd0
aFZhbHVlPiYgZnJvbSwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgdG8sIGRvdWJsZSBw
cm9ncmVzcykKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5n
dGhWYWx1ZT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLAogICAg
IH0KICAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHJlc3VsdChyZXN1bHRMZW5ndGgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0TGVuZ3RoOyArK2kpCi0gICAgICAgIHJlc3Vs
dFtpXSA9IHRvW2kgJSB0b0xlbmd0aF0uYmxlbmQoZnJvbVtpICUgZnJvbUxlbmd0aF0sIG5hcnJv
d1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKKyAgICAgICAgcmVzdWx0W2ldID0gU1ZHTGVu
Z3RoVmFsdWU6OmJsZW5kKGZyb21baSAlIGZyb21MZW5ndGhdLCB0b1tpICUgdG9MZW5ndGhdLCBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dyZXNzKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0
eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApp
bmRleCA0MjQ0Y2E2MDE0NDhmMWIxMGE4ZjFmY2JmOTE3MDIzNGQzYTAxNzliLi45NTMyMTI5YWYy
ZDA3OTY2YmU5ODM5MjE4ZDU0Mzk5MTg0YzIwZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtODIsOCArODIsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyTWlkUmVzb3VyY2UoKSB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlckVuZFJlc291cmNlKCkg
eyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgTWFza1R5cGUgaW5pdGlhbE1hc2tUeXBl
KCkgeyByZXR1cm4gTWFza1R5cGU6Okx1bWluYW5jZTsgfQotICAgIHN0YXRpYyBTVkdMZW5ndGhW
YWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7Ci0gICAgc3RhdGljIFNWR0xlbmd0aFZh
bHVlIGluaXRpYWxLZXJuaW5nKCk7CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxC
YXNlbGluZVNoaWZ0VmFsdWUoKSB7IHJldHVybiBTVkdMZW5ndGhWYWx1ZSgwLCBTVkdMZW5ndGhU
eXBlOjpOdW1iZXIpOyB9CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5n
KCkgeyByZXR1cm4gU1ZHTGVuZ3RoVmFsdWUoMCwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKTsgfQog
CiAgICAgLy8gU1ZHIENTUyBQcm9wZXJ0eSBzZXR0ZXJzCiAgICAgdm9pZCBzZXRBbGlnbm1lbnRC
YXNlbGluZShBbGlnbm1lbnRCYXNlbGluZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFn
Qml0cy5hbGlnbm1lbnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CkBA
IC0yNTYsMjAgKzI1Niw2IEBAIHByaXZhdGU6CiAgICAgRGF0YVJlZjxTdHlsZVJlc291cmNlRGF0
YT4gbV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGE7CiB9OwogCi1pbmxpbmUgU1ZHTGVuZ3RoVmFs
dWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKQotewotICAgIFNW
R0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhM
ZW5ndGhUeXBlTnVtYmVyLCAwKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1pbmxpbmUgU1ZH
TGVuZ3RoVmFsdWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKCkKLXsKLSAgICBTVkdM
ZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVu
Z3RoVHlwZU51bWJlciwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQogaW5saW5lIHZvaWQg
U1ZHUmVuZGVyU3R5bGU6OnNldEN4KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIGlmICgh
KG1fbGF5b3V0RGF0YS0+Y3ggPT0gbGVuZ3RoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCmluZGV4IDdkYTkxOTkzZTNmY2U4YjgwYWY4
NTZkY2NlZTVkOGFhYTYwMWJiOWEuLjE3N2MzOTU2YWZjZWU2MjNhODJmNzEzM2IyMjdjOWJkYjEw
MzkxYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
RWxsaXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdF
bGxpcHNlLmNwcApAQCAtNzksOCArNzksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1
bGF0ZVJhZGlpQW5kQ2VudGVyKCkKIHsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRl
eHQoJmdyYXBoaWNzRWxlbWVudCgpKTsKICAgICBtX2NlbnRlciA9IEZsb2F0UG9pbnQoCi0gICAg
ICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN4KCks
IExlbmd0aE1vZGVXaWR0aCksCi0gICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpKTsKKyAgICAgICAgbGVu
Z3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3goKSwgU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgpLAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCkuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKICAgICBpZiAo
aXM8U1ZHQ2lyY2xlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkpKSB7CiAgICAgICAgIGZsb2F0
IHJhZGl1cyA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgp
LnIoKSk7CiAgICAgICAgIG1fcmFkaWkgPSBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpOwpAQCAt
ODksOCArODksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0ZVJhZGlpQW5kQ2Vu
dGVyKCkKIAogICAgIEFTU0VSVChpczxTVkdFbGxpcHNlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50
KCkpKTsKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKAotICAgICAgICBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpLAot
ICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5y
eSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwKKyAg
ICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnko
KSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCmluZGV4IDRiMjRkZmQzZDFkYWEz
NjdlMjM2NzExYjJhYTlkNjQ3ZGFjMWJiNjkuLjY2MWQyMTk0MmM2ZDJmNDYyZmM4NWEwNTc3ZGFl
YzI4ZWI2ZmVjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZWN0LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0ZVNo
YXBlRnJvbUVsZW1lbnQoKQogICAgIG1fdXNlUGF0aEZhbGxiYWNrID0gZmFsc2U7CiAKICAgICBT
VkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJnJlY3RFbGVtZW50KCkpOwotICAgIEZsb2F0
U2l6ZSBib3VuZGluZ0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgp
LndpZHRoKCksIExlbmd0aE1vZGVXaWR0aCksIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCkpOworICAgIEZsb2F0U2l6ZSBib3Vu
ZGluZ0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndpZHRoKCks
IFNWR0xlbmd0aE1vZGU6OldpZHRoKSwgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHls
ZSgpLmhlaWdodCgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKIAogICAgIC8vIEVsZW1lbnQg
aXMgaW52YWxpZCBpZiBlaXRoZXIgZGltZW5zaW9uIGlzIG5lZ2F0aXZlLgogICAgIGlmIChib3Vu
ZGluZ0JveFNpemUud2lkdGgoKSA8IDAgfHwgYm91bmRpbmdCb3hTaXplLmhlaWdodCgpIDwgMCkK
QEAgLTc0LDggKzc0LDggQEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVt
ZW50KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsbEJvdW5kaW5nQm94ID0gRmxvYXRS
ZWN0KEZsb2F0UG9pbnQobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0
eWxlKCkueCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS55KCksIExlbmd0aE1vZGVIZWlnaHQpKSwKKyAg
ICBtX2ZpbGxCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KGxlbmd0aENvbnRleHQu
dmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgpLAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5
bGUoKS55KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpLAogICAgICAgICBib3VuZGluZ0JveFNp
emUpOwogCiAgICAgLy8gVG8gZGVjaWRlIGlmIHRoZSBzdHJva2UgY29udGFpbnMgYSBwb2ludCB3
ZSBjcmVhdGUgdHdvIHJlY3RzIHdoaWNoIHJlcHJlc2VudCB0aGUgaW5uZXIgYW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCmluZGV4IDBmODQ5OWU1M2Iw
MzA1YWQwMDhjZWE0MzgxOGYzZDcxZGVmZWNlNTYuLjJiYWIxODAyYTY1NTRkOTFiNTVhMDk3ODY1
ODgxNmUwMjE3MWMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUGF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0
aERhdGEuY3BwCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxl
bWVudChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dCgmZWxlbWVudCk7CiAgICAgZmxvYXQgciA9IGxlbmd0aENvbnRleHQudmFsdWVG
b3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yKCkpOwogICAgIGlmIChyID4gMCkgewotICAgICAg
ICBmbG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUo
KS5jeCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgICAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRl
eHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBMZW5ndGhNb2RlSGVpZ2h0
KTsKKyAgICAgICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
LnN2Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOworICAgICAgICBmbG9hdCBj
eSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBT
VkdMZW5ndGhNb2RlOjpIZWlnaHQpOwogICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0
KGN4IC0gciwgY3kgLSByLCByICogMiwgciAqIDIpKTsKICAgICB9CiAgICAgcmV0dXJuIHBhdGg7
CkBAIC02NywxNyArNjcsMTcgQEAgc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChj
b25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+
c3R5bGUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVsZW1lbnQpOwot
ICAgIGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHls
ZSgpLnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7CisgICAgZmxvYXQgcnggPSBsZW5ndGhDb250ZXh0
LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgpOwogICAgIGlmIChyeCA8PSAwKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQg
cnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwg
TGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9y
TGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAg
ICBpZiAocnkgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAg
ICBmbG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUo
KS5jeCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52
YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpOwor
ICAgIGZsb2F0IGN4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHls
ZSgpLmN4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICBmbG9hdCBjeSA9IGxlbmd0aENv
bnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQpOwogICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY3ggLSByeCwgY3kgLSBy
eSwgcnggKiAyLCByeSAqIDIpKTsKICAgICByZXR1cm4gcGF0aDsKIH0KQEAgLTEzOCwxOSArMTM4
LDE5IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYg
ZWxlbWVudCkKIAogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgU1ZH
TGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KCZlbGVtZW50KTsKLSAgICBmbG9hdCB3aWR0aCA9
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUud2lkdGgoKSwgTGVuZ3RoTW9kZVdp
ZHRoKTsKKyAgICBmbG9hdCB3aWR0aCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUud2lkdGgoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOwogICAgIGlmICh3aWR0aCA8PSAwKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgaGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52
YWx1ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxv
YXQgaGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBpZiAoaGVpZ2h0IDw9IDApCiAgICAgICAgIHJl
dHVybiB7IH07CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQu
dmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0g
ICAgZmxvYXQgeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUo
KS55KCksIExlbmd0aE1vZGVIZWlnaHQpOwotICAgIGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52
YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0g
ICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxl
KCkucnkoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQu
dmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIFNWR0xlbmd0aE1vZGU6OldpZHRo
KTsKKyAgICBmbG9hdCB5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdT
dHlsZSgpLnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKKyAgICBmbG9hdCByeCA9IGxlbmd0
aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBTVkdMZW5ndGhN
b2RlOjpXaWR0aCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBib29s
IGhhc1J4ID0gcnggPiAwOwogICAgIGJvb2wgaGFzUnkgPSByeSA+IDA7CiAgICAgaWYgKGhhc1J4
IHx8IGhhc1J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKaW5kZXggMGI2M2Q2Y2RmZmI1NWE0
MmVhOTA0NTk4YTAxZDFlNmUyOWFlZjJmYS4uZWQ1N2VhYjVhNGU3YWMxMGZjNGU3NWZhMTJlOGNm
YzFiNDU1YzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdU
ZXh0TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBm
bG9hdCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQo
Y29uc3QgU1ZHUmVuZGVyU3R5bGUmCiB7CiAgICAgaWYgKHN0eWxlLmJhc2VsaW5lU2hpZnQoKSA9
PSBCYXNlbGluZVNoaWZ0OjpMZW5ndGgpIHsKICAgICAgICAgYXV0byBiYXNlbGluZVNoaWZ0VmFs
dWVMZW5ndGggPSBzdHlsZS5iYXNlbGluZVNoaWZ0VmFsdWUoKTsKLSAgICAgICAgaWYgKGJhc2Vs
aW5lU2hpZnRWYWx1ZUxlbmd0aC51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQor
ICAgICAgICBpZiAoYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLmxlbmd0aFR5cGUoKSA9PSBTVkdM
ZW5ndGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lU2hpZnRW
YWx1ZUxlbmd0aC52YWx1ZUFzUGVyY2VudGFnZSgpICogbV9mb250LnBpeGVsU2l6ZSgpOwogCiAg
ICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5l
U3BhY2luZy5jcHAKaW5kZXggNDhkODBhZTk5MjZlMDYzZDllZjIxOTI0MmQzZGU3ODE3OGVjZTRl
NS4uYmNmMzU2YTgxZjhlYWYxOWM4ZDRkOTY4N2E1ZmExMDMxYTU2YzEzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5l
U3BhY2luZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZVNw
YWNpbmc6OmNhbGN1bGF0ZUNTU0tlcm5pbmdBbmRTcGFjaW5nKGNvbnN0IFNWR1JlbmRlclMKIHsK
ICAgICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBhdXRvIGtlcm5pbmdMZW5ndGggPSBzdHlsZS0+
a2VybmluZygpOwotICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2UpCisgICAgaWYgKGtlcm5pbmdMZW5ndGgubGVuZ3RoVHlwZSgpID09IFNWR0xl
bmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZh
bHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxlbWVudCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggZjUyMDE5
ZmZmZTlhNDBhNDA3MmUyMzVjNWNhYjBkZGUxYmQ5MDU1Yy4uNmZkOTViZDZlZWUzMDJjZTRlNWVm
NTE5YzVlMjFhMTY1NzM1NzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVh
ckdyYWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFk
aWVudEF0dHJpYnV0ZXMuaApAQCAtMjYsNyArMjYsNyBAQCBzdHJ1Y3QgTGluZWFyR3JhZGllbnRB
dHRyaWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBMaW5lYXJHcmFkaWVudEF0dHJp
YnV0ZXMoKQogICAgICAgICA6IG1feDEoKQogICAgICAgICAsIG1feTEoKQotICAgICAgICAsIG1f
eDIoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAgICAgICwgbV94MihTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgIjEwMCUiKQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFTZXQoZmFs
c2UpCiAgICAgICAgICwgbV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRp
YWxHcmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA4N2JlNzIyODgxNDNlM2RlMTFjMWQ3NGVlODVh
ZmU4NmNlYjQxMTgwLi42MTIzZGJlOTBmMzc0NzZiMWI0ZThjY2ViZWI3MzYwOWRkZDA3MDU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0y
NSw5ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdyYWRpZW50
QXR0cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGllbnRBdHRy
aWJ1dGVzKCkKLSAgICAgICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0gICAgICAg
ICwgbV9jeShMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQotICAgICAgICAsIG1fcihMZW5ndGhNb2Rl
V2lkdGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUi
KQorICAgICAgICAsIG1fY3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAgICAgICAs
IG1fcihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCiAgICAgICAgICwgbV9jeFNldChmYWxz
ZSkKICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5oCmluZGV4IDRkNDAyZjdmY2Q0NWExZmM3ZTc5NDdkOTYx
ZGU5ZWE1OTE0YmU0NjEuLmNjNDU0NDE4M2NmMGRmOTBmYjdlYjkyYTkzYWEzZGYxZWIzMTUyOGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaApAQCAtNTYsMTAgKzU2LDQgQEAgcHJpdmF0
ZToKICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKIH07CiAKLXRlbXBs
YXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZVZhbHVlPiB7Ci0gICAgc3Rh
dGljIFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGVWYWx1ZSgp
OyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdBbmdsZVZhbHVlJiB0eXBl
KSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKLQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IGQ5MzA0MGExZjU2YWFlZmY1YzI5MjFkNDZh
YjczZGIxMDhhZDc4ZjQuLjQ5ZDQ1OTMyZjA3MWUzNTQyOGI3MTI5NDBiM2ViNTAxZTU0OGY1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTU0LDExICs1NCwx
MSBAQCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVy
cm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAg
ICAgIG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
Y3lBdHRyKQotICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAg
ICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJv
ciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVl
LCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAg
ICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXggNzIwZjMxMGU2NDBmODJk
YmVlNjY3MDY0M2Y3OTMxM2I0ZjVlZmE4NS4uNzFiNzYzMGQyM2JkNTFhZjRhOGMxMzE5MmZmNGI4
YzNkYjBiM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC01NSw5
ICs1NSw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBm
aW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMg
fTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1v
ZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA1Y2Q3ZDE5ZGU5Mzk1
ZWUxZmY0NWQwYjdlNDZlODUzZTBiYmY3NDQ3Li4yZmQ1NzY2NDliNzIyOGVhMGZkMjVlYWVkY2E3
MzVkODQyNTNhODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBA
IC02NCw5ICs2NCw5IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgU1ZHUGFyc2luZ0Vy
cm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhB
dHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhN
b2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwor
ICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmluZGV4IGVkNjRkNWZhMTllODM1ZjkwODA1MzI1
NTVmMTdjOGNmNDc0NGMwMjIuLjVkZDRkNGJkN2ZiMmI2ZWI1ZDFlZTE0NDE2ZTNmYTQzZDVkZWUy
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNjEsOCArNjEsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNo
U2V0PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29y
SW1hZ2VWYWx1ZSo+IG1fY2xpZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuY3BwCmluZGV4IDgzMzJlYjVkYmZjMjhmODYyNzgyNGJmODg5ZjhmMzQ2MDY2ZDM0
MWMuLmFkYjZjYmNhNDIzOWY3OGI2YjkwMzA2NzQ4ZWIwM2MyNTY2NmFiMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQg
U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vy
cm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0g
ICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3ktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpyeEF0dHIpCi0gICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJp
ZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9y
YmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFt
ZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IDMw
MzU1OGUwMmU1M2ZmYTI4ODFmMTM1ZjBhZTgxNTllNzE1YzNjMGIuLmNhMDdiM2YxYmNmYzZhYzgz
MTJhODlkNTI4MWIzYzJiYWVkZDQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGxpcHNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5oCkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRl
clRyZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5
UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcngg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X2N4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0
aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xl
bmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVs
ZW1lbnQuY3BwCmluZGV4IDI0YzZjNTJmNDgzOGY3MmFjM2I4ZTZjNzk0YThiNWI3OTcwMjcxYmMu
LjE4NmI3NzFlNThlM2RhOGMyMWExMmUxZmQ4OGMzMWIwMWE0MWU1YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCB2b2lkIFNWR0Zp
bHRlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbgogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAg
ICBtX3ByaW1pdGl2ZVVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdV
bml0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAg
IG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIp
Ci0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0
cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5kZXggMTU4OWE2YzQyYmRhODc3MTQ1ZDVlMDczN2Vj
OGZhMWY0YWJjZWVkZi4uNTkwMzIwOTU5Y2U5ZWQ0YmYyYjk0ZmVmYWU0YzYxZTBkNDZjYjE5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCkBAIC02OSwxMCArNjksMTAgQEAg
cHJpdmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fZmlsdGVyVW5pdHMgeyBTVkdB
bmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9u
PiBtX3ByaW1pdGl2ZVVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMs
IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIt
MTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiLTEw
JSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEyMCUiKSB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEyMCUiKSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAzNjRjYjI4MGYzMjc5
ZjIwZjUyNmE2MWM4YTMyMzEwM2NjNDdiZWM4Li4zMGRhNDM0ZjRjZDM5ZDBhYzIwMTRjNzc3NmE1
MjhhNzgyNDMyODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBA
IHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3Ig
PSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBt
X3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikK
LSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVz
dWx0QXR0cikKICAgICAgICAgbV9yZXN1bHQtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAppbmRleCBjMjgxNmRhMzYzNWQwNjU2M2I5MWM4MzUwOGJkODEzOGNi
MzlhYjk0Li5jOThiMTNlZDk2Mjc2YWY5ZTE0ZjY0MjgxMWE2ZmQ3NDY3NzJhY2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5oCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNwZWM6
IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3
aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMg
aWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCwgIjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIwJSIp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjAlIikgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jl
c3VsdCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDVhY2Q1ZmNi
MzE5ODBkZTdiOGU2NmIwOGQzYzVkMzViNjA3YjI4MjkuLjdmZjNiODY3ZmM1OTJkOGRiMjNhZmE0
NjUwZmY3ZTZjYjBmMzNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAg
ICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV93aWR0aC0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCmlu
ZGV4IDAyYTE5NGM0MTdhN2FiNzczMDQxNDgyNzdkM2Y5ZTY0OWZiMDY4YTQuLmRiMjA0MzM5NTVl
YmUyMzQxM2U2MDk2YWI1NDVhN2JlMzk0OGMwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHJpdmF0ZToKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkg
fTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93
aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApp
bmRleCA5NjcwZTI2NDQwNjdjZmRhYjM0NzMwMzUxOWIxNGYwZmMxOGYxNmI3Li43YjY0YTAyMTRh
M2JhMGYwZTg1MWM0NWQwZTlkNzM0NDIxYzc2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcApAQCAtNzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5n
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocykp
OworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0
aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggOWZiNTc4Njg3
NWZiMTE0YzUyMzI4NjVlNGUwODNhZWIzZmNhODQwMy4uZWFmZjYxODZkODlkOTM0OGZiY2ExNTE4
NWRkZmFhNmEwZGVkZDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAt
NjksMTAgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChE
b2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
aGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFByZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbyB7IFNWR0FuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZHSW1hZ2VMb2FkZXIg
bV9pbWFnZUxvYWRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKaW5kZXggZmYwZmQzNTE0YjI2
M2UxMzhkNWNjYTkwN2YzYTc5ODdiNmYzYjllZi4uN2U3YzExNDk2ZjgyNTg4ODJlMjQ4Mjk1Mzdj
MzEzZjQ5MDYwNTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaApAQCAtMjUsNiArMjUsNyBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRl
ICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIApAQCAt
MzgsMTcgKzM5LDE3IEBAIGNsYXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5
PFNWR0xlbmd0aFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNl
IGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uCiAgICAg
ZW51bSB7Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5ndGhUeXBlVW5rbm93
biwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSID0gTGVuZ3RoVHlwZU51bWJlciwKLSAg
ICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQZXJjZW50YWdlLAot
ICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBlRU1TLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9FWFMgPSBMZW5ndGhUeXBlRVhTLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
WCA9IExlbmd0aFR5cGVQWCwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gPSBMZW5ndGhUeXBl
Q00sCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX01NID0gTGVuZ3RoVHlwZU1NLAotICAgICAgICBT
VkdfTEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
UFQgPSBMZW5ndGhUeXBlUFQsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BDID0gTGVuZ3RoVHlw
ZVBDCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgICA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihTVkdMZW5ndGhUeXBlOjpVbmtub3duKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
TlVNQkVSICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6Ok51bWJl
ciksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZ
UEVfRU1TICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkVN
UyksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihTVkdMZW5ndGhUeXBlOjpFWFMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCAg
ICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UFgpLAorICAg
ICAgICBTVkdfTEVOR1RIVFlQRV9DTSAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
U1ZHTGVuZ3RoVHlwZTo6Q00pLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9NTSAgICAgICAgICAg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6TU0pLAorICAgICAgICBTVkdf
TEVOR1RIVFlQRV9JTiAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3Ro
VHlwZTo6SU4pLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCAgICAgICAgICAgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UFQpLAorICAgICAgICBTVkdfTEVOR1RIVFlQ
RV9QQyAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UEMp
CiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoKQpAQCAtNzksOSAr
ODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVl
KTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSgpCisgICAgdW5zaWduZWQg
c2hvcnQgdW5pdFR5cGUoKSAgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLnVu
aXRUeXBlKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5s
ZW5ndGhUeXBlKCkpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJp
bmRpbmdzKCkKQEAgLTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25s
eSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dl
ZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVl
LCBTVkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVu
dCgpIH0sIHZhbHVlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtMTM1LDEyICsxMzYsMTIgQEAgcHVi
bGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1
bHQgPSBtX3ZhbHVlLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVj
aWZpZWRVbml0cyk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAKKyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNW
R19MRU5HVEhUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAg
ICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAg
ICAgIG1fdmFsdWUgPSB7IHZhbHVlSW5TcGVjaWZpZWRVbml0cywgc3RhdGljX2Nhc3Q8U1ZHTGVu
Z3RoVHlwZT4odW5pdFR5cGUpLCBtX3ZhbHVlLmxlbmd0aE1vZGUoKSB9OwogICAgICAgICBjb21t
aXRDaGFuZ2UoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5p
dHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpCkBAIC0xNDgsMTAgKzE0OSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9
IG1fdmFsdWUuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRl
eHQgeyBjb250ZXh0RWxlbWVudCgpIH0pOworICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xF
TkdUSFRZUEVfVU5LTk9XTiB8fCB1bml0VHlwZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAg
YXV0byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKFNWR0xlbmd0aENv
bnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0sIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVu
aXRUeXBlKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICAKKwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHAKaW5kZXggMDgwMDAxNzZiYWMwZmI5MGZlYTM1MGZmZDYyZTU2ZWM0YmJjMTI5ZS4u
MDk5NTRmYjIyOWJhOGM3NDBhNGNiYmIzNjNhMzU5MGRmYjFlM2NmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtk
ZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMg
PGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRv
YmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODUs
MTAgKzg1LDEwIEBAIGZsb2F0IFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVMZW5ndGgoY29uc3Qg
U1ZHRWxlbWVudCogY29udGV4dCwgU1ZHVW5pdFR5cGVzOjpTCiAgICAgcmV0dXJuIHgudmFsdWVB
c1BlcmNlbnRhZ2UoKTsKIH0KIAotZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK2Zsb2F0IFNWR0xl
bmd0aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBTVkdMZW5n
dGhNb2RlIGxlbmd0aE1vZGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkgewotICAg
ICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMo
bGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZl
cnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIGxl
bmd0aE1vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7
CkBAIC05OSw0OSArOTksNDkgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5n
dGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKICAgICBGbG9hdFNp
emUgdmlld3BvcnRTaXplOwogICAgIGRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CiAK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0
Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAg
ICByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIHZpZXdwb3J0U2l6ZS53aWR0aCgp
KTsKLSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQ6CiAgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgdmlld3Bv
cnRTaXplLmhlaWdodCgpKTsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNW
R0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChs
ZW5ndGgsIHN0ZDo6c3FydCh2aWV3cG9ydFNpemUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAy
KSk7CiAgICAgfTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xl
bmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5n
dGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQpIGNvbnN0CitFeGNlcHRpb25Pcjxm
bG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFs
dWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBj
b25zdAogewogICAgIC8vIElmIHRoZSBTVkdMZW5ndGhDb250ZXh0IGNhcnJpZXMgYSBjdXN0b20g
dmlld3BvcnQsIGZvcmNlIHJlc29sdmluZyBhZ2FpbnN0IGl0LgogICAgIGlmICghbV9vdmVycmlk
ZGVuVmlld3BvcnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIDEwMCUgPSAxMDAuMCBpbnN0ZWFk
IG9mIDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlzIGNvdWxkIGV2ZW50dWFsbHkgYmUg
Y2hhbmdlZAotICAgICAgICBpZiAoZnJvbVVuaXQgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisg
ICAgICAgIGlmIChsZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAg
ICAgICAgICB2YWx1ZSAvPSAxMDA7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVy
Y2VudGFnZVRvVXNlclVuaXRzKHZhbHVlLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRW
YWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUsIGxlbmd0aE1vZGUpOwogICAgIH0K
IAotICAgIHN3aXRjaCAoZnJvbVVuaXQpIHsKLSAgICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgor
ICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93
bjoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAg
Y2FzZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOgog
ICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBT
VkdMZW5ndGhUeXBlOjpQWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZVBlcmNlbnRhZ2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFn
ZVRvVXNlclVuaXRzKHZhbHVlIC8gMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29u
dmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEwMCwgbGVuZ3RoTW9k
ZSk7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0
VmFsdWVGcm9tRU1TVG9Vc2VyVW5pdHModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoK
KyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVYUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1
ZUZyb21FWFNUb1VzZXJVbml0cyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAg
Y2FzZSBTVkdMZW5ndGhUeXBlOjpDTToKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxz
UGVySW5jaCAvIDIuNTRmOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVu
Z3RoVHlwZTo6TU06CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAy
NS40ZjsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OklO
OgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVu
Z3RoVHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAgIHJldHVybiB2
YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAg
ICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBDOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhl
bHNQZXJJbmNoIC8gNjsKICAgICB9CiAKQEAgLTE0OSwzMCArMTQ5LDMwIEBAIEV4Y2VwdGlvbk9y
PGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2
YWx1ZSwgU1ZHTGVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdM
ZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdM
ZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdAorRXhjZXB0aW9uT3I8
ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQg
dmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2Rl
KSBjb25zdAogewotICAgIHN3aXRjaCAodG9Vbml0KSB7Ci0gICAgY2FzZSBMZW5ndGhUeXBlVW5r
bm93bjoKKyAgICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6
OlVua25vd246CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9
OwotICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51
bWJlcjoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRh
Z2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJjZW50YWdl
KHZhbHVlICogMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAgY2FzZSBT
VkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJv
bVVzZXJVbml0c1RvUGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgbGVuZ3RoTW9kZSk7CisgICAgY2Fz
ZSBTVkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNl
clVuaXRzVG9FTVModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBjYXNlIFNW
R0xlbmd0aFR5cGU6OkVYUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5p
dHNUb0VYUyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpQWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNN
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIDIu
NTRmIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICBjYXNl
IFNWR0xlbmd0aFR5cGU6Ok1NOgogICAgICAgICByZXR1cm4gdmFsdWUgKiAyNS40ZiAvIGNzc1Bp
eGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpJTjoKICAgICAgICAgcmV0dXJuIHZhbHVlIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBj
YXNlIExlbmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBUOgogICAgICAgICBy
ZXR1cm4gdmFsdWUgKiA3MiAvIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBl
UEM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKICAgICAgICAgcmV0dXJuIHZhbHVlICog
NiAvIGNzc1BpeGVsc1BlckluY2g7CiAgICAgfQogCkBAIC0xODAsMTggKzE4MCwxOCBAQCBFeGNl
cHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0
cyhmbG9hdCB2YWx1ZSwgU1ZHTAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9h
dD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFn
ZShmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8Zmxv
YXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRh
Z2UoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBG
bG9hdFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3Bv
cnRTaXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CiAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBz
d2l0Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAg
ICAgICByZXR1cm4gdmFsdWUgLyB2aWV3cG9ydFNpemUud2lkdGgoKSAqIDEwMDsKLSAgICBjYXNl
IExlbmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAg
ICAgIHJldHVybiB2YWx1ZSAvIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIDEwMDsKLSAgICBjYXNl
IExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAg
ICByZXR1cm4gdmFsdWUgLyAoc3RkOjpzcXJ0KHZpZXdwb3J0U2l6ZS5kaWFnb25hbExlbmd0aFNx
dWFyZWQoKSAvIDIpKSAqIDEwMDsKICAgICB9OwogCkBAIC0xOTksMTggKzE5OSwxOCBAQCBFeGNl
cHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0
c1RvUGVyY2VudGFnZShmbG9hdAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9h
dD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0
cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8Zmxv
YXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5p
dHMoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBG
bG9hdFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3Bv
cnRTaXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07
CiAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBz
d2l0Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAg
ICAgICByZXR1cm4gdmFsdWUgKiB2aWV3cG9ydFNpemUud2lkdGgoKTsKLSAgICBjYXNlIExlbmd0
aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAgIHJl
dHVybiB2YWx1ZSAqIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKLSAgICBjYXNlIExlbmd0aE1vZGVP
dGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFs
dWUgKiBzdGQ6OnNxcnQodmlld3BvcnRTaXplLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIC8gMik7
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgKaW5kZXggOGU5N2Uy
MTRiOWIzNTJhODg5MDQ1ZWMyYTI5MmI5NWQ1ZTdhNzM3MS4uZDNjYzRmYTcwMDkyYWU1MGM0Yzc1
Yzc5MjhmZjg3ZWQ2YzEwMjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5o
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAg
LTIxLDM1ICsyMiwxNSBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJG
bG9hdFJlY3QuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1Vu
aXRUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7Ci1j
bGFzcyBTVkdMZW5ndGhWYWx1ZTsKIAogc3RydWN0IExlbmd0aDsKIAotZW51bSBTVkdMZW5ndGhU
eXBlIHsKLSAgICBMZW5ndGhUeXBlVW5rbm93biA9IDAsCi0gICAgTGVuZ3RoVHlwZU51bWJlciwK
LSAgICBMZW5ndGhUeXBlUGVyY2VudGFnZSwKLSAgICBMZW5ndGhUeXBlRU1TLAotICAgIExlbmd0
aFR5cGVFWFMsCi0gICAgTGVuZ3RoVHlwZVBYLAotICAgIExlbmd0aFR5cGVDTSwKLSAgICBMZW5n
dGhUeXBlTU0sCi0gICAgTGVuZ3RoVHlwZUlOLAotICAgIExlbmd0aFR5cGVQVCwKLSAgICBMZW5n
dGhUeXBlUEMKLX07Ci0KLWVudW0gU1ZHTGVuZ3RoTW9kZSB7Ci0gICAgTGVuZ3RoTW9kZVdpZHRo
ID0gMCwKLSAgICBMZW5ndGhNb2RlSGVpZ2h0LAotICAgIExlbmd0aE1vZGVPdGhlcgotfTsKLQog
Y2xhc3MgU1ZHTGVuZ3RoQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHTGVuZ3Ro
Q29udGV4dChjb25zdCBTVkdFbGVtZW50Kik7CkBAIC02NCw5ICs0NSw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgRmxvYXRQb2ludCByZXNvbHZlUG9pbnQoY29uc3QgU1ZHRWxlbWVudCosIFNWR1Vu
aXRUeXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4LCBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgeSk7CiAgICAgc3RhdGljIGZsb2F0IHJlc29sdmVMZW5ndGgoY29uc3QgU1ZH
RWxlbWVudCosIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVl
Jik7CiAKLSAgICBmbG9hdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhN
b2RlID0gTGVuZ3RoTW9kZU90aGVyKTsKLSAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZh
bHVlVG9Vc2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVu
aXQpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzKGZsb2F0LCBTVkdMZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlIHRvVW5pdCkgY29uc3Q7Cisg
ICAgZmxvYXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgU1ZHTGVuZ3RoTW9kZSA9IFNW
R0xlbmd0aE1vZGU6Ok90aGVyKTsKKyAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVl
VG9Vc2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUpIGNvbnN0Owor
ICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0LCBT
VkdMZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlKSBjb25zdDsKIAogICAgIGJvb2wgZGV0ZXJtaW5l
Vmlld3BvcnQoRmxvYXRTaXplJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5o
CmluZGV4IGIwMTQ3ZmEyMzRmNGQ5YTg4ZjlmYzlmMzFkNWYzODg5NzMxNjc2OTUuLjVlYjU3MDFj
Njc0Njg3OTJkMDU2MmMxNWI1MjE2YjQ5MmMwMjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aExpc3QuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNW
R1ZhbHVlUHJvcGVydHlMaXN0PFNWR0xlbmd0aD4gewogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShTVkdMZW5ndGhN
b2RlIGxlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIpCisgICAgc3RhdGljIFJlZjxTVkdMZW5n
dGhMaXN0PiBjcmVhdGUoU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6
T3RoZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0
KGxlbmd0aE1vZGUpKTsKICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB7
CiAgICAgfQogCi0gICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBMZW5ndGhNb2RlT3Ro
ZXIgfTsKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7IFNWR0xlbmd0aE1vZGU6Ok90
aGVyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xl
bmd0aFZhbHVlLmNwcAppbmRleCBkZDJlZGUxNGZiNzE3YzE2YTBmYjhlNjAyYTQxYWU5ODc0YTEx
OGVmLi41MDQ0MzIwZGUxMTAzZTYzODg3NTk3YzFmYjY1OGFkZGQ5ZTc1NjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw1OCArMjIsMzcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogCi0jaW5j
bHVkZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIK
LSNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgot
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8v
IEhlbHBlciBmdW5jdGlvbnMKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc3RvcmVVbml0KFNWR0xl
bmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBjb25zdCBj
aGFyKiBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewotICAg
IHJldHVybiAobW9kZSA8PCA0KSB8IHR5cGU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3Ro
TW9kZSBleHRyYWN0TW9kZSh1bnNpZ25lZCB1bml0KQotewotICAgIHVuc2lnbmVkIG1vZGUgPSB1
bml0ID4+IDQ7ICAgIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhNb2RlPihtb2Rl
KTsKLX0KLQotc3RhdGljIGlubGluZSBTVkdMZW5ndGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVk
IHVuaXQpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXQgJiAo
KDEgPDwgNCkgLSAxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbGVuZ3RoVHlw
ZVRvU3RyaW5nKFNWR0xlbmd0aFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgotICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAg
ICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVua25vd246
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiAiIjsgICAg
Ci0gICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6
OlBlcmNlbnRhZ2U6CiAgICAgICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1T
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RU1TOgogICAgICAgICByZXR1cm4gImVtIjsKLSAg
ICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFWFM6CiAgICAg
ICAgIHJldHVybiAiZXgiOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAgIGNhc2UgU1ZHTGVu
Z3RoVHlwZTo6UFg6CiAgICAgICAgIHJldHVybiAicHgiOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNN
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006CiAgICAgICAgIHJldHVybiAiY20iOwotICAg
IGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TU06CiAgICAgICAg
IHJldHVybiAibW0iOwotICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6SU46CiAgICAgICAgIHJldHVybiAiaW4iOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAgIHJldHVybiAicHQiOwotICAgIGNh
c2UgTGVuZ3RoVHlwZVBDOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UEM6CiAgICAgICAgIHJl
dHVybiAicGMiOwogICAgIH0KIApAQCAtODEsOTAgKzYwLDE4MyBAQCBzdGF0aWMgaW5saW5lIGNv
bnN0IGNoYXIqIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhUeXBlIHR5cGUpCiAgICAgcmV0
dXJuICIiOwogfQogCi1pbmxpbmUgU1ZHTGVuZ3RoVHlwZSBwYXJzZUxlbmd0aFR5cGUoY29uc3Qg
VUNoYXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlw
ZSBwYXJzZUxlbmd0aFR5cGUoY29uc3QgVUNoYXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKIHsK
ICAgICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVOdW1iZXI7Cisg
ICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CiAKICAgICBjb25zdCBVQ2hhciBm
aXJzdENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJu
IGZpcnN0Q2hhciA9PSAnJScgPyBMZW5ndGhUeXBlUGVyY2VudGFnZSA6IExlbmd0aFR5cGVVbmtu
b3duOworICAgICAgICByZXR1cm4gZmlyc3RDaGFyID09ICclJyA/IFNWR0xlbmd0aFR5cGU6OlBl
cmNlbnRhZ2UgOiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwogCiAgICAgY29uc3QgVUNoYXIgc2Vj
b25kQ2hhciA9ICpwdHI7CiAKICAgICBpZiAoKytwdHIgIT0gZW5kKQotICAgICAgICByZXR1cm4g
TGVuZ3RoVHlwZVVua25vd247CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpVbmtub3du
OwogCiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnZScgJiYgc2Vjb25kQ2hhciA9PSAnbScpCi0gICAg
ICAgIHJldHVybiBMZW5ndGhUeXBlRU1TOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
RU1TOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENoYXIgPT0gJ3gnKQotICAg
ICAgICByZXR1cm4gTGVuZ3RoVHlwZUVYUzsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6
OkVYUzsKICAgICBpZiAoZmlyc3RDaGFyID09ICdwJyAmJiBzZWNvbmRDaGFyID09ICd4JykKLSAg
ICAgICAgcmV0dXJuIExlbmd0aFR5cGVQWDsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6
OlBYOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2MnICYmIHNlY29uZENoYXIgPT0gJ20nKQotICAg
ICAgICByZXR1cm4gTGVuZ3RoVHlwZUNNOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
Q007CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnbScgJiYgc2Vjb25kQ2hhciA9PSAnbScpCi0gICAg
ICAgIHJldHVybiBMZW5ndGhUeXBlTU07CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpN
TTsKICAgICBpZiAoZmlyc3RDaGFyID09ICdpJyAmJiBzZWNvbmRDaGFyID09ICduJykKLSAgICAg
ICAgcmV0dXJuIExlbmd0aFR5cGVJTjsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OklO
OwogICAgIGlmIChmaXJzdENoYXIgPT0gJ3AnICYmIHNlY29uZENoYXIgPT0gJ3QnKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoVHlwZVBUOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UFQ7
CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAnYycpCi0gICAgICAg
IHJldHVybiBMZW5ndGhUeXBlUEM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQQzsK
IAotICAgIHJldHVybiBMZW5ndGhUeXBlVW5rbm93bjsKKyAgICByZXR1cm4gU1ZHTGVuZ3RoVHlw
ZTo6VW5rbm93bjsKIH0KIAotU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0
aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQotICAgIDogbV91bml0KHN0
b3JlVW5pdChtb2RlLCBMZW5ndGhUeXBlTnVtYmVyKSkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3Ro
VHlwZSBwcmltaXRpdmVUeXBlVG9MZW5ndGhUeXBlKHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5
cGUpCiB7Ci0gICAgc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKKyAgICBzd2l0Y2gg
KHByaW1pdGl2ZVR5cGUpIHsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
OgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOworICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlw
ZTo6UGVyY2VudGFnZTsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOgorICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RU1TOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FWFM6CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpFWFM7CisgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlw
ZTo6UFg7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOgorICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoVHlwZTo6Q007CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01N
OgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TU07CisgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lOOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6SU47CisgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3Ro
VHlwZTo6UFQ7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgorICAgICAgICBy
ZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UEM7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1VOS05PV046CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlVu
a25vd247CisgICAgfQogfQogCi1TVkdMZW5ndGhWYWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3Qg
U1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9k
ZSwgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSkKLSAgICA6IG1fdW5pdChzdG9yZVVuaXQobW9kZSwg
dW5pdFR5cGUpKQorc3RhdGljIGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgbGVu
Z3RoVHlwZVRvUHJpbWl0aXZlVHlwZShTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAg
c2V0VmFsdWUodmFsdWUsIGNvbnRleHQpOworICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAg
IGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVU5LTk9XTjsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51bWJlcjoKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAgIGNhc2UgU1ZH
TGVuZ3RoVHlwZTo6UGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEVSQ0VOVEFHRTsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVNUzoKKyAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlw
ZTo6RVhTOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7CisgICAg
Y2FzZSBTVkdMZW5ndGhUeXBlOjpQWDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFg7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDTToKKyAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNTToKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpJTjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQVDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFQ7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7CisgICAgfQogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlQXNT
dHJpbmcsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1
ZShTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykK
KyAgICA6IG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzID0gMDsKLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQobW9kZSwgTGVuZ3RoVHlwZU51bWJl
cik7Ci0gICAgcmV0dXJuIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CisgICAgc2V0
VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6
b3BlcmF0b3I9PShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhW
YWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5n
dGhUeXBlIGxlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICA6IG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICAsIG1fbGVuZ3Ro
VHlwZShsZW5ndGhUeXBlKQorICAgICwgbV9sZW5ndGhNb2RlKGxlbmd0aE1vZGUpCiB7Ci0gICAg
cmV0dXJuIG1fdW5pdCA9PSBvdGhlci5tX3VuaXQgJiYgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMg
PT0gb3RoZXIubV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgQVNTRVJUKG1fbGVuZ3RoVHlw
ZSAhPSBTVkdMZW5ndGhUeXBlOjpVbmtub3duKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6
b3BlcmF0b3IhPShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhW
YWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhN
b2RlKQorICAgIDogbV9sZW5ndGhUeXBlKGxlbmd0aFR5cGUpCisgICAgLCBtX2xlbmd0aE1vZGUo
bGVuZ3RoTW9kZSkKIHsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOworICAgIHNldFZh
bHVlKGNvbnRleHQsIHZhbHVlKTsKIH0KIAotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmlu
ZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQorU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0
cmluZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVl
c01vZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQogewotICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aCht
b2RlKTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobGVuZ3RoTW9kZSk7CiAKICAgICBpZiAo
bGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZykuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHBhcnNlRXJyb3IgPSBQYXJzaW5nQXR0cmlidXRlRmFpbGVkRXJyb3I7Ci0gICAgZWxz
ZSBpZiAobmVnYXRpdmVWYWx1ZXNNb2RlID09IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocyAmJiBsZW5n
dGgudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQorICAgIGVsc2UgaWYgKG5lZ2F0aXZlVmFs
dWVzTW9kZSA9PSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCAmJiBsZW5ndGgu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQogICAgICAgICBwYXJzZUVycm9yID0gTmVnYXRp
dmVWYWx1ZUZvcmJpZGRlbkVycm9yOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotU1ZHTGVu
Z3RoVHlwZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdFR5cGUoKSBjb25zdAorU1ZHTGVuZ3RoVmFsdWUg
U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgdG8sIGZsb2F0IHByb2dyZXNzKQoreworICAgIGlmICgoZnJvbS5pc1pl
cm8oKSAmJiB0by5pc1plcm8oKSkKKyAgICAgICAgfHwgZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZH
TGVuZ3RoVHlwZTo6VW5rbm93bgorICAgICAgICB8fCB0by5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVu
Z3RoVHlwZTo6VW5rbm93bgorICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgZnJvbS5sZW5n
dGhUeXBlKCkgIT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSAmJiB0by5sZW5ndGhUeXBlKCkg
PT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKKyAgICAgICAgfHwgKCF0by5pc1plcm8oKSAg
ICYmIGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgJiYgdG8u
bGVuZ3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCisgICAgICAgIHx8ICgh
ZnJvbS5pc1plcm8oKSAmJiAhdG8uaXNaZXJvKCkgJiYgKGZyb20ubGVuZ3RoVHlwZSgpID09IFNW
R0xlbmd0aFR5cGU6OkVNUyB8fCBmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpF
WFMpICYmIGZyb20ubGVuZ3RoVHlwZSgpICE9IHRvLmxlbmd0aFR5cGUoKSkpCisgICAgICAgIHJl
dHVybiB0bzsKKworICAgIGlmIChmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQ
ZXJjZW50YWdlIHx8IHRvLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdl
KSB7CisgICAgICAgIGF1dG8gZnJvbVBlcmNlbnQgPSBmcm9tLnZhbHVlQXNQZXJjZW50YWdlKCkg
KiAxMDA7CisgICAgICAgIGF1dG8gdG9QZXJjZW50ID0gdG8udmFsdWVBc1BlcmNlbnRhZ2UoKSAq
IDEwMDsKKyAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVy
Y2VudCwgcHJvZ3Jlc3MpLCBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlIH07CisgICAgfQorCisg
ICAgaWYgKGZyb20ubGVuZ3RoVHlwZSgpID09IHRvLmxlbmd0aFR5cGUoKSB8fCBmcm9tLmlzWmVy
bygpIHx8IHRvLmlzWmVybygpIHx8IGZyb20uaXNSZWxhdGl2ZSgpIHx8IGZyb20uaXNSZWxhdGl2
ZSgpKSB7CisgICAgICAgIGF1dG8gZnJvbVZhbHVlID0gZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5p
dHMoKTsKKyAgICAgICAgYXV0byB0b1ZhbHVlID0gdG8udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7
CisgICAgICAgIHJldHVybiB7IFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJv
Z3Jlc3MpLCB0by5pc1plcm8oKSA/IGZyb20ubGVuZ3RoVHlwZSgpIDogdG8ubGVuZ3RoVHlwZSgp
IH07CisgICAgfQorCisgICAgU1ZHTGVuZ3RoQ29udGV4dCBub25SZWxhdGl2ZUxlbmd0aENvbnRl
eHQobnVsbHB0cik7CisgICAgYXV0byBmcm9tVmFsdWVJblVzZXJVbml0cyA9IG5vblJlbGF0aXZl
TGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmcm9tLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpLCBmcm9tLmxlbmd0aFR5cGUoKSwgZnJvbS5sZW5ndGhNb2RlKCkpOworICAgIGlm
IChmcm9tVmFsdWVJblVzZXJVbml0cy5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8gZnJvbVZhbHVlID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNvbnZl
cnRWYWx1ZUZyb21Vc2VyVW5pdHMoZnJvbVZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJldHVyblZh
bHVlKCksIHRvLmxlbmd0aFR5cGUoKSwgdG8ubGVuZ3RoTW9kZSgpKTsKKyAgICBpZiAoZnJvbVZh
bHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgZmxvYXQgdG9W
YWx1ZSA9IHRvLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgIHJldHVybiB7IFdlYkNvcmU6
OmJsZW5kKGZyb21WYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgdG9WYWx1ZSwgcHJvZ3Jlc3Mp
LCB0by5sZW5ndGhUeXBlKCkgfTsKK30KKworU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6
OmZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIGV4dHJhY3RUeXBlKG1fdW5pdCk7CisgICAgU1ZHTGVuZ3RoVHlwZSBsZW5n
dGhUeXBlID0gcHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSh2YWx1ZS5wcmltaXRpdmVUeXBlKCkp
OworICAgIHJldHVybiBsZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlVua25vd24gPyBTVkdM
ZW5ndGhWYWx1ZSgpIDogU1ZHTGVuZ3RoVmFsdWUodmFsdWUuZmxvYXRWYWx1ZSgpLCBsZW5ndGhU
eXBlKTsKIH0KIAotU1ZHTGVuZ3RoTW9kZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdE1vZGUoKSBjb25z
dAorUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVW
YWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgbGVuZ3RoKQogewotICAgIHJldHVybiBleHRyYWN0
TW9kZShtX3VuaXQpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxlbmd0
aC52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSwgbGVuZ3RoVHlwZVRvUHJpbWl0aXZlVHlwZShsZW5n
dGgubGVuZ3RoVHlwZSgpKSk7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVl
OjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZywgU1ZHTGVuZ3Ro
TW9kZSBsZW5ndGhNb2RlKQoreworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gMDsKKyAg
ICBtX2xlbmd0aE1vZGUgPSBsZW5ndGhNb2RlOworICAgIG1fbGVuZ3RoVHlwZSA9IFNWR0xlbmd0
aFR5cGU6Ok51bWJlcjsKKyAgICByZXR1cm4gc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5n
KTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRl
eHQmIGNvbnRleHQpIGNvbnN0CkBAIC0xNzUsMzcgKzI0NywzNSBAQCBmbG9hdCBTVkdMZW5ndGhW
YWx1ZTo6dmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogfQogCi1FeGNlcHRpb25PcjxmbG9h
dD4gU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlRm9yQmluZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29udGV4
dCYgY29udGV4dCkgY29uc3QKK1N0cmluZyBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuY29udmVydFZhbHVlVG9Vc2VyVW5pdHMobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMsIGV4dHJhY3RNb2RlKG1fdW5pdCksIGV4dHJhY3RUeXBlKG1f
dW5pdCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVj
aXNpb24obV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpLCBsZW5ndGhUeXBlVG9TdHJpbmcobV9sZW5n
dGhUeXBlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1
ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3Ro
TW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlKQorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNW
R0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNv
bnRleHQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFNlZW1zIGxpa2UgYSBidWcgdGhhdCB3ZSBj
aGFuZ2UgdGhlIHZhbHVlIG9mIG1fdW5pdCBldmVuIGlmIHNldFZhbHVlIHRocm93cyBhbiBleGNl
cHRpb24uCi0gICAgbV91bml0ID0gc3RvcmVVbml0KG1vZGUsIHVuaXRUeXBlKTsKLSAgICByZXR1
cm4gc2V0VmFsdWUodmFsdWUsIGNvbnRleHQpOworICAgIHJldHVybiBjb250ZXh0LmNvbnZlcnRW
YWx1ZVRvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzLCBtX2xlbmd0aFR5cGUsIG1f
bGVuZ3RoTW9kZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRW
YWx1ZShmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkKK0V4Y2Vw
dGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250
ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSkKIHsKICAgICAvLyAxMDAlID0gMTAwLjAgaW5zdGVh
ZCBvZiAxLjAgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcyBjb3VsZCBldmVudHVhbGx5IGJl
IGNoYW5nZWQKLSAgICBpZiAoZXh0cmFjdFR5cGUobV91bml0KSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSkKKyAgICBpZiAobV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2Up
CiAgICAgICAgIHZhbHVlID0gdmFsdWUgLyAxMDA7CiAKLSAgICBhdXRvIGNvbnZlcnRlZFZhbHVl
ID0gY29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKHZhbHVlLCBleHRyYWN0TW9kZSht
X3VuaXQpLCBleHRyYWN0VHlwZShtX3VuaXQpKTsKKyAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0g
Y29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKHZhbHVlLCBtX2xlbmd0aFR5cGUsIG1f
bGVuZ3RoTW9kZSk7CiAgICAgaWYgKGNvbnZlcnRlZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gY29udmVydGVkVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gY29udmVydGVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KLWZsb2F0IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzUGVyY2Vu
dGFnZSgpIGNvbnN0Ci17Ci0gICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBo
aXN0b3JpY2FsIHJlYXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAg
aWYgKGV4dHJhY3RUeXBlKG1fdW5pdCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAg
IHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMDsKIAotICAgIHJldHVybiBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0czsKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpz
ZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZH
TGVuZ3RoVHlwZSBsZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCit7CisgICAg
Ly8gRklYTUU6IFNlZW1zIGxpa2UgYSBidWcgdGhhdCB3ZSBjaGFuZ2UgdGhlIHZhbHVlIG9mIG1f
dW5pdCBldmVuIGlmIHNldFZhbHVlIHRocm93cyBhbiBleGNlcHRpb24uCisgICAgbV9sZW5ndGhN
b2RlID0gbGVuZ3RoTW9kZTsKKyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOworICAgIHJl
dHVybiBzZXRWYWx1ZShjb250ZXh0LCB2YWx1ZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNW
R0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAt
MjIxLDE3NSArMjkxLDI5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRW
YWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlmICghcGFyc2VOdW1iZXIo
cHRyLCBlbmQsIGNvbnZlcnRlZE51bWJlciwgZmFsc2UpKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU3ludGF4RXJyb3IgfTsKIAotICAgIGF1dG8gdHlwZSA9IHBhcnNlTGVuZ3RoVHlwZShw
dHIsIGVuZCk7Ci0gICAgaWYgKHR5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24pCisgICAgYXV0byBs
ZW5ndGhUeXBlID0gcGFyc2VMZW5ndGhUeXBlKHB0ciwgZW5kKTsKKyAgICBpZiAobGVuZ3RoVHlw
ZSA9PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U3ludGF4RXJyb3IgfTsKIAotICAgIG1fdW5pdCA9IHN0b3JlVW5pdChleHRyYWN0TW9kZShtX3Vu
aXQpLCB0eXBlKTsKKyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOwogICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gY29udmVydGVkTnVtYmVyOwogICAgIHJldHVybiB7IH07CiB9CiAK
LVN0cmluZyBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcoRm9ybWF0dGVkTnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyksIGxlbmd0aFR5cGVUb1N0cmluZyhleHRyYWN0VHlwZShtX3VuaXQpKSk7
Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0IHR5cGUsIGZsb2F0IHZhbHVlKQorRXhjZXB0aW9uT3I8dm9p
ZD4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKGNvbnN0IFNWR0xlbmd0
aENvbnRleHQmIGNvbnRleHQsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSkKIHsKLSAgICBpZiAo
dHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93biB8fCB0eXBlID4gTGVuZ3RoVHlwZVBDKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLQotICAgIG1fdW5pdCA9
IHN0b3JlVW5pdChleHRyYWN0TW9kZShtX3VuaXQpLCBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBl
Pih0eXBlKSk7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKLSAgICByZXR1
cm4geyB9OwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRv
U3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4
dCYgY29udGV4dCkKLXsKLSAgICBpZiAodHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93biB8fCB0eXBl
ID4gTGVuZ3RoVHlwZVBDKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IgfTsKLQogICAgIGF1dG8gdmFsdWVJblVzZXJVbml0cyA9IHZhbHVlRm9yQmluZGluZ3Mo
Y29udGV4dCk7CiAgICAgaWYgKHZhbHVlSW5Vc2VyVW5pdHMuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiB2YWx1ZUluVXNlclVuaXRzLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1
dG8gb3JpZ2luYWxVbml0QW5kVHlwZSA9IG1fdW5pdDsKLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQo
ZXh0cmFjdE1vZGUobV91bml0KSwgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odHlwZSkpOwot
ICAgIGF1dG8gcmVzdWx0ID0gc2V0VmFsdWUodmFsdWVJblVzZXJVbml0cy5yZWxlYXNlUmV0dXJu
VmFsdWUoKSwgY29udGV4dCk7Ci0gICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAg
ICAgICBtX3VuaXQgPSBvcmlnaW5hbFVuaXRBbmRUeXBlOwotICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi1TVkdM
ZW5ndGhWYWx1ZSBTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IENT
U1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBTVkdMZW5ndGhUeXBlIHR5cGU7Ci0gICAg
c3dpdGNoICh2YWx1ZS5wcmltaXRpdmVUeXBlKCkpIHsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZU51bWJlcjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U6Ci0g
ICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlUGVyY2VudGFnZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5
cGVFTVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
WFM6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlRVhTOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBl
UFg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToK
LSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVDTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZU1NOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU46Ci0gICAg
ICAgIHR5cGUgPSBMZW5ndGhUeXBlSU47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QVDoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQVDsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgotICAgICAgICB0
eXBlID0gTGVuZ3RoVHlwZVBDOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfVU5LTk9XTjoKLSAgICBkZWZhdWx0OgorICAgIGF1dG8gb3JpZ2luYWxMZW5n
dGhUeXBlID0gbV9sZW5ndGhUeXBlOworICAgIG1fbGVuZ3RoVHlwZSA9IGxlbmd0aFR5cGU7Cisg
ICAgYXV0byByZXN1bHQgPSBzZXRWYWx1ZShjb250ZXh0LCB2YWx1ZUluVXNlclVuaXRzLnJlbGVh
c2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBpZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICB9OwotCi0gICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAg
IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHR5cGUsIHZhbHVlLmZsb2F0VmFsdWUoKSk7
Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KIAotUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBTVkdMZW5n
dGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgbGVuZ3Ro
KQotewotICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZSBjc3NUeXBlID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VTktOT1dOOwotICAgIHN3aXRjaCAobGVuZ3RoLnVuaXRUeXBlKCkpIHsK
LSAgICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIExl
bmd0aFR5cGVOdW1iZXI6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X05VTUJFUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToK
LSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOgotICAgICAgICBjc3NUeXBlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVu
Z3RoVHlwZUVYUzoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhT
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVQWDoKLSAgICAgICAgY3NzVHlw
ZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGVuZ3RoVHlwZUNNOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19D
TTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTU06Ci0gICAgICAgIGNzc1R5
cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IExlbmd0aFR5cGVJTjoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SU47Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgotICAgICAgICBjc3NU
eXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlUEM6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BDOwotICAgICAgICBicmVhazsKLSAgICB9OwotCi0gICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUobGVuZ3RoLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpLCBjc3NUeXBlKTsKLX0K
LQotU1ZHTGVuZ3RoTW9kZSBTVkdMZW5ndGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHVzaW5n
IE1hcCA9IEhhc2hNYXA8UXVhbGlmaWVkTmFtZSwgU1ZHTGVuZ3RoTW9kZT47Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPE1hcD4gbWFwID0gW10gewotICAgICAgICBzdHJ1Y3QgTW9kZSB7Ci0g
ICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lOwotICAgICAgICAgICAgU1ZHTGVu
Z3RoTW9kZSBtb2RlOwotICAgICAgICB9OwotICAgICAgICBzdGF0aWMgY29uc3QgTW9kZSBtb2Rl
c1tdID0gewotICAgICAgICAgICAgeyBTVkdOYW1lczo6eEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9
LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAg
ICAgICAgICAgIHsgU1ZHTmFtZXM6OmN4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAg
ICAgICB7IFNWR05hbWVzOjpjeUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAg
IHsgU1ZHTmFtZXM6OmR4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNW
R05hbWVzOjpkeUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFt
ZXM6OmZ4QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpm
eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OndpZHRo
QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpoZWlnaHRB
dHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp4MUF0dHIs
IExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6eDJBdHRyLCBMZW5n
dGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnkxQXR0ciwgTGVuZ3RoTW9k
ZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6eTJBdHRyLCBMZW5ndGhNb2RlSGVp
Z2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpyZWZYQXR0ciwgTGVuZ3RoTW9kZVdpZHRo
IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpyZWZZQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9
LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lk
dGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIExlbmd0aE1v
ZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBMZW5n
dGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwg
TGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgIH07Ci0gICAgICAgIE1hcCBtYXA7Ci0gICAgICAg
IGZvciAoYXV0byYgbW9kZSA6IG1vZGVzKQotICAgICAgICAgICAgbWFwLmFkZChtb2RlLm5hbWUs
IG1vZGUubW9kZSk7Ci0gICAgICAgIHJldHVybiBtYXA7Ci0gICAgfSgpOwotICAgIAotICAgIGF1
dG8gcmVzdWx0ID0gbWFwLmdldCgpLmZpbmQoYXR0ck5hbWUpOwotICAgIGlmIChyZXN1bHQgPT0g
bWFwLmdldCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gTGVuZ3RoTW9kZU90aGVyOwotICAgIHJl
dHVybiByZXN1bHQtPnZhbHVlOworICAgIG1fbGVuZ3RoVHlwZSA9IG9yaWdpbmFsTGVuZ3RoVHlw
ZTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIH0KIAogVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxlbmd0
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgKaW5kZXggOTI2NjFiMjFlNTNlNzAwY2Ex
YmFmZWU1MWUxZjdjNWFjOWQ2ZTM0NS4uNmU5OTI2YzlhMDIyNWRkOGVkZGM5YzYzMmM4N2U3YzVh
OTQwMDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgKQEAgLTEsNiArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmlt
bWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCwx
NDEgKzIxLDkwIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0
aWVzLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoQ29udGV4dC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlv
bk9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2luZ0Vycm9yLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVy
dHlUcmFpdHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVW
YWx1ZTsKLWNsYXNzIFF1YWxpZmllZE5hbWU7CitjbGFzcyBTVkdMZW5ndGhDb250ZXh0OworCitl
bnVtIGNsYXNzIFNWR0xlbmd0aFR5cGUgOiB1aW50OF90IHsKKyAgICBVbmtub3duID0gMCwKKyAg
ICBOdW1iZXIsCisgICAgUGVyY2VudGFnZSwKKyAgICBFTVMsCisgICAgRVhTLAorICAgIFBYLAor
ICAgIENNLAorICAgIE1NLAorICAgIElOLAorICAgIFBULAorICAgIFBDCit9OworCitlbnVtIGNs
YXNzIFNWR0xlbmd0aE1vZGUgOiB1aW50OF90IHsKKyAgICBXaWR0aCwKKyAgICBIZWlnaHQsCisg
ICAgT3RoZXIKK307CiAKLWVudW0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIHsKLSAgICBB
bGxvd05lZ2F0aXZlTGVuZ3RocywKLSAgICBGb3JiaWROZWdhdGl2ZUxlbmd0aHMKK2VudW0gY2xh
c3MgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIDogdWludDhfdCB7CisgICAgQWxsb3csCisg
ICAgRm9yYmlkCiB9OwogCiBjbGFzcyBTVkdMZW5ndGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IE9uY2UgYWxsIFNWR0xlbmd0aFZh
bHVlIHVzZXJzIHVzZSBMZW5ndGggaW50ZXJuYWxseSwgd2UgbWFrZSB0aGlzIGEgd3JhcHBlciBm
b3IgTGVuZ3RoLgotICAgIFNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGUgPSBMZW5ndGhNb2Rl
T3RoZXIsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZyA9IFN0cmluZygpKTsKLSAgICBTVkdM
ZW5ndGhWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiwgZmxvYXQsIFNWR0xlbmd0aE1vZGUg
PSBMZW5ndGhNb2RlT3RoZXIsIFNWR0xlbmd0aFR5cGUgPSBMZW5ndGhUeXBlTnVtYmVyKTsKKyAg
ICBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIGNv
bnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZyA9IFN0cmluZygpKTsKKyAgICBTVkdMZW5ndGhWYWx1
ZShmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMsIFNWR0xlbmd0aFR5cGUsIFNWR0xlbmd0aE1v
ZGUgPSBTVkdMZW5ndGhNb2RlOjpPdGhlcik7CisgICAgU1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZH
TGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6TnVt
YmVyLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogCi0gICAgU1ZHTGVu
Z3RoVHlwZSB1bml0VHlwZSgpIGNvbnN0OwotICAgIFNWR0xlbmd0aE1vZGUgdW5pdE1vZGUoKSBj
b25zdDsKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgY29uc3RydWN0KFNWR0xlbmd0aE1vZGUs
IGNvbnN0IFN0cmluZyYsIFNWR1BhcnNpbmdFcnJvciYsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVz
TW9kZSA9IFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6QWxsb3cpOworICAgIHN0YXRpYyBT
VkdMZW5ndGhWYWx1ZSBibGVuZChjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbSwgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7CisgICAgCisgICAgc3RhdGljIFNWR0xl
bmd0aFZhbHVlIGZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYp
OworICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUo
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdMZW5ndGhW
YWx1ZSYpIGNvbnN0OworICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoVHlwZTsgfQorICAgIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVuZ3RoTW9kZTsgfQogCi0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmLCBTVkdQYXJzaW5nRXJyb3ImLCBT
VkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUgPSBBbGxvd05lZ2F0aXZlTGVuZ3Rocyk7CisgICAg
Ym9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7ICB9
CisgICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGhUeXBlID09IFNW
R0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgfHwgbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6
OkVNUyB8fCBtX2xlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6RVhTOyB9CiAKICAgICBmbG9h
dCB2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JikgY29uc3Q7CisgICAgZmxvYXQgdmFsdWVB
c1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlw
ZTo6UGVyY2VudGFnZSA/IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMTAwIDogbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHM7IH0KKyAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsgfQorICAgIAorICAgIFN0cmluZyB2
YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZmxvYXQ+IHZhbHVlRm9yQmlu
ZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFZhbHVlKGZsb2F0LCBjb25zdCBTVkdMZW5ndGhDb250ZXh0Jik7Ci0gICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdM
ZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlKTsKIAotICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRV
bml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOyB9CiAgICAgdm9p
ZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxvYXQgdmFsdWUpIHsgbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMgPSB2YWx1ZTsgfQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0
IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFs
dWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhUeXBlLCBTVkdMZW5n
dGhNb2RlKTsKIAotICAgIGZsb2F0IHZhbHVlQXNQZXJjZW50YWdlKCkgY29uc3Q7Ci0KLSAgICBT
dHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZh
bHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFs
dWVBc1N0cmluZyhjb25zdCBTdHJpbmcmLCBTVkdMZW5ndGhNb2RlKTsKLSAgICAKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0LCBmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRU
b1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0LCBjb25zdCBTVkdMZW5ndGhDb250ZXh0Jik7
CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb25zCi0gICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIGF1dG8gdHlwZSA9IHVuaXRUeXBlKCk7Ci0gICAgICAgIHJldHVybiB0
eXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8IHR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCB0
eXBlID09IExlbmd0aFR5cGVFWFM7Ci0gICAgfQotCi0gICAgYm9vbCBpc1plcm8oKSBjb25zdCAK
LSAgICB7Ci0gICAgICAgIHJldHVybiAhbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci0gICAgfQot
Ci0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBD
U1NQcmltaXRpdmVWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRv
Q1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKLSAgICBzdGF0aWMgU1ZH
TGVuZ3RoTW9kZSBsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYpOwotCi0gICAgU1ZHTGVuZ3RoVmFsdWUgYmxlbmQoY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIGZyb20sIGZsb2F0IHByb2dyZXNzKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byB0
b1R5cGUgPSB1bml0VHlwZSgpOwotICAgICAgICBhdXRvIGZyb21UeXBlID0gZnJvbS51bml0VHlw
ZSgpOwotICAgICAgICBpZiAoKGZyb20uaXNaZXJvKCkgJiYgaXNaZXJvKCkpCi0gICAgICAgICAg
ICB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bgotICAgICAgICAgICAgfHwgdG9UeXBl
ID09IExlbmd0aFR5cGVVbmtub3duCi0gICAgICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYg
ZnJvbVR5cGUgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgJiYgdG9UeXBlID09IExlbmd0aFR5cGVQ
ZXJjZW50YWdlKQotICAgICAgICAgICAgfHwgKCFpc1plcm8oKSAmJiBmcm9tVHlwZSA9PSBMZW5n
dGhUeXBlUGVyY2VudGFnZSAmJiB0b1R5cGUgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAg
ICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgIWlzWmVybygpICYmIChmcm9tVHlwZSA9PSBM
ZW5ndGhUeXBlRU1TIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVFWFMpICYmIGZyb21UeXBlICE9
IHRvVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgU1ZHTGVuZ3Ro
VmFsdWUgbGVuZ3RoOwotCi0gICAgICAgIGlmIChmcm9tVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSB8fCB0b1R5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsKLSAgICAgICAgICAgIGF1
dG8gZnJvbVBlcmNlbnQgPSBmcm9tLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7Ci0gICAgICAg
ICAgICBhdXRvIHRvUGVyY2VudCA9IHZhbHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7Ci0gICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5
cGVQZXJjZW50YWdlLCBXZWJDb3JlOjpibGVuZChmcm9tUGVyY2VudCwgdG9QZXJjZW50LCBwcm9n
cmVzcykpOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChmcm9tVHlwZSA9PSB0b1R5cGUgfHwgZnJvbS5pc1plcm8oKSB8fCBp
c1plcm8oKSB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IGZyb21UeXBlID09IExlbmd0
aFR5cGVFWFMpIHsKLSAgICAgICAgICAgIGF1dG8gZnJvbVZhbHVlID0gZnJvbS52YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMoKTsKLSAgICAgICAgICAgIGF1dG8gdG9WYWx1ZSA9IHZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpOwotICAgICAgICAgICAgaWYgKGlzWmVybygpKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhmcm9tVHlwZSwgV2Vi
Q29yZTo6YmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcykpOwotICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0
ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModG9UeXBlLCBXZWJDb3JlOjpibGVuZChm
cm9tVmFsdWUsIHRvVmFsdWUsIHByb2dyZXNzKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgICAgIH0KLQotICAgICAg
ICBBU1NFUlQoIWlzUmVsYXRpdmUoKSk7Ci0gICAgICAgIEFTU0VSVCghZnJvbS5pc1JlbGF0aXZl
KCkpOwotCi0gICAgICAgIFNWR0xlbmd0aENvbnRleHQgbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0
KG51bGxwdHIpOwotICAgICAgICBhdXRvIGZyb21WYWx1ZUluVXNlclVuaXRzID0gbm9uUmVsYXRp
dmVMZW5ndGhDb250ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZyb20udmFsdWVJblNwZWNp
ZmllZFVuaXRzKCksIGZyb20udW5pdE1vZGUoKSwgZnJvbVR5cGUpOwotICAgICAgICBpZiAoZnJv
bVZhbHVlSW5Vc2VyVW5pdHMuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4geyB9
OwotCi0gICAgICAgIGF1dG8gZnJvbVZhbHVlID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNv
bnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZnJvbVZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJldHVy
blZhbHVlKCksIHVuaXRNb2RlKCksIHRvVHlwZSk7Ci0gICAgICAgIGlmIChmcm9tVmFsdWUuaGFz
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGZsb2F0IHRv
VmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBs
ZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0b1R5cGUsIFdlYkNvcmU6OmJsZW5kKGZyb21W
YWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpKTsKLSAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAg
ICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRU
b1NwZWNpZmllZFVuaXRzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBTVkdMZW5ndGhUeXBlKTsK
IAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKLSAg
ICB1bnNpZ25lZCBtX3VuaXQ7CisgICAgU1ZHTGVuZ3RoVHlwZSBtX2xlbmd0aFR5cGUgeyBTVkdM
ZW5ndGhUeXBlOjpOdW1iZXIgfTsKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7IFNW
R0xlbmd0aE1vZGU6Ok90aGVyIH07CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdMZW5ndGhWYWx1ZT4gewotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0
aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8U1ZHTGVuZ3Ro
VmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcm
IHN0cmluZykKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAg
bGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcoc3RyaW5nLCBTVkdMZW5ndGhWYWx1ZTo6bGVuZ3RoTW9k
ZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkuaGFzRXhjZXB0aW9uKCk7Ci0g
ICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxlbmd0aCkgeyByZXR1cm4gbGVuZ3RoLnZhbHVlQXNTdHJp
bmcoKTsgfQotfTsKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBiKQoreworICAgIHJldHVybiBhLnZhbHVlSW5TcGVj
aWZpZWRVbml0cygpID09IGIudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgJiYgYS5sZW5ndGhUeXBl
KCkgPT0gYi5sZW5ndGhUeXBlKCkgJiYgYS5sZW5ndGhNb2RlKCkgPT0gYi5sZW5ndGhNb2RlKCk7
Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGEsIGNv
bnN0IFNWR0xlbmd0aFZhbHVlJiBiKQoreworICAgIHJldHVybiBhLnZhbHVlSW5TcGVjaWZpZWRV
bml0cygpICE9IGIudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgfHwgYS5sZW5ndGhUeXBlKCkgIT0g
Yi5sZW5ndGhUeXBlKCkgfHwgYS5sZW5ndGhNb2RlKCkgIT0gYi5sZW5ndGhNb2RlKCk7Cit9CiAK
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCA2
NWZlNTRmYTgwNDYxYTk3OWRmNjYxZGFkMWY5MTFkYTYxMTllOWZhLi4zYzRkMzllMDI1MWYzNDhl
NzdhY2MxMWVkZThjZjNkYmM5N2E0YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKQEAgLTU1LDEzICs1NSwxMyBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogICAgIFNW
R1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjp4MUF0dHIpCi0gICAgICAgIG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eTFBdHRyKQotICAgICAgICBtX3kxLT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICBtX3gy
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikK
LSAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95Mi0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFy
c2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuaAppbmRleCA1ODI3NzdhN2FkZjdjMzliMjFiNmI3MDhlMGVkZWZhNGQ4YmJjMDM5
Li4zNmEwYmI0YzI5YjQwNzI4MzlkYjhhZWM2ZjJhM2M3NzdmN2RmYzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZUVsZW1lbnQuaApAQCAtNTYsMTAgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWw7CiAKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MiB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MSB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9
OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpIZWlnaHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDdkN2Q3YzIz
NjRmMmU0Y2Y1ZTgyNGRiZjAwZGM4ZDQ0YTI4Mzc2MTAuLjlmYTk1Y2UzZWViODIzMDY4NzZiZjZk
NmI4MjMwNzFiNDBiOWI3NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwCkBAIC02NCwxMyArNjQsMTMgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEEKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICBtX3gxLT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgbV95MS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95MS0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikK
LSAgICAgICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gyLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5MkF0dHIpCi0gICAgICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAppbmRleCBiMGU2ZWI1
MGQ0ZWE2ODgwZjZjOTFiMGFiYzUxZDM2NTFhNDliMjIyLi5hZWZlNjRjZTE0Njc2Nzg0YzBkMWE5
MjRjZTNkZmVhZDdiYWNjMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdy
YWRpZW50RWxlbWVudC5oCkBAIC01OSwxMCArNTksMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feDEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsICIxMDAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggZjUzNDYyNDBm
MDE2MTU1N2IyYjllM2Y2NDk0YWE2ZjJlMTVkY2Q4OS4uODMwNmZkNzZiY2E3OWU4MDFlOTM2MGYy
MzlkYTdiZThiOWQ2N2ZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cApAQCAtNzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgU1ZHUGFy
c2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnJlZlhBdHRyKQotICAgICAgICBtX3JlZlgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV9yZWZYLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpyZWZZQXR0cikKLSAgICAgICAgbV9yZWZZLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3JlZlktPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0
dHIpCi0gICAgICAgIG1fbWFya2VyV2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAg
ICAgICAgbV9tYXJrZXJXaWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0cikKLSAgICAgICAgbV9t
YXJrZXJIZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fbWFya2Vy
SGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRy
aWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hcmtlckVsZW1lbnQuaAppbmRleCAxYzg2ZTc1OTc4ZWZlNjAwMGExNzVhMDRhMTg4
ZjBhMTJhZmJmNjI0Li5mZjc2YjA3MmIzZWI1MjMzZDlhYWFlMWVjMTM4NjA2NTVhZjA2Mzk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKQEAgLTg4LDEwICs4OCwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5cGUsIGNvbnN0IFNW
R0FuZ2xlVmFsdWUmKTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcmVmWCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV9yZWZZIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJX
aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAi
MyIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX21hcmtlckhlaWdodCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjMiKSB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yZWZYIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fcmVmWSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJXaWR0aCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIz
IikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VySGVpZ2h0IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIzIikgfTsK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tYXJrZXJVbml0cyB7IFNWR0FuaW1h
dGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoKSB9
OwogICAgIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiBtX29yaWVudEFuZ2xlIHsgU1ZHQW5pbWF0ZWRB
bmdsZTo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4gbV9v
cmllbnRUeXBlIHsgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlOjpjcmVhdGUodGhpcywgU1ZHTWFya2Vy
T3JpZW50QW5nbGUpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCA4
ZjJhODAyYWVlMGZiZjQ4NzRlNDQ2ODRlMmE4NDZhYmYwZmM4NjdjLi5iN2EwZjExYmFmYzQwNmE4
YjY2ZTkxZjljMDhkOGJjYWUwMmYzNGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVu
dC5jcHAKQEAgLTgyLDEzICs4MiwxMyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogICAgIFNW
R1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRo
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdo
dEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVw
b3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAppbmRleCA5NTY0NjQ5YmM4M2MzNDEyYzQwNjRkMDMw
M2Q4MmQ1ODRiMjM3OTZmLi5jM2U0OWJhYWZhOTgxZGQ1Nzk3ZTU1NGY4OTU2NGQyZDE0YzQ2NjA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaApAQCAtNjQsMTAgKzY0LDEwIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICItMTAlIikgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
LCAiMTIwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEyMCUiKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIi0xMCUiKSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
d2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Oldp
ZHRoLCAiMTIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMTIw
JSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFza1VuaXRzIHsgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRf
VFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bj4gbV9tYXNrQ29udGVudFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRo
aXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCBjZGRjM2EzZThiMTM4
M2YwNjBmNDkxZmRlNjM2YmM5MWVmNjQ5ZTg3Li44Mzg5YTcxZjEwYzAxZmZmZjY3MGFkMWMzYjc5
Mzc1YmM5NGIxZWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAK
QEAgLTkzLDEzICs5MywxMyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogICAgIFNWR1BhcnNp
bmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVz
Ojp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAg
IG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV93
aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVl
c01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJz
ZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAgcmVw
b3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAppbmRleCBkMWFkNTljOGRlNGJlYjk4YTAw
M2U5YjFhZmRmNDYzMWE4YTFhZGZjLi4xZTY2MWQ3ZmQ0NjVhYjliYjc4ZWFlNmNhOWVhNjFlNmQ2
MDdkMTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaApAQCAtNzUsMTAg
Kzc1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3Bl
cnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dp
ZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OkhlaWdodCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9wYXR0ZXJuVW5p
dHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVu
dW1lcmF0aW9uPiBtX3BhdHRlcm5Db250ZW50VW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
OjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNF
KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IG1fcGF0dGVyblRyYW5zZm9y
bSB7IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGIxMWQ4NzU0
ODI2NTRhYTc1Njg5NDg5NDkzNTZmMTQ5NmFlYzA0YzUuLmZlMWQ0OTg4MDdjYzkwYTZhNzMyMTI5
MDYzOGRmYzliZjQ5ZTBhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwCkBAIC02NiwxNyArNjYsMTcgQEAgdm9pZCBTVkdSYWRpYWxHcmFk
aWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEEKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgbV9jeS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKQot
ICAgICAgICBtX3ItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Ro
cykpOworICAgICAgICBtX3ItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3Ro
TmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpmeEF0dHIpCi0gICAgICAgIG1fZngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAg
ICAgICAgbV9meC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6ZnlBdHRyKQotICAgICAgICBtX2Z5LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX2Z5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZnJBdHRyKQotICAgICAgICBtX2ZyLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3Ro
ZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAg
bV9mci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVl
c01vZGU6OkZvcmJpZCkpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNl
RXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdy
YWRpZW50RWxlbWVudC5oCmluZGV4IGYzMTVkOTQ4MDhjNWRkOGNiZjQxOTJhYmExZmQwNzRlNDY1
ZmEwMzkuLjg0ZjExNTg4ZjNlMjgxZTZmNmUwN2E2MDlkMDg5YTk3ODcwOGEzOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgKQEAgLTYzLDEyICs2
MywxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiNTAlIikgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQsICI1MCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9y
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsICI1MCUi
KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9meCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9meSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnIgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlciwgIjAlIikgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoLCAiNTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgIjUwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyLCAiNTAlIikgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9meSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9mciB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsICIwJSIpIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAppbmRleCBlYjUzOTk4MGI1ZTkxMTZiMWYyOGIyNjBmMzA4ZjAxNWVhODkwNjE3Li5lY2Ex
M2YwNDY0ZThkNmZhNGZhZmVmMWVlYWIxNGVhYmI1N2QxYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5jcHAKQEAgLTU4LDE3ICs1OCwxNyBAQCB2b2lkIFNWR1JlY3RFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlm
IChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAg
ICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cnhBdHRyKQotICAgICAg
ICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5n
dGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsK
KyAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdh
dGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OnJ5QXR0cikKLSAgICAgICAgbV9yeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1
ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2Rl
OjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQot
ICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZl
TGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
ciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmgKaW5kZXggZmMyNDc5Mjg2ZWU3YmE0NWJjNzY2OGJlZGU4M2I3
NWY0Njc5Y2E0ZS4uYzVmNWYyYzBlNGMwNTU1YTQ2ZTBiMjVmYTkyZTUzZjY5NTgyNTgxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKQEAgLTYxLDEyICs2MSwxMiBAQCBwcml2YXRl
OgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVu
ZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1v
ZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmlu
ZGV4IGM1N2NmZmM1OTFhYTg3ZDA0YTg2ZDU5MGUzZTY1NzA0MjBkZWI5MmMuLmQ3NTdlYWM0ZTQ3
Mjg2ZDZkNDAxMGM4Y2Y4ZDVjNzM5NjEwOTI3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKQEAgLTIzMSwyMyArMjMxLDIzIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAg
ICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBh
dXRvIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKTsKKyAgICAgICAgYXV0byBs
ZW5ndGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpOwog
ICAgICAgICBpZiAocGFyc2VFcnJvciAhPSBOb0Vycm9yIHx8IHZhbHVlLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBiZWhh
dmlvciBmb3IgYSBtaXNzaW5nL3JlbW92ZWQgYXR0cmlidXRlLgogICAgICAgICAgICAgLy8gTm90
IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0aGUgZW1wdHkgc3RyaW5nIG9yIGZvciBzb21ldGhpbmcg
dGhhdCBjYW4ndCBiZSBwYXJzZWQuCi0gICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1
ZShMZW5ndGhNb2RlV2lkdGgsICIxMDAlIl9zKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xl
bmd0aFZhbHVlKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSJfcyk7CiAgICAgICAgIH0KICAg
ICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKGxlbmd0aCk7CiAgICAgfSBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0g
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKTsKICAgICAgICAgaWYg
KHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8fCB2YWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgYmVoYXZpb3IgZm9yIGEg
cmVtb3ZlZCBhdHRyaWJ1dGUuCiAgICAgICAgICAgICAvLyBOb3Qgc3VyZSBpdCdzIGNvcnJlY3Qg
Zm9yIHRoZSBlbXB0eSBzdHJpbmcgb3IgZm9yIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIHBhcnNl
ZC4KLSAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKExlbmd0aE1vZGVIZWlnaHQs
ICIxMDAlIl9zKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0
aE1vZGU6OkhlaWdodCwgIjEwMCUiX3MpOwogICAgICAgICB9CiAgICAgICAgIG1faGVpZ2h0LT5z
ZXRCYXNlVmFsSW50ZXJuYWwobGVuZ3RoKTsKICAgICB9CkBAIC01NzYsMTcgKzU3NiwxNyBAQCBG
bG9hdFNpemUgU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0CiAKIGJv
b2wgU1ZHU1ZHRWxlbWVudDo6aGFzSW50cmluc2ljV2lkdGgoKSBjb25zdAogewotICAgIHJldHVy
biB3aWR0aCgpLnVuaXRUeXBlKCkgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgcmV0dXJu
IHdpZHRoKCkubGVuZ3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7CiB9CiAK
IGJvb2wgU1ZHU1ZHRWxlbWVudDo6aGFzSW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaGVpZ2h0KCkudW5pdFR5cGUoKSAhPSBMZW5ndGhUeXBlUGVyY2VudGFnZTsKKyAgICBy
ZXR1cm4gaGVpZ2h0KCkubGVuZ3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7
CiB9CiAKIExlbmd0aCBTVkdTVkdFbGVtZW50OjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKHdpZHRoKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBp
ZiAod2lkdGgoKS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAg
ICAgICAgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxl
bmd0aENvbnRleHQodGhpcyk7CkBAIC01OTUsNyArNTk1LDcgQEAgTGVuZ3RoIFNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY1dpZHRoKCkgY29uc3QKIAogTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6OmludHJp
bnNpY0hlaWdodCgpIGNvbnN0CiB7Ci0gICAgaWYgKGhlaWdodCgpLnVuaXRUeXBlKCkgPT0gTGVu
Z3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKGhlaWdodCgpLmxlbmd0aFR5cGUoKSA9PSBTVkdM
ZW5ndGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsK
IAogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCmluZGV4IDllYWNkODA5MWRjMTE5NjFhOTY5MDE5OTc2M2ZjMjAyNWQy
NTc4YzAuLmQ0NmI0Mjg4ZmQ4MmU0NmM2NWYyNmIxZWVhMDdkMmJmMTA0MDZlY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApAQCAtMTY0LDEwICsxNjQsMTAgQEAgcHJpdmF0ZToKICAg
ICBSZWY8U1ZHUG9pbnQ+IG1fY3VycmVudFRyYW5zbGF0ZSB7IFNWR1BvaW50OjpjcmVhdGUoKSB9
OwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIl9zKSB9OwotICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsICIxMDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpX
aWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OkhlaWdodCwgIjEwMCUiX3MpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDE4
MjBiM2NjZDJlNTI2YzkyMTQzMWY0ZTQ3ZjYxMWM1OTIzZmYyYTQuLmQ1OTg5MWUzNzg3NGQzM2Ez
YTkwYjU4Yjk0ZWJiYzk3YTEzNDRkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwCkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBTVkdUZXh0Q29udGVu
dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b20KICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgbV9sZW5n
dGhBZGp1c3QtPnNldEJhc2VWYWxJbnRlcm5hbDxTVkdMZW5ndGhBZGp1c3RUeXBlPihwcm9wZXJ0
eVZhbHVlKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRy
KQotICAgICAgICBtX3RleHRMZW5ndGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3RleHRMZW5ndGgtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwg
cGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAg
IHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAK
QEAgLTE5Nyw5ICsxOTcsOSBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogU1ZHQW5pbWF0ZWRM
ZW5ndGgmIFNWR1RleHRDb250ZW50RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHTGVuZ3RoVmFsdWU+IGRlZmF1bHRUZXh0TGVuZ3Ro
KExlbmd0aE1vZGVPdGhlcik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR0xlbmd0aFZh
bHVlPiBkZWZhdWx0VGV4dExlbmd0aChTVkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAgaWYgKG1f
dGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpID09IGRlZmF1bHRUZXh0TGVuZ3RoKQotICAg
ICAgICBtX3RleHRMZW5ndGgtPmJhc2VWYWwoKS0+dmFsdWUoKS5uZXdWYWx1ZVNwZWNpZmllZFVu
aXRzKExlbmd0aFR5cGVOdW1iZXIsIGdldENvbXB1dGVkVGV4dExlbmd0aCgpKTsKKyAgICAgICAg
bV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCkgPSB7IGdldENvbXB1dGVkVGV4dExlbmd0
aCgpLCBTVkdMZW5ndGhUeXBlOjpOdW1iZXIgfTsKICAgICByZXR1cm4gbV90ZXh0TGVuZ3RoOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggNThh
N2QzNzcxNDg3YmVkM2U2NzA5MzBiOTVjNmZmYThiNTYxYjVjOC4uZGIwZmVmMjNmMTY2MDJlNGUz
Zjc5ZmIyYjhjY2M1MmU1MmU5MjlkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaApAQCAtMTA3LDkgKzEwNyw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3RleHRMZW5ndGggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fdGV4dExlbmd0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6T3RoZXIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
bGVuZ3RoQWRqdXN0IHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR0xl
bmd0aEFkanVzdFNwYWNpbmcpIH07Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0
TGVuZ3RoIHsgTGVuZ3RoTW9kZU90aGVyIH07CisgICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZp
ZWRUZXh0TGVuZ3RoIHsgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5k
ZXggNzZmYmJhNzkyNmZjZDIwMTkwZWZlMmY3YzE1ZWJmN2JkMTc4ZjI4Ny4uZDlmZTFmNDc0ZGQ2
YzBmN2M2ZjM2NDRlYzViZWI1ZTg3MGFmNGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQYXRoRWxlbWVudC5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHIKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQotICAgICAgICBtX3N0YXJ0T2Zmc2V0
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
T3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fc3RhcnRPZmZzZXQtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90
aGVyLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Om1ldGhvZEF0dHIpIHsKICAgICAgICAgU1ZHVGV4dFBhdGhNZXRob2RUeXBlIHByb3BlcnR5VmFs
dWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5n
KHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5oCmluZGV4IDU2NzdmNWJlYjIzN2ZjMzgyYjRjMGQyZWJiYThk
YmEyZTRhOWQyODUuLjc4ZjA3ZjBhMGFkYjQ0M2JjNDFkYmMxNDViZjQwNGY0NDE3YmIyN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKQEAgLTE0NCw3ICsxNDQsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9zdGFydE9mZnNldCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyKSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV9zdGFydE9mZnNldCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRp
b24+IG1fbWV0aG9kIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1Rl
eHRQYXRoTWV0aG9kQWxpZ24pIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
c3BhY2luZyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0
aFNwYWNpbmdFeGFjdCkgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuaAppbmRleCAwZTcxMzRjMTM4MzU3YzZjZGIzZGI1N2MxZDYyNDJmMzEz
MTdmOTc3Li4zNzljNWE2Njk5MzcwZWRlNTY0ZmYzYmYxNzZhNGI4Mjg0MzliNmVmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKQEAgLTU3LDEw
ICs1NywxMCBAQCBwcml2YXRlOgogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3Bl
cnR5UmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7
IH0KIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aExp
c3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX2R4IHsg
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1fZHkgeyBTVkdBbmltYXRlZExlbmd0aExp
c3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aExpc3Q+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1f
eSB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX2R4IHsgU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keSB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWROdW1iZXJMaXN0PiBtX3JvdGF0ZSB7IFNWR0FuaW1hdGVkTnVtYmVyTGlzdDo6Y3JlYXRlKHRo
aXMpIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggOWE3Mjk4
NDJlZDJkOWI2NjY5OTEwMGViNzVkZDMxOGI1ODJhZDllNy4uYWQ5MjM4NDEzNWZhMjhkZDUzODll
ODc4OTY0NGVmOTViN2U3Zjg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApA
QCAtODAsMTMgKzgwLDEzIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5n
RXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lk
dGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNN
b2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0
aXZlTGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmluZGV4IDFmNTJiYzFkY2YwZDIxOTIzMDVhNjVhZjgwNWJl
NmQzMWQwNzBjZmIuLmFiNTljZDNjOTE2MzJlNjRhYjY4MzhlNzRhODc1OTVjMzcwZmI4MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaApAQCAtOTYsMTAgKzk2LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKTsKIAogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiAKICAgICBib29sIG1faGF2ZUZpcmVkTG9h
ZEV2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hhZG93VHJlZU5lZWRzVXBkYXRlIHsgdHJ1
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0
ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCmluZGV4IGQzMjY3OGMxY2QwZTNlMGQy
MzIzODBkZmIwMjRlMzMyOWE3NjRiOTMuLjk5YjJhYTkxMzE2M2Q5ZTBkZDhjMzczZjQ2N2ZkZDk2
NDRmYmE4YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKQEAgLTEyMyw3ICsxMjMs
NyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9y
PiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNN
b2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKICAg
ICB7Ci0gICAgICAgIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IHByb3BlcnR5KG93bmVyKS0+
YmFzZVZhbCgpLT52YWx1ZSgpLnVuaXRNb2RlKCk7CisgICAgICAgIFNWR0xlbmd0aE1vZGUgbGVu
Z3RoTW9kZSA9IHByb3BlcnR5KG93bmVyKS0+YmFzZVZhbCgpLT52YWx1ZSgpLmxlbmd0aE1vZGUo
KTsKICAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNyZWF0ZShhdHRy
aWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAKQEAgLTE0Niw3ICsx
NDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1
dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0
IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0
b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUs
IGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlV2lkdGgpOwor
ICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNyZWF0ZShhdHRy
aWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0Fj
Y3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7CiAgICAgfQogCiAg
ICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJp
YnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0
aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYTgyYzYxOGQ2YmJlNDU3Njc0
MGNhNjg1MDNlMTg0MmViOWNmY2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVy
bWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHRWxlbWVudDsKLQotc3RydWN0IFNWR0Fu
aW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiB7ICAgICAgICAgICAgCi0gICAgLy8gRW1wdHkgdmFs
dWUKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24oKQotICAgICAgICA6IG1fZWxl
bWVudChudWxscHRyKQotICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShudWxscHRyKQotICAgIHsK
LSAgICB9Ci0KLSAgICAvLyBEZWxldGVkIHZhbHVlCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURl
c2NyaXB0aW9uKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX2Vs
ZW1lbnQocmVpbnRlcnByZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEpKQotICAgIHsKLSAgICB9Ci0K
LSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2VsZW1lbnQgPT0gcmVpbnRlcnByZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEpOwot
ICAgIH0KLQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbihTVkdFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lKQotICAgICAgICA6IG1fZWxl
bWVudChlbGVtZW50KQotICAgICAgICAsIG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lLmlt
cGwoKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2VsZW1lbnQpOwotICAgICAgICBBU1NFUlQo
bV9hdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2VsZW1lbnQgPT0gb3RoZXIubV9lbGVtZW50ICYmIG1fYXR0cmlidXRlTmFtZSA9
PSBvdGhlci5tX2F0dHJpYnV0ZU5hbWU7Ci0gICAgfQotCi0gICAgU1ZHRWxlbWVudCogbV9lbGVt
ZW50OwotICAgIEF0b21TdHJpbmdJbXBsKiBtX2F0dHJpYnV0ZU5hbWU7Ci19OwotCi1zdHJ1Y3Qg
U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uJiBrZXkpCi0gICAgewot
ICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb24pPigma2V5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBl
cXVhbChjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24mIGEsIGNvbnN0IFNWR0Fu
aW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhID09
IGI7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlP
ckRlbGV0ZWQgPSB0cnVlOwotfTsKLQotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbkhhc2hUcmFpdHMgOiBXVEY6OlNpbXBsZUNsYXNzSGFzaFRyYWl0czxTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24+IHsgfTsKLSAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZl
TGlzdEZ1bmN0aW9uSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKaW5kZXggOTIzM2FlOTJmOTUyMjIxZGJl
OTAzOTBkNWY4YTQ1ZDBiNTM2NDNhYi4uNjFhMWQwMzZjZmRhNTJiYTRlYThiNzFlNTFiYjJjN2Ix
N2FkYmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKQEAgLTY5
LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29u
dGV4dCh0YXJnZXRFbGVtZW50KTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRv
SXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUg
PSAoaSA8IGZyb21JdGVtcy5zaXplKCkgJiYgcHJvZ3Jlc3MgPCAwLjUgPyBmcm9tSXRlbXMgOiB0
b0l0ZW1zKVtpXS0+dmFsdWUoKS51bml0VHlwZSgpOworICAgICAgICAgICAgU1ZHTGVuZ3RoVHlw
ZSBsZW5ndGhUeXBlID0gKGkgPCBmcm9tSXRlbXMuc2l6ZSgpICYmIHByb2dyZXNzIDwgMC41ID8g
ZnJvbUl0ZW1zIDogdG9JdGVtcylbaV0tPnZhbHVlKCkubGVuZ3RoVHlwZSgpOwogCiAgICAgICAg
ICAgICBmbG9hdCBmcm9tID0gaSA8IGZyb21JdGVtcy5zaXplKCkgPyBmcm9tSXRlbXNbaV0tPnZh
bHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwogICAgICAgICAgICAgZmxvYXQgdG8gPSB0
b0l0ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQpOwpAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCB2YWx1ZSA9IGFuaW1hdGVkSXRlbXNbaV0tPnZh
bHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAKICAgICAgICAgICAgIHZhbHVlID0gQmFzZTo6
YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291bnQsIGZyb20sIHRvLCB0b0F0RW5kT2ZEdXJhdGlv
biwgdmFsdWUpOwotICAgICAgICAgICAgYW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKS5zZXRWYWx1
ZShsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoTW9kZSwgdW5pdFR5cGUpOworICAgICAgICAg
ICAgYW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKS5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCB2YWx1
ZSwgbGVuZ3RoVHlwZSwgbGVuZ3RoTW9kZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk0LDcg
Kzk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21J
dGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZy
b21WYWx1ZSA9IGZyb21JdGVtc1tpXS0+dmFsdWUoKTsKICAgICAgICAgICAgIFNWR0xlbmd0aFZh
bHVlJiB0b1ZhbHVlID0gdG9JdGVtc1tpXS0+dmFsdWUoKTsKLSAgICAgICAgICAgIHRvVmFsdWUu
c2V0VmFsdWUodG9WYWx1ZS52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21WYWx1ZS52YWx1ZShs
ZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CisgICAgICAgICAgICB0b1ZhbHVlLnNldFZh
bHVlKGxlbmd0aENvbnRleHQsIHRvVmFsdWUudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tVmFs
dWUudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgICAgICB9CiAgICAgfQogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFs
dWVGdW5jdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAppbmRleCAyOGM1MTJhMDlhNzQ5ZGIyNWJk
NzNkYWNiYmFkNmQ0ODlkYjdhMzUyLi5jZWUxNWU0YzZhMTM2NGFiMTY1MDk2N2Q3OGRkZmI1NmY3
M2Q4MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmlt
YXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCkBAIC0x
NzcsNyArMTc3LDcgQEAgcHVibGljOgogICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0YXJn
ZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0xlbmd0
aFZhbHVlJiBhbmltYXRlZCkKICAgICB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dCh0YXJnZXRFbGVtZW50KTsKLSAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSA9
IHByb2dyZXNzIDwgMC41ID8gbV9mcm9tLnVuaXRUeXBlKCkgOiBtX3RvLnVuaXRUeXBlKCk7Cisg
ICAgICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSA9IHByb2dyZXNzIDwgMC41ID8gbV9mcm9t
Lmxlbmd0aFR5cGUoKSA6IG1fdG8ubGVuZ3RoVHlwZSgpOwogCiAgICAgICAgIGZsb2F0IGZyb20g
PSAobV9hbmltYXRpb25Nb2RlID09IEFuaW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBtX2Zy
b20pLnZhbHVlKGxlbmd0aENvbnRleHQpOwogICAgICAgICBmbG9hdCB0byA9IG1fdG8udmFsdWUo
bGVuZ3RoQ29udGV4dCk7CkBAIC0xODUsNyArMTg1LDcgQEAgcHVibGljOgogICAgICAgICBmbG9h
dCB2YWx1ZSA9IGFuaW1hdGVkLnZhbHVlKGxlbmd0aENvbnRleHQpOwogCiAgICAgICAgIHZhbHVl
ID0gQmFzZTo6YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291bnQsIGZyb20sIHRvLCB0b0F0RW5k
T2ZEdXJhdGlvbiwgdmFsdWUpOwotICAgICAgICBhbmltYXRlZCA9IHsgbGVuZ3RoQ29udGV4dCwg
dmFsdWUsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5cGUgfTsKKyAgICAgICAgYW5pbWF0ZWQgPSB7IGxl
bmd0aENvbnRleHQsIHZhbHVlLCBsZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUgfTsKICAgICB9CiAK
ICAgICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVy
cmlkZQpAQCAtMjAwLDcgKzIwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRGcm9tQW5kVG9W
YWx1ZXMoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAg
IFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0YXJnZXRFbGVtZW50KTsKLSAgICAgICAg
bV90by5zZXRWYWx1ZShtX3RvLnZhbHVlKGxlbmd0aENvbnRleHQpICsgbV9mcm9tLnZhbHVlKGxl
bmd0aENvbnRleHQpLCBsZW5ndGhDb250ZXh0KTsKKyAgICAgICAgbV90by5zZXRWYWx1ZShsZW5n
dGhDb250ZXh0LCBtX3RvLnZhbHVlKGxlbmd0aENvbnRleHQpICsgbV9mcm9tLnZhbHVlKGxlbmd0
aENvbnRleHQpKTsKICAgICB9CiAKICAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlB
bmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJv
cGVydHlBbmltYXRvckltcGwuaAppbmRleCBmZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEy
ODc5YTdlZGJkLi42Mjc2Nzg0OTk0ODE1Njk1ZTE3Y2RiMzA5ZTU4NDU5ZjZiZTg4YmNkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5p
bWF0b3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQ
cm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBAIC0zOSwxMyArMzksMTMgQEAgY2xhc3MgU1ZHTGVuZ3Ro
QW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0
aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0
ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNW
R0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVP
dGhlcik7CisgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICB9CiAK
ICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBTdHJpbmcgYmFzZVZhbHVlID0gY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUodGFy
Z2V0RWxlbWVudCwgY3NzUHJvcGVydHlJRChtX2F0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsK
LSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgdmFsdWUoTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAg
U1ZHTGVuZ3RoVmFsdWUgdmFsdWUoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgICAgICBpZiAo
IXZhbHVlLnNldFZhbHVlQXNTdHJpbmcoYmFzZVZhbHVlKS5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgICAgIG1fcHJvcGVydHktPnNldFZhbHVlKHZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9y
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxp
c3RBbmltYXRvckltcGwuaAppbmRleCBhZTk0ZTI5ZWQ0Yjg2MTNiOTljZDk3NDg2ZWQwYjA2Mjgy
NmMwMmQ4Li4xNTk4ZjU2NmIyOWM0MTM4ZGMyNGQ5YmY4MzgwOWZmNTk0YWM2ZDVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFu
aW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVu
Z3RoTGlzdEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0
b3I8U1ZHTGVuZ3QKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmlt
YXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11
bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSks
IGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5n
dGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhMaXN0QW5p
bWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBj
YWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIp
OwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3Zl
cnJpZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378598</attachid>
            <date>2019-09-11 16:54:31 -0700</date>
            <delta_ts>2019-09-11 16:58:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190911165430.patch</filename>
            <type>text/plain</type>
            <size>134787</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJiMzk5MDA3ZmJiOWIy
N2Y4ZDAzZWU1YjNhNTZkMjA0YWNiN2QxYy4uMjllZjMzMmFkYTc0OWFlNjVkMDYyMTVmNWJhNDA2
ODhmOTM0ZmZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOS0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xl
bmd0aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0
ZWFkIG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLCBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUg
aGFkIG9uZSB1bnNpZ25lZCB0byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhUeXBl
LgorICAgICAgICBJdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCA0IGJp
dHMgb2YgdGhpcyB1bnNpZ25lZCB0byB0aGUKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSB3aGlsZSBp
dCBsZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0aFR5cGUuCisKKyAgICAgICAgVGhpcyB3aWxs
IG5vdCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9kZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUgbWFk
ZSBvZgorICAgICAgICBzaXplIHVpbnRfOC4KKworICAgICAgICBBbHNvIGluIHRoaXMgcGF0Y2g6
CisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIGlzIG1hZGUgZW51bSBj
bGFzcy4KKworICAgICAgICAtLSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoKSBpcyBtb3ZlZCB0byBT
VkdMZW5ndGhWYWx1ZS5jcHAgc28gd2UgZG8gbm90CisgICAgICAgICAgIG5lZWQgdG8gaW5jbHVk
ZSBTVkdMZW5ndGhDb250ZXh0LmggaW4gU1ZHTGVuZ3RoVmFsdWUuaC4KKworICAgICAgICAtLSBT
VkdMZW5ndGhUeXBlIGFuZCBTVkdMZW5ndGhNb2RlIGFyZSBtb3ZlZCB0byBTVkdMZW5ndGhWYWx1
ZS5oLiBJbnN0ZWFkCisgICAgICAgICAgIG9mIGhhdmluZyBTVkdMZW5ndGhWYWx1ZS5oIGluY2x1
ZGVzIFNWR0xlbmd0aENvbnR0ZXh0LmgsIHRoZSBvcHBvc2l0ZQorICAgICAgICAgICB3aWxsIGhh
cHBlbi4KKworICAgICAgICAtLSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpcyBk
ZWxldGVkLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgICAgd2l0aCB0aGUg
U1ZHIHRlYXIgb2ZmIG9iamVjdHMgcmVtb3ZhbC4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdBbmdsZVZhbHVlPiBhbmQgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+
CisgICAgICAgICAgIGFyZSBkZWxldGVkLiBUaGV5IHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCB3
aXRoIFNWR0FuaW1hdGVkVHlwZSByZW1vdmFsLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFZhbHVl
OjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBpcyBkZWxldGVkLiBJdAor
ICAgICAgICAgICB3YXMgb25seSBjYWxsZWQgZnJvbSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
dGhWYWx1ZT4uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NT
S2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJhZGlh
bEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojppbml0aWFs
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZH
QW5nbGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6OnVuaXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVU
b1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBl
cmNlbnRhZ2VUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRl
eHQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICog
c3ZnL1NWR0xlbmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1N0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlbmd0aFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpsZW5n
dGhUeXBlVG9QcmltaXRpdmVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVl
OjpTVkdMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpibGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAo
V2ViQ29yZTo6c3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RN
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0VHlwZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dW5pdE1v
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OnZh
bHVlQXNQZXJjZW50YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoVmFsdWU6OmlzWmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGhWYWx1ZTo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5n
dGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoVmFsdWU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6aW5pdGlhbFZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xl
bmd0aFZhbHVlPjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFz
SW50cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
aGFzSW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY0hlaWdodCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5j
dGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5j
dGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
TGVuZ3RoRnVuY3Rpb246OmFuaW1hdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorCiAyMDE5LTA5LTExICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OICgyNDUwMDYpOiBj
YW4ndCBzY3JvbGwgaW4gInJlYWQgbW9yZSIgdmlldyBpbiBFdmVudGJyaXRlIGFwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4
ZDI3ZmM0MWY0NzhmYjQzNjUzNWYwN2M2M2FhZTliNmRiOTNlNWEuLmM2MzEwM2IyZjI1ODRlNGYx
YmI4NmRkZmM0ZTJkNzg2M2M2MmMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MSw3ICsyNTEsNiBAQAogCQkwODc1NThD
NjEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRB
NTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2N0YxMURBMDQ1
QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUwNjgw
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQ
aGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEw
REZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhBMEUw
QzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg4QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmgg
Ki87IH07CiAJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5NTgyNTQwRTg1N0E3
RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1MzYsNyArNTUzNSw2IEBACiAJCTA4NzU1OEM0MTNCNEE1
N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAv
KiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4QTBERkQxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R1Byb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1By
b3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc1MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc2MTIzOTAwODAwMDNENjVDRSAvKiBT
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYwOTQsNyArMTYwOTIsNiBAQAogCQkJCTU1RUU1MzU4MjIzQjI5RjkwMEZCQTk0NCAvKiBT
VkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNUEyMjNCMjlG
QjAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oICovLAogCQkJCTU1RUU1
MzU2MjIzQjI5RjcwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgg
Ki8sCi0JCQkJMDg4QTBERkQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlE
ZXNjcmlwdGlvbi5oICovLAogCQkJCTU1RUU1MzVDMjIzQjJBMEQwMEZCQTk0NCAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5SW1wbC5oICovLAogCQkJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovLAogCQkJCTU1QkUwMjVFMjIzQjI5QzQwMDMyRjA4
QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yLmggKi8sCkBAIC0zMTc3OSw3ICsz
MTc3Niw2IEBACiAJCQkJMjREOTEyQjgxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRl
bUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4OEEwRTA2
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGQ4YWMzMjg5MmRjZDEzNTUyNjI5OGFlMTI1
YmZiMTdjOGMxNzUwYTkuLmUwYzMxOGVlNzdjYjEzYjk4NmYwNTcxNjZlOWQ4OWM0NmQ2MDlhMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBT
dHlsZVJ1bGVQYWdlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0Owog
Y2xhc3MgU3R5bGVkRWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogY2xhc3MgVmlld3BvcnRTdHlsZVJlc29sdmVyOwogc3RydWN0IFJlc291cmNlTG9hZGVy
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBiYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3
M2YzNjdlOTk3Li42ZjY0Y2M2ZWE4ZDZhMjM4MDY0YzNjMzFmM2JlNzllNzQ3ZDExYjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxl
bmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IEwKIAog
c3RhdGljIGlubGluZSBTVkdMZW5ndGhWYWx1ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gdG8uYmxlbmQoZnJv
bSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgIHJldHVybiBTVkdMZW5n
dGhWYWx1ZTo6YmxlbmQoZnJvbSwgdG8sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3Mp
KTsKIH0KIAogc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGJsZW5kRnVuYyhj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZh
bHVlPiYgZnJvbSwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgdG8sIGRvdWJsZSBwcm9n
cmVzcykKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhW
YWx1ZT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLAogICAgIH0K
ICAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHJlc3VsdChyZXN1bHRMZW5ndGgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0TGVuZ3RoOyArK2kpCi0gICAgICAgIHJlc3VsdFtp
XSA9IHRvW2kgJSB0b0xlbmd0aF0uYmxlbmQoZnJvbVtpICUgZnJvbUxlbmd0aF0sIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKKyAgICAgICAgcmVzdWx0W2ldID0gU1ZHTGVuZ3Ro
VmFsdWU6OmJsZW5kKGZyb21baSAlIGZyb21MZW5ndGhdLCB0b1tpICUgdG9MZW5ndGhdLCBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dyZXNzKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRl
eCA0MjQ0Y2E2MDE0NDhmMWIxMGE4ZjFmY2JmOTE3MDIzNGQzYTAxNzliLi45NTMyMTI5YWYyZDA3
OTY2YmU5ODM5MjE4ZDU0Mzk5MTg0YzIwZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtODIsOCArODIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyTWlkUmVzb3VyY2UoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlckVuZFJlc291cmNlKCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgTWFza1R5cGUgaW5pdGlhbE1hc2tUeXBlKCkg
eyByZXR1cm4gTWFza1R5cGU6Okx1bWluYW5jZTsgfQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7Ci0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVl
IGluaXRpYWxLZXJuaW5nKCk7CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxCYXNl
bGluZVNoaWZ0VmFsdWUoKSB7IHJldHVybiBTVkdMZW5ndGhWYWx1ZSgwLCBTVkdMZW5ndGhUeXBl
OjpOdW1iZXIpOyB9CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCkg
eyByZXR1cm4gU1ZHTGVuZ3RoVmFsdWUoMCwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKTsgfQogCiAg
ICAgLy8gU1ZHIENTUyBQcm9wZXJ0eSBzZXR0ZXJzCiAgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNl
bGluZShBbGlnbm1lbnRCYXNlbGluZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy5hbGlnbm1lbnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CkBAIC0y
NTYsMjAgKzI1Niw2IEBAIHByaXZhdGU6CiAgICAgRGF0YVJlZjxTdHlsZVJlc291cmNlRGF0YT4g
bV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGE7CiB9OwogCi1pbmxpbmUgU1ZHTGVuZ3RoVmFsdWUg
U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKQotewotICAgIFNWR0xl
bmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5n
dGhUeXBlTnVtYmVyLCAwKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1pbmxpbmUgU1ZHTGVu
Z3RoVmFsdWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKCkKLXsKLSAgICBTVkdMZW5n
dGhWYWx1ZSBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQogaW5saW5lIHZvaWQgU1ZH
UmVuZGVyU3R5bGU6OnNldEN4KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIGlmICghKG1f
bGF5b3V0RGF0YS0+Y3ggPT0gbGVuZ3RoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCmluZGV4IDdkYTkxOTkzZTNmY2U4YjgwYWY4NTZk
Y2NlZTVkOGFhYTYwMWJiOWEuLjE3N2MzOTU2YWZjZWU2MjNhODJmNzEzM2IyMjdjOWJkYjEwMzkx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxs
aXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmNwcApAQCAtNzksOCArNzksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0
ZVJhZGlpQW5kQ2VudGVyKCkKIHsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQo
JmdyYXBoaWNzRWxlbWVudCgpKTsKICAgICBtX2NlbnRlciA9IEZsb2F0UG9pbnQoCi0gICAgICAg
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN4KCksIExl
bmd0aE1vZGVXaWR0aCksCi0gICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpKTsKKyAgICAgICAgbGVuZ3Ro
Q29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgpLAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKICAgICBpZiAoaXM8
U1ZHQ2lyY2xlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkpKSB7CiAgICAgICAgIGZsb2F0IHJh
ZGl1cyA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnIo
KSk7CiAgICAgICAgIG1fcmFkaWkgPSBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpOwpAQCAtODks
OCArODksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVy
KCkKIAogICAgIEFTU0VSVChpczxTVkdFbGxpcHNlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkp
KTsKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAg
ICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgp
LCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwKKyAgICAg
ICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnkoKSwg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Zmls
bFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCmluZGV4IDRiMjRkZmQzZDFkYWEzNjdl
MjM2NzExYjJhYTlkNjQ3ZGFjMWJiNjkuLjY2MWQyMTk0MmM2ZDJmNDYyZmM4NWEwNTc3ZGFlYzI4
ZWI2ZmVjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZWN0LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKQogICAgIG1fdXNlUGF0aEZhbGxiYWNrID0gZmFsc2U7CiAKICAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJnJlY3RFbGVtZW50KCkpOwotICAgIEZsb2F0U2l6
ZSBib3VuZGluZ0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndp
ZHRoKCksIExlbmd0aE1vZGVXaWR0aCksIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCkpOworICAgIEZsb2F0U2l6ZSBib3VuZGlu
Z0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndpZHRoKCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSwgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgp
LmhlaWdodCgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKIAogICAgIC8vIEVsZW1lbnQgaXMg
aW52YWxpZCBpZiBlaXRoZXIgZGltZW5zaW9uIGlzIG5lZ2F0aXZlLgogICAgIGlmIChib3VuZGlu
Z0JveFNpemUud2lkdGgoKSA8IDAgfHwgYm91bmRpbmdCb3hTaXplLmhlaWdodCgpIDwgMCkKQEAg
LTc0LDggKzc0LDggQEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsbEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxl
KCkueCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS55KCksIExlbmd0aE1vZGVIZWlnaHQpKSwKKyAgICBt
X2ZpbGxCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
LAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUo
KS55KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpLAogICAgICAgICBib3VuZGluZ0JveFNpemUp
OwogCiAgICAgLy8gVG8gZGVjaWRlIGlmIHRoZSBzdHJva2UgY29udGFpbnMgYSBwb2ludCB3ZSBj
cmVhdGUgdHdvIHJlY3RzIHdoaWNoIHJlcHJlc2VudCB0aGUgaW5uZXIgYW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCmluZGV4IDBmODQ5OWU1M2IwMzA1
YWQwMDhjZWE0MzgxOGYzZDcxZGVmZWNlNTYuLjJiYWIxODAyYTY1NTRkOTFiNTVhMDk3ODY1ODgx
NmUwMjE3MWMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UGF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERh
dGEuY3BwCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxlbWVu
dChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dCgmZWxlbWVudCk7CiAgICAgZmxvYXQgciA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yKCkpOwogICAgIGlmIChyID4gMCkgewotICAgICAgICBm
bG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5j
eCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgICAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRleHQu
dmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsK
KyAgICAgICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2
Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOworICAgICAgICBmbG9hdCBjeSA9
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQpOwogICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KGN4
IC0gciwgY3kgLSByLCByICogMiwgciAqIDIpKTsKICAgICB9CiAgICAgcmV0dXJuIHBhdGg7CkBA
IC02NywxNyArNjcsMTcgQEAgc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBlbGVtZW50KQogCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5
bGUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVsZW1lbnQpOwotICAg
IGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7CisgICAgZmxvYXQgcnggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
OwogICAgIGlmIChyeCA8PSAwKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgcnkg
PSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgTGVu
Z3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVu
Z3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBp
ZiAocnkgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBm
bG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5j
eCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAg
IGZsb2F0IGN4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LmN4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRl
eHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQpOwogICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY3ggLSByeCwgY3kgLSByeSwg
cnggKiAyLCByeSAqIDIpKTsKICAgICByZXR1cm4gcGF0aDsKIH0KQEAgLTEzOCwxOSArMTM4LDE5
IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxl
bWVudCkKIAogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgU1ZHTGVu
Z3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KCZlbGVtZW50KTsKLSAgICBmbG9hdCB3aWR0aCA9IGxl
bmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUud2lkdGgoKSwgTGVuZ3RoTW9kZVdpZHRo
KTsKKyAgICBmbG9hdCB3aWR0aCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUu
d2lkdGgoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOwogICAgIGlmICh3aWR0aCA8PSAwKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgaGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQg
aGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBpZiAoaGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS55
KCksIExlbmd0aE1vZGVIZWlnaHQpOwotICAgIGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
cnkoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsK
KyAgICBmbG9hdCB5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHls
ZSgpLnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKKyAgICBmbG9hdCByeCA9IGxlbmd0aENv
bnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBTVkdMZW5ndGhNb2Rl
OjpXaWR0aCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBib29sIGhh
c1J4ID0gcnggPiAwOwogICAgIGJvb2wgaGFzUnkgPSByeSA+IDA7CiAgICAgaWYgKGhhc1J4IHx8
IGhhc1J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKaW5kZXggMGI2M2Q2Y2RmZmI1NWE0MmVh
OTA0NTk4YTAxZDFlNmUyOWFlZjJmYS4uZWQ1N2VhYjVhNGU3YWMxMGZjNGU3NWZhMTJlOGNmYzFi
NDU1YzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBmbG9h
dCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQoY29u
c3QgU1ZHUmVuZGVyU3R5bGUmCiB7CiAgICAgaWYgKHN0eWxlLmJhc2VsaW5lU2hpZnQoKSA9PSBC
YXNlbGluZVNoaWZ0OjpMZW5ndGgpIHsKICAgICAgICAgYXV0byBiYXNlbGluZVNoaWZ0VmFsdWVM
ZW5ndGggPSBzdHlsZS5iYXNlbGluZVNoaWZ0VmFsdWUoKTsKLSAgICAgICAgaWYgKGJhc2VsaW5l
U2hpZnRWYWx1ZUxlbmd0aC51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAg
ICAgICBpZiAoYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5n
dGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lU2hpZnRWYWx1
ZUxlbmd0aC52YWx1ZUFzUGVyY2VudGFnZSgpICogbV9mb250LnBpeGVsU2l6ZSgpOwogCiAgICAg
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5jcHAKaW5kZXggNDhkODBhZTk5MjZlMDYzZDllZjIxOTI0MmQzZGU3ODE3OGVjZTRlNS4u
YmNmMzU2YTgxZjhlYWYxOWM4ZDRkOTY4N2E1ZmExMDMxYTU2YzEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZVNwYWNp
bmc6OmNhbGN1bGF0ZUNTU0tlcm5pbmdBbmRTcGFjaW5nKGNvbnN0IFNWR1JlbmRlclMKIHsKICAg
ICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBhdXRvIGtlcm5pbmdMZW5ndGggPSBzdHlsZS0+a2Vy
bmluZygpOwotICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2UpCisgICAgaWYgKGtlcm5pbmdMZW5ndGgubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0
aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZhbHVl
QXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxlbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggZjUyMDE5ZmZm
ZTlhNDBhNDA3MmUyMzVjNWNhYjBkZGUxYmQ5MDU1Yy4uNmZkOTViZDZlZWUzMDJjZTRlNWVmNTE5
YzVlMjFhMTY1NzM1NzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdy
YWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVu
dEF0dHJpYnV0ZXMuaApAQCAtMjYsNyArMjYsNyBAQCBzdHJ1Y3QgTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMoKQogICAgICAgICA6IG1feDEoKQogICAgICAgICAsIG1feTEoKQotICAgICAgICAsIG1feDIo
TGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAgICAgICwgbV94MihTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgIjEwMCUiKQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFTZXQoZmFsc2Up
CiAgICAgICAgICwgbV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA4N2JlNzIyODgxNDNlM2RlMTFjMWQ3NGVlODVhZmU4
NmNlYjQxMTgwLi42MTIzZGJlOTBmMzc0NzZiMWI0ZThjY2ViZWI3MzYwOWRkZDA3MDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0yNSw5
ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdyYWRpZW50QXR0
cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzKCkKLSAgICAgICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0gICAgICAgICwg
bV9jeShMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQotICAgICAgICAsIG1fcihMZW5ndGhNb2RlV2lk
dGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQor
ICAgICAgICAsIG1fY3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAgICAgICAsIG1f
cihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCiAgICAgICAgICwgbV9jeFNldChmYWxzZSkK
ICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGVWYWx1ZS5oCmluZGV4IDRkNDAyZjdmY2Q0NWExZmM3ZTc5NDdkOTYxZGU5
ZWE1OTE0YmU0NjEuLmNjNDU0NDE4M2NmMGRmOTBmYjdlYjkyYTkzYWEzZGYxZWIzMTUyOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaApAQCAtNTYsMTAgKzU2LDQgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRl
PD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZVZhbHVlPiB7Ci0gICAgc3RhdGlj
IFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGVWYWx1ZSgpOyB9
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdBbmdsZVZhbHVlJiB0eXBlKSB7
IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IGQ5MzA0MGExZjU2YWFlZmY1YzI5MjFkNDZhYjcz
ZGIxMDhhZDc4ZjQuLjQ5ZDQ1OTMyZjA3MWUzNTQyOGI3MTI5NDBiM2ViNTAxZTU0OGY1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTU0LDExICs1NCwxMSBA
QCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9y
ID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAg
IG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lB
dHRyKQotICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAg
cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXggNzIwZjMxMGU2NDBmODJkYmVl
NjY3MDY0M2Y3OTMxM2I0ZjVlZmE4NS4uNzFiNzYzMGQyM2JkNTFhZjRhOGMxMzE5MmZmNGI4YzNk
YjBiM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC01NSw5ICs1
NSw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA1Y2Q3ZDE5ZGU5Mzk1ZWUx
ZmY0NWQwYjdlNDZlODUzZTBiYmY3NDQ3Li4yZmQ1NzY2NDliNzIyOGVhMGZkMjVlYWVkY2E3MzVk
ODQyNTNhODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC02
NCw5ICs2NCw5IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgU1ZHUGFyc2luZ0Vycm9y
IHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmluZGV4IGVkNjRkNWZhMTllODM1ZjkwODA1MzI1NTVm
MTdjOGNmNDc0NGMwMjIuLjVkZDRkNGJkN2ZiMmI2ZWI1ZDFlZTE0NDE2ZTNmYTQzZDVkZWUyMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNjEsOCArNjEsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1h
Z2VWYWx1ZSo+IG1fY2xpZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCmluZGV4IDgzMzJlYjVkYmZjMjhmODYyNzgyNGJmODg5ZjhmMzQ2MDY2ZDM0MWMu
LmFkYjZjYmNhNDIzOWY3OGI2YjkwMzA2NzQ4ZWIwM2MyNTY2NmFiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgU1ZH
RWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAg
ICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpyeEF0dHIpCi0gICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IDMwMzU1
OGUwMmU1M2ZmYTI4ODFmMTM1ZjBhZTgxNTllNzE1YzNjMGIuLmNhMDdiM2YxYmNmYzZhYzgzMTJh
ODlkNTI4MWIzYzJiYWVkZDQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5oCkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N4
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCmluZGV4IDI0YzZjNTJmNDgzOGY3MmFjM2I4ZTZjNzk0YThiNWI3OTcwMjcxYmMuLjE4
NmI3NzFlNThlM2RhOGMyMWExMmUxZmQ4OGMzMWIwMWE0MWU1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCB2b2lkIFNWR0ZpbHRl
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbgogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBt
X3ByaW1pdGl2ZVVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4
QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0g
ICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2hl
aWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmli
dXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5kZXggMTU4OWE2YzQyYmRhODc3MTQ1ZDVlMDczN2VjOGZh
MWY0YWJjZWVkZi4uNTkwMzIwOTU5Y2U5ZWQ0YmYyYjk0ZmVmYWU0YzYxZTBkNDZjYjE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJp
dmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fZmlsdGVyVW5pdHMgeyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBt
X3ByaW1pdGl2ZVVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAl
IikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiLTEwJSIp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEyMCUiKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEyMCUiKSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAzNjRjYjI4MGYzMjc5ZjIw
ZjUyNmE2MWM4YTMyMzEwM2NjNDdiZWM4Li4zMGRhNDM0ZjRjZDM5ZDBhYzIwMTRjNzc3NmE1Mjhh
NzgyNDMyODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIHZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBO
b0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAg
ICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVzdWx0
QXR0cikKICAgICAgICAgbV9yZXN1bHQtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaAppbmRleCBjMjgxNmRhMzYzNWQwNjU2M2I5MWM4MzUwOGJkODEzOGNiMzlh
Yjk0Li5jOThiMTNlZDk2Mjc2YWY5ZTE0ZjY0MjgxMWE2ZmQ3NDY3NzJhY2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNwZWM6IElm
IHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0
aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCwgIjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIwJSIpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjAlIikgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3Vs
dCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDVhY2Q1ZmNiMzE5
ODBkZTdiOGU2NmIwOGQzYzVkMzViNjA3YjI4MjkuLjdmZjNiODY3ZmM1OTJkOGRiMjNhZmE0NjUw
ZmY3ZTZjYjBmMzNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAK
ICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCmluZGV4
IDAyYTE5NGM0MTdhN2FiNzczMDQxNDgyNzdkM2Y5ZTY0OWZiMDY4YTQuLmRiMjA0MzM5NTVlYmUy
MzQxM2U2MDk2YWI1NDVhN2JlMzk0OGMwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
eSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0
aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCA5NjcwZTI2NDQwNjdjZmRhYjM0NzMwMzUxOWIxNGYwZmMxOGYxNmI3Li43YjY0YTAyMTRhM2Jh
MGYwZTg1MWM0NWQwZTlkNzM0NDIxYzc2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtNzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nCiAg
ICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1f
d2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwor
ICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5l
Z2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7
CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggOWZiNTc4Njg3NWZi
MTE0YzUyMzI4NjVlNGUwODNhZWIzZmNhODQwMy4uZWFmZjYxODZkODlkOTM0OGZiY2ExNTE4NWRk
ZmFhNmEwZGVkZDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNjks
MTAgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVp
Z2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9
OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbyB7IFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZHSW1hZ2VMb2FkZXIgbV9p
bWFnZUxvYWRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKaW5kZXggZmYwZmQzNTE0YjI2M2Ux
MzhkNWNjYTkwN2YzYTc5ODdiNmYzYjllZi4uN2U3YzExNDk2ZjgyNTg4ODJlMjQ4Mjk1MzdjMzEz
ZjQ5MDYwNTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJT
VkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIApAQCAtMzgs
MTcgKzM5LDE3IEBAIGNsYXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PFNW
R0xlbmd0aFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVu
dW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uCiAgICAgZW51
bSB7Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5ndGhUeXBlVW5rbm93biwK
LSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSID0gTGVuZ3RoVHlwZU51bWJlciwKLSAgICAg
ICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQZXJjZW50YWdlLAotICAg
ICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBlRU1TLAotICAgICAgICBTVkdfTEVO
R1RIVFlQRV9FWFMgPSBMZW5ndGhUeXBlRVhTLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCA9
IExlbmd0aFR5cGVQWCwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gPSBMZW5ndGhUeXBlQ00s
Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX01NID0gTGVuZ3RoVHlwZU1NLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFQg
PSBMZW5ndGhUeXBlUFQsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BDID0gTGVuZ3RoVHlwZVBD
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpVbmtub3duKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVN
QkVSICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6Ok51bWJlciks
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
RU1TICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkVNUyks
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpFWFMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCAgICAg
ICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UFgpLAorICAgICAg
ICBTVkdfTEVOR1RIVFlQRV9DTSAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZH
TGVuZ3RoVHlwZTo6Q00pLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9NTSAgICAgICAgICAgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6TU0pLAorICAgICAgICBTVkdfTEVO
R1RIVFlQRV9JTiAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlw
ZTo6SU4pLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCAgICAgICAgICAgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UFQpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
QyAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UEMpCiAg
ICAgfTsKIAogICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoKQpAQCAtNzksOSArODAs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVlKTsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSgpCisgICAgdW5zaWduZWQgc2hv
cnQgdW5pdFR5cGUoKSAgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLnVuaXRU
eXBlKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5sZW5n
dGhUeXBlKCkpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRp
bmdzKCkKQEAgLTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgp
KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVy
cm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVlLCBT
VkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX3ZhbHVlLnNldFZhbHVlKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgp
IH0sIHZhbHVlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtMTM1LDEyICsxMzYsMTIgQEAgcHVibGlj
OgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQg
PSBtX3ZhbHVlLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZp
ZWRVbml0cyk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICAKKyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNWR19M
RU5HVEhUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgICAg
IG1fdmFsdWUgPSB7IHZhbHVlSW5TcGVjaWZpZWRVbml0cywgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3Ro
VHlwZT4odW5pdFR5cGUpLCBtX3ZhbHVlLmxlbmd0aE1vZGUoKSB9OwogICAgICAgICBjb21taXRD
aGFuZ2UoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHMo
dW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpCkBAIC0xNDgsMTAgKzE0OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
dmFsdWUuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQg
eyBjb250ZXh0RWxlbWVudCgpIH0pOworICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xFTkdU
SFRZUEVfVU5LTk9XTiB8fCB1bml0VHlwZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKFNWR0xlbmd0aENvbnRl
eHQgeyBjb250ZXh0RWxlbWVudCgpIH0sIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXRU
eXBlKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICAKKwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4
dC5jcHAKaW5kZXggMDgwMDAxNzZiYWMwZmI5MGZlYTM1MGZmZDYyZTU2ZWM0YmJjMTI5ZS4uMDk5
NTRmYjIyOWJhOGM3NDBhNGNiYmIzNjNhMzU5MGRmYjFlM2NmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhDb250ZXh0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODUsMTAg
Kzg1LDEwIEBAIGZsb2F0IFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVMZW5ndGgoY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dCwgU1ZHVW5pdFR5cGVzOjpTCiAgICAgcmV0dXJuIHgudmFsdWVBc1Bl
cmNlbnRhZ2UoKTsKIH0KIAotZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK2Zsb2F0IFNWR0xlbmd0
aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBTVkdMZW5ndGhN
b2RlIGxlbmd0aE1vZGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVu
Z3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRW
YWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIGxlbmd0
aE1vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CkBA
IC05OSw0OSArOTksNDkgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKICAgICBGbG9hdFNpemUg
dmlld3BvcnRTaXplOwogICAgIGRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CiAKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2gg
KGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAgICBy
ZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIHZpZXdwb3J0U2l6ZS53aWR0aCgpKTsK
LSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWln
aHQ6CiAgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgdmlld3BvcnRT
aXplLmhlaWdodCgpKTsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xl
bmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5n
dGgsIHN0ZDo6c3FydCh2aWV3cG9ydFNpemUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAyKSk7
CiAgICAgfTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0
aENvbnRleHQ6OmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhN
b2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQpIGNvbnN0CitFeGNlcHRpb25PcjxmbG9h
dD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUs
IFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBjb25z
dAogewogICAgIC8vIElmIHRoZSBTVkdMZW5ndGhDb250ZXh0IGNhcnJpZXMgYSBjdXN0b20gdmll
d3BvcnQsIGZvcmNlIHJlc29sdmluZyBhZ2FpbnN0IGl0LgogICAgIGlmICghbV9vdmVycmlkZGVu
Vmlld3BvcnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIDEwMCUgPSAxMDAuMCBpbnN0ZWFkIG9m
IDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlzIGNvdWxkIGV2ZW50dWFsbHkgYmUgY2hh
bmdlZAotICAgICAgICBpZiAoZnJvbVVuaXQgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAg
ICAgIGlmIChsZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAg
ICAgICB2YWx1ZSAvPSAxMDA7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2Vu
dGFnZVRvVXNlclVuaXRzKHZhbHVlLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1
ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoZnJvbVVuaXQpIHsKLSAgICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgorICAg
IHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOgogICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpQWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRv
VXNlclVuaXRzKHZhbHVlIC8gMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVy
dFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEwMCwgbGVuZ3RoTW9kZSk7
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFs
dWVGcm9tRU1TVG9Vc2VyVW5pdHModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAg
ICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVYUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZy
b21FWFNUb1VzZXJVbml0cyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgY2Fz
ZSBTVkdMZW5ndGhUeXBlOjpDTToKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVy
SW5jaCAvIDIuNTRmOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6TU06CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyNS40
ZjsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OklOOgog
ICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAgIHJldHVybiB2YWx1
ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICBj
YXNlIFNWR0xlbmd0aFR5cGU6OlBDOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQ
ZXJJbmNoIC8gNjsKICAgICB9CiAKQEAgLTE0OSwzMCArMTQ5LDMwIEBAIEV4Y2VwdGlvbk9yPGZs
b2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2YWx1
ZSwgU1ZHTGVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5n
dGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5n
dGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdAorRXhjZXB0aW9uT3I8Zmxv
YXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQgdmFs
dWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBj
b25zdAogewotICAgIHN3aXRjaCAodG9Vbml0KSB7Ci0gICAgY2FzZSBMZW5ndGhUeXBlVW5rbm93
bjoKKyAgICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVu
a25vd246CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9Owot
ICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51bWJl
cjoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6
Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJjZW50YWdlKHZh
bHVlICogMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVVz
ZXJVbml0c1RvUGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgbGVuZ3RoTW9kZSk7CisgICAgY2FzZSBT
VkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzVG9FTVModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OkVYUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNU
b0VYUyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpQWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIDIuNTRm
IC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICBjYXNlIFNW
R0xlbmd0aFR5cGU6Ok1NOgogICAgICAgICByZXR1cm4gdmFsdWUgKiAyNS40ZiAvIGNzc1BpeGVs
c1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgY2FzZSBTVkdMZW5ndGhUeXBl
OjpJTjoKICAgICAgICAgcmV0dXJuIHZhbHVlIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNl
IExlbmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBUOgogICAgICAgICByZXR1
cm4gdmFsdWUgKiA3MiAvIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUEM6
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKICAgICAgICAgcmV0dXJuIHZhbHVlICogNiAv
IGNzc1BpeGVsc1BlckluY2g7CiAgICAgfQogCkBAIC0xODAsMTggKzE4MCwxOCBAQCBFeGNlcHRp
b25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhm
bG9hdCB2YWx1ZSwgU1ZHTAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZShm
bG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8ZmxvYXQ+
IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2Uo
ZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBGbG9h
dFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRT
aXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0
Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAg
ICByZXR1cm4gdmFsdWUgLyB2aWV3cG9ydFNpemUud2lkdGgoKSAqIDEwMDsKLSAgICBjYXNlIExl
bmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAg
IHJldHVybiB2YWx1ZSAvIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIDEwMDsKLSAgICBjYXNlIExl
bmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICBy
ZXR1cm4gdmFsdWUgLyAoc3RkOjpzcXJ0KHZpZXdwb3J0U2l6ZS5kaWFnb25hbExlbmd0aFNxdWFy
ZWQoKSAvIDIpKSAqIDEwMDsKICAgICB9OwogCkBAIC0xOTksMTggKzE5OSwxOCBAQCBFeGNlcHRp
b25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1Rv
UGVyY2VudGFnZShmbG9hdAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhm
bG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8ZmxvYXQ+
IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMo
ZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBGbG9h
dFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRT
aXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0
Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAg
ICByZXR1cm4gdmFsdWUgKiB2aWV3cG9ydFNpemUud2lkdGgoKTsKLSAgICBjYXNlIExlbmd0aE1v
ZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVy
biB2YWx1ZSAqIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhl
cjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFsdWUg
KiBzdGQ6OnNxcnQodmlld3BvcnRTaXplLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIC8gMik7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgKaW5kZXggOGU5N2UyMTRi
OWIzNTJhODg5MDQ1ZWMyYTI5MmI5NWQ1ZTdhNzM3MS4uZDNjYzRmYTcwMDkyYWU1MGM0Yzc1Yzc5
MjhmZjg3ZWQ2YzEwMjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5oCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIx
LDM1ICsyMiwxNSBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1VuaXRU
eXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFz
cyBTVkdMZW5ndGhWYWx1ZTsKIAogc3RydWN0IExlbmd0aDsKIAotZW51bSBTVkdMZW5ndGhUeXBl
IHsKLSAgICBMZW5ndGhUeXBlVW5rbm93biA9IDAsCi0gICAgTGVuZ3RoVHlwZU51bWJlciwKLSAg
ICBMZW5ndGhUeXBlUGVyY2VudGFnZSwKLSAgICBMZW5ndGhUeXBlRU1TLAotICAgIExlbmd0aFR5
cGVFWFMsCi0gICAgTGVuZ3RoVHlwZVBYLAotICAgIExlbmd0aFR5cGVDTSwKLSAgICBMZW5ndGhU
eXBlTU0sCi0gICAgTGVuZ3RoVHlwZUlOLAotICAgIExlbmd0aFR5cGVQVCwKLSAgICBMZW5ndGhU
eXBlUEMKLX07Ci0KLWVudW0gU1ZHTGVuZ3RoTW9kZSB7Ci0gICAgTGVuZ3RoTW9kZVdpZHRoID0g
MCwKLSAgICBMZW5ndGhNb2RlSGVpZ2h0LAotICAgIExlbmd0aE1vZGVPdGhlcgotfTsKLQogY2xh
c3MgU1ZHTGVuZ3RoQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHTGVuZ3RoQ29u
dGV4dChjb25zdCBTVkdFbGVtZW50Kik7CkBAIC02NCw5ICs0NSw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgRmxvYXRQb2ludCByZXNvbHZlUG9pbnQoY29uc3QgU1ZHRWxlbWVudCosIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4LCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgeSk7CiAgICAgc3RhdGljIGZsb2F0IHJlc29sdmVMZW5ndGgoY29uc3QgU1ZHRWxl
bWVudCosIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7
CiAKLSAgICBmbG9hdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhNb2Rl
ID0gTGVuZ3RoTW9kZU90aGVyKTsKLSAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVl
VG9Vc2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQp
IGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRz
KGZsb2F0LCBTVkdMZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlIHRvVW5pdCkgY29uc3Q7CisgICAg
ZmxvYXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xl
bmd0aE1vZGU6Ok90aGVyKTsKKyAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVlVG9V
c2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUpIGNvbnN0OworICAg
IEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0LCBTVkdM
ZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlKSBjb25zdDsKIAogICAgIGJvb2wgZGV0ZXJtaW5lVmll
d3BvcnQoRmxvYXRTaXplJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCmlu
ZGV4IGIwMTQ3ZmEyMzRmNGQ5YTg4ZjlmYzlmMzFkNWYzODg5NzMxNjc2OTUuLjVlYjU3MDFjNjc0
Njg3OTJkMDU2MmMxNWI1MjE2YjQ5MmMwMjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3QuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR1Zh
bHVlUHJvcGVydHlMaXN0PFNWR0xlbmd0aD4gewogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShTVkdMZW5ndGhNb2Rl
IGxlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIpCisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGhM
aXN0PiBjcmVhdGUoU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3Ro
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KGxl
bmd0aE1vZGUpKTsKICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgfQogCi0gICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBMZW5ndGhNb2RlT3RoZXIg
fTsKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7IFNWR0xlbmd0aE1vZGU6Ok90aGVy
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aFZhbHVlLmNwcAppbmRleCBkZDJlZGUxNGZiNzE3YzE2YTBmYjhlNjAyYTQxYWU5ODc0YTExOGVm
Li4xYWM3YzYzOGZmMTNjZDk0YzQ5ZDJmNjUwOTExNDkxZWM3ZWMzMTk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw1OCArMjIsMzcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogCi0jaW5jbHVk
ZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEhl
bHBlciBmdW5jdGlvbnMKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc3RvcmVVbml0KFNWR0xlbmd0
aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFy
KiBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewotICAgIHJl
dHVybiAobW9kZSA8PCA0KSB8IHR5cGU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoTW9k
ZSBleHRyYWN0TW9kZSh1bnNpZ25lZCB1bml0KQotewotICAgIHVuc2lnbmVkIG1vZGUgPSB1bml0
ID4+IDQ7ICAgIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhNb2RlPihtb2RlKTsK
LX0KLQotc3RhdGljIGlubGluZSBTVkdMZW5ndGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVkIHVu
aXQpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXQgJiAoKDEg
PDwgNCkgLSAxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbGVuZ3RoVHlwZVRv
U3RyaW5nKFNWR0xlbmd0aFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIExlbmd0aFR5cGVVbmtub3duOgotICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBz
d2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVua25vd246Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiAiIjsgICAgCi0g
ICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBl
cmNlbnRhZ2U6CiAgICAgICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RU1TOgogICAgICAgICByZXR1cm4gImVtIjsKLSAgICBj
YXNlIExlbmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFWFM6CiAgICAgICAg
IHJldHVybiAiZXgiOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6UFg6CiAgICAgICAgIHJldHVybiAicHgiOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006CiAgICAgICAgIHJldHVybiAiY20iOwotICAgIGNh
c2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TU06CiAgICAgICAgIHJl
dHVybiAibW0iOwotICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlw
ZTo6SU46CiAgICAgICAgIHJldHVybiAiaW4iOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgorICAg
IGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAgIHJldHVybiAicHQiOwotICAgIGNhc2Ug
TGVuZ3RoVHlwZVBDOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UEM6CiAgICAgICAgIHJldHVy
biAicGMiOwogICAgIH0KIApAQCAtODEsOTAgKzYwLDE4MyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIqIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhUeXBlIHR5cGUpCiAgICAgcmV0dXJu
ICIiOwogfQogCi1pbmxpbmUgU1ZHTGVuZ3RoVHlwZSBwYXJzZUxlbmd0aFR5cGUoY29uc3QgVUNo
YXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBw
YXJzZUxlbmd0aFR5cGUoY29uc3QgVUNoYXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKIHsKICAg
ICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVOdW1iZXI7CisgICAg
ICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CiAKICAgICBjb25zdCBVQ2hhciBmaXJz
dENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIGZp
cnN0Q2hhciA9PSAnJScgPyBMZW5ndGhUeXBlUGVyY2VudGFnZSA6IExlbmd0aFR5cGVVbmtub3du
OworICAgICAgICByZXR1cm4gZmlyc3RDaGFyID09ICclJyA/IFNWR0xlbmd0aFR5cGU6OlBlcmNl
bnRhZ2UgOiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwogCiAgICAgY29uc3QgVUNoYXIgc2Vjb25k
Q2hhciA9ICpwdHI7CiAKICAgICBpZiAoKytwdHIgIT0gZW5kKQotICAgICAgICByZXR1cm4gTGVu
Z3RoVHlwZVVua25vd247CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwog
CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnZScgJiYgc2Vjb25kQ2hhciA9PSAnbScpCi0gICAgICAg
IHJldHVybiBMZW5ndGhUeXBlRU1TOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RU1T
OwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENoYXIgPT0gJ3gnKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoVHlwZUVYUzsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OkVY
UzsKICAgICBpZiAoZmlyc3RDaGFyID09ICdwJyAmJiBzZWNvbmRDaGFyID09ICd4JykKLSAgICAg
ICAgcmV0dXJuIExlbmd0aFR5cGVQWDsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBY
OwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2MnICYmIHNlY29uZENoYXIgPT0gJ20nKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoVHlwZUNNOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6Q007
CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnbScgJiYgc2Vjb25kQ2hhciA9PSAnbScpCi0gICAgICAg
IHJldHVybiBMZW5ndGhUeXBlTU07CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpNTTsK
ICAgICBpZiAoZmlyc3RDaGFyID09ICdpJyAmJiBzZWNvbmRDaGFyID09ICduJykKLSAgICAgICAg
cmV0dXJuIExlbmd0aFR5cGVJTjsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OklOOwog
ICAgIGlmIChmaXJzdENoYXIgPT0gJ3AnICYmIHNlY29uZENoYXIgPT0gJ3QnKQotICAgICAgICBy
ZXR1cm4gTGVuZ3RoVHlwZVBUOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UFQ7CiAg
ICAgaWYgKGZpcnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAnYycpCi0gICAgICAgIHJl
dHVybiBMZW5ndGhUeXBlUEM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQQzsKIAot
ICAgIHJldHVybiBMZW5ndGhUeXBlVW5rbm93bjsKKyAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
VW5rbm93bjsKIH0KIAotU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1v
ZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQotICAgIDogbV91bml0KHN0b3Jl
VW5pdChtb2RlLCBMZW5ndGhUeXBlTnVtYmVyKSkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlw
ZSBwcmltaXRpdmVUeXBlVG9MZW5ndGhUeXBlKHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUp
CiB7Ci0gICAgc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKKyAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVR5cGUpIHsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOgor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOworICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
UGVyY2VudGFnZTsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOgorICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RU1TOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FWFM6CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpFWFM7CisgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
UFg7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOgorICAgICAgICByZXR1cm4g
U1ZHTGVuZ3RoVHlwZTo6Q007CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOgor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TU07CisgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lOOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6SU47CisgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlw
ZTo6UFQ7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgorICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoVHlwZTo6UEM7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
S05PV046CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlVua25v
d247CisgICAgfQogfQogCi1TVkdMZW5ndGhWYWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZH
TGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwg
U1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSkKLSAgICA6IG1fdW5pdChzdG9yZVVuaXQobW9kZSwgdW5p
dFR5cGUpKQorc3RhdGljIGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgbGVuZ3Ro
VHlwZVRvUHJpbWl0aXZlVHlwZShTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAgc2V0
VmFsdWUodmFsdWUsIGNvbnRleHQpOworICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNh
c2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVU5LTk9XTjsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51bWJlcjoKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAgIGNhc2UgU1ZHTGVu
Z3RoVHlwZTo6UGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRTsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVNUzoKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6
RVhTOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7CisgICAgY2Fz
ZSBTVkdMZW5ndGhUeXBlOjpQWDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDTToKKyAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfQ007CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNTToKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpJTjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47CisgICAg
Y2FzZSBTVkdMZW5ndGhUeXBlOjpQVDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFQ7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKKyAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7CisgICAgfQogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBT
VkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJp
bmcsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShT
VkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKKyAg
ICA6IG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gMDsKLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQobW9kZSwgTGVuZ3RoVHlwZU51bWJlcik7
Ci0gICAgcmV0dXJuIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CisgICAgc2V0VmFs
dWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6b3Bl
cmF0b3I9PShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhWYWx1
ZTo6U1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5ndGhU
eXBlIGxlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICA6IG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICAsIG1fbGVuZ3RoVHlw
ZShsZW5ndGhUeXBlKQorICAgICwgbV9sZW5ndGhNb2RlKGxlbmd0aE1vZGUpCiB7Ci0gICAgcmV0
dXJuIG1fdW5pdCA9PSBvdGhlci5tX3VuaXQgJiYgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPT0g
b3RoZXIubV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgQVNTRVJUKG1fbGVuZ3RoVHlwZSAh
PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6b3Bl
cmF0b3IhPShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhWYWx1
ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
dmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2Rl
KQorICAgIDogbV9sZW5ndGhUeXBlKGxlbmd0aFR5cGUpCisgICAgLCBtX2xlbmd0aE1vZGUobGVu
Z3RoTW9kZSkKIHsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOworICAgIHNldFZhbHVl
KGNvbnRleHQsIHZhbHVlKTsKIH0KIAotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZywg
U1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUg
bmVnYXRpdmVWYWx1ZXNNb2RlKQorU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmlu
ZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQogewotICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aChtb2Rl
KTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobGVuZ3RoTW9kZSk7CiAKICAgICBpZiAobGVu
Z3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZykuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHBhcnNlRXJyb3IgPSBQYXJzaW5nQXR0cmlidXRlRmFpbGVkRXJyb3I7Ci0gICAgZWxzZSBp
ZiAobmVnYXRpdmVWYWx1ZXNNb2RlID09IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocyAmJiBsZW5ndGgu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQorICAgIGVsc2UgaWYgKG5lZ2F0aXZlVmFsdWVz
TW9kZSA9PSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCAmJiBsZW5ndGgudmFs
dWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQogICAgICAgICBwYXJzZUVycm9yID0gTmVnYXRpdmVW
YWx1ZUZvcmJpZGRlbkVycm9yOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotU1ZHTGVuZ3Ro
VHlwZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdFR5cGUoKSBjb25zdAorU1ZHTGVuZ3RoVmFsdWUgU1ZH
TGVuZ3RoVmFsdWU6OmJsZW5kKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgdG8sIGZsb2F0IHByb2dyZXNzKQoreworICAgIGlmICgoZnJvbS5pc1plcm8o
KSAmJiB0by5pc1plcm8oKSkKKyAgICAgICAgfHwgZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVu
Z3RoVHlwZTo6VW5rbm93bgorICAgICAgICB8fCB0by5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3Ro
VHlwZTo6VW5rbm93bgorICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgZnJvbS5sZW5ndGhU
eXBlKCkgIT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSAmJiB0by5sZW5ndGhUeXBlKCkgPT0g
U1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKKyAgICAgICAgfHwgKCF0by5pc1plcm8oKSAgICYm
IGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgJiYgdG8ubGVu
Z3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCisgICAgICAgIHx8ICghZnJv
bS5pc1plcm8oKSAmJiAhdG8uaXNaZXJvKCkgJiYgKGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xl
bmd0aFR5cGU6OkVNUyB8fCBmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpFWFMp
ICYmIGZyb20ubGVuZ3RoVHlwZSgpICE9IHRvLmxlbmd0aFR5cGUoKSkpCisgICAgICAgIHJldHVy
biB0bzsKKworICAgIGlmIChmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJj
ZW50YWdlIHx8IHRvLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSB7
CisgICAgICAgIGF1dG8gZnJvbVBlcmNlbnQgPSBmcm9tLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAx
MDA7CisgICAgICAgIGF1dG8gdG9QZXJjZW50ID0gdG8udmFsdWVBc1BlcmNlbnRhZ2UoKSAqIDEw
MDsKKyAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVyY2Vu
dCwgcHJvZ3Jlc3MpLCBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlIH07CisgICAgfQorCisgICAg
aWYgKGZyb20ubGVuZ3RoVHlwZSgpID09IHRvLmxlbmd0aFR5cGUoKSB8fCBmcm9tLmlzWmVybygp
IHx8IHRvLmlzWmVybygpIHx8IGZyb20uaXNSZWxhdGl2ZSgpKSB7CisgICAgICAgIGF1dG8gZnJv
bVZhbHVlID0gZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgYXV0byB0b1Zh
bHVlID0gdG8udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIHJldHVybiB7IFdlYkNv
cmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpLCB0by5pc1plcm8oKSA/IGZy
b20ubGVuZ3RoVHlwZSgpIDogdG8ubGVuZ3RoVHlwZSgpIH07CisgICAgfQorCisgICAgU1ZHTGVu
Z3RoQ29udGV4dCBub25SZWxhdGl2ZUxlbmd0aENvbnRleHQobnVsbHB0cik7CisgICAgYXV0byBm
cm9tVmFsdWVJblVzZXJVbml0cyA9IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFs
dWVUb1VzZXJVbml0cyhmcm9tLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpLCBmcm9tLmxlbmd0aFR5
cGUoKSwgZnJvbS5sZW5ndGhNb2RlKCkpOworICAgIGlmIChmcm9tVmFsdWVJblVzZXJVbml0cy5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8gZnJvbVZhbHVl
ID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZnJv
bVZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJldHVyblZhbHVlKCksIHRvLmxlbmd0aFR5cGUoKSwg
dG8ubGVuZ3RoTW9kZSgpKTsKKyAgICBpZiAoZnJvbVZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgZmxvYXQgdG9WYWx1ZSA9IHRvLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpOworICAgIHJldHVybiB7IFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpLCB0by5sZW5ndGhUeXBlKCkgfTsKK30K
KworU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShj
b25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGV4dHJhY3RUeXBl
KG1fdW5pdCk7CisgICAgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlID0gcHJpbWl0aXZlVHlwZVRv
TGVuZ3RoVHlwZSh2YWx1ZS5wcmltaXRpdmVUeXBlKCkpOworICAgIHJldHVybiBsZW5ndGhUeXBl
ID09IFNWR0xlbmd0aFR5cGU6OlVua25vd24gPyBTVkdMZW5ndGhWYWx1ZSgpIDogU1ZHTGVuZ3Ro
VmFsdWUodmFsdWUuZmxvYXRWYWx1ZSgpLCBsZW5ndGhUeXBlKTsKIH0KIAotU1ZHTGVuZ3RoTW9k
ZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdE1vZGUoKSBjb25zdAorUmVmPENTU1ByaW1pdGl2ZVZhbHVl
PiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1
ZSYgbGVuZ3RoKQogewotICAgIHJldHVybiBleHRyYWN0TW9kZShtX3VuaXQpOworICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxlbmd0aC52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KSwgbGVuZ3RoVHlwZVRvUHJpbWl0aXZlVHlwZShsZW5ndGgubGVuZ3RoVHlwZSgpKSk7Cit9CisK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0
IFN0cmluZyYgdmFsdWVBc1N0cmluZywgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQoreworICAg
IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gMDsKKyAgICBtX2xlbmd0aE1vZGUgPSBsZW5ndGhN
b2RlOworICAgIG1fbGVuZ3RoVHlwZSA9IFNWR0xlbmd0aFR5cGU6Ok51bWJlcjsKKyAgICByZXR1
cm4gc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3Ro
VmFsdWU6OnZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CkBAIC0x
NzUsMzcgKzI0NywzNSBAQCBmbG9hdCBTVkdMZW5ndGhWYWx1ZTo6dmFsdWUoY29uc3QgU1ZHTGVu
Z3RoQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoVmFsdWU6OnZhbHVl
Rm9yQmluZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkgY29uc3QKK1N0cmlu
ZyBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY29udmVydFZhbHVlVG9Vc2VyVW5pdHMobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMsIGV4
dHJhY3RNb2RlKG1fdW5pdCksIGV4dHJhY3RUeXBlKG1fdW5pdCkpOworICAgIHJldHVybiBtYWtl
U3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMpLCBsZW5ndGhUeXBlVG9TdHJpbmcobV9sZW5ndGhUeXBlKSk7CiB9CiAKLUV4Y2VwdGlv
bk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBl
IHVuaXRUeXBlKQorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJp
bmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUU6IFNlZW1zIGxpa2UgYSBidWcgdGhhdCB3ZSBjaGFuZ2UgdGhlIHZhbHVlIG9mIG1fdW5p
dCBldmVuIGlmIHNldFZhbHVlIHRocm93cyBhbiBleGNlcHRpb24uCi0gICAgbV91bml0ID0gc3Rv
cmVVbml0KG1vZGUsIHVuaXRUeXBlKTsKLSAgICByZXR1cm4gc2V0VmFsdWUodmFsdWUsIGNvbnRl
eHQpOworICAgIHJldHVybiBjb250ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzLCBtX2xlbmd0aFR5cGUsIG1fbGVuZ3RoTW9kZSk7CiB9CiAKLUV4Y2Vw
dGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSwgY29uc3Qg
U1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZh
bHVlOjpzZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1
ZSkKIHsKICAgICAvLyAxMDAlID0gMTAwLjAgaW5zdGVhZCBvZiAxLjAgZm9yIGhpc3RvcmljYWwg
cmVhc29ucywgdGhpcyBjb3VsZCBldmVudHVhbGx5IGJlIGNoYW5nZWQKLSAgICBpZiAoZXh0cmFj
dFR5cGUobV91bml0KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAobV9sZW5ndGhU
eXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHZhbHVlID0gdmFsdWUg
LyAxMDA7CiAKLSAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gY29udGV4dC5jb252ZXJ0VmFsdWVG
cm9tVXNlclVuaXRzKHZhbHVlLCBleHRyYWN0TW9kZShtX3VuaXQpLCBleHRyYWN0VHlwZShtX3Vu
aXQpKTsKKyAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gY29udGV4dC5jb252ZXJ0VmFsdWVGcm9t
VXNlclVuaXRzKHZhbHVlLCBtX2xlbmd0aFR5cGUsIG1fbGVuZ3RoTW9kZSk7CiAgICAgaWYgKGNv
bnZlcnRlZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udmVydGVkVmFs
dWUucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gY29u
dmVydGVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7CiAgICAgcmV0dXJuIHsgfTsKIH0KLWZs
b2F0IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzUGVyY2VudGFnZSgpIGNvbnN0Ci17Ci0gICAgLy8g
MTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHRoaXMg
Y291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgaWYgKGV4dHJhY3RUeXBlKG1fdW5pdCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0cyAvIDEwMDsKIAotICAgIHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhD
b250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlLCBT
VkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCit7CisgICAgLy8gRklYTUU6IFNlZW1zIGxpa2UgYSBi
dWcgdGhhdCB3ZSBjaGFuZ2UgdGhlIHZhbHVlIG9mIG1fdW5pdCBldmVuIGlmIHNldFZhbHVlIHRo
cm93cyBhbiBleGNlcHRpb24uCisgICAgbV9sZW5ndGhNb2RlID0gbGVuZ3RoTW9kZTsKKyAgICBt
X2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOworICAgIHJldHVybiBzZXRWYWx1ZShjb250ZXh0LCB2
YWx1ZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFz
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMjIxLDE3NSArMjkxLDI5IEBAIEV4Y2Vw
dGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nKQogICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIGNvbnZlcnRlZE51bWJl
ciwgZmFsc2UpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAot
ICAgIGF1dG8gdHlwZSA9IHBhcnNlTGVuZ3RoVHlwZShwdHIsIGVuZCk7Ci0gICAgaWYgKHR5cGUg
PT0gTGVuZ3RoVHlwZVVua25vd24pCisgICAgYXV0byBsZW5ndGhUeXBlID0gcGFyc2VMZW5ndGhU
eXBlKHB0ciwgZW5kKTsKKyAgICBpZiAobGVuZ3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpVbmtu
b3duKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKIAotICAgIG1f
dW5pdCA9IHN0b3JlVW5pdChleHRyYWN0TW9kZShtX3VuaXQpLCB0eXBlKTsKKyAgICBtX2xlbmd0
aFR5cGUgPSBsZW5ndGhUeXBlOwogICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gY29udmVy
dGVkTnVtYmVyOwogICAgIHJldHVybiB7IH07CiB9CiAKLVN0cmluZyBTVkdMZW5ndGhWYWx1ZTo6
dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoRm9ybWF0dGVk
TnVtYmVyOjpmaXhlZFByZWNpc2lvbihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyksIGxlbmd0aFR5
cGVUb1N0cmluZyhleHRyYWN0VHlwZShtX3VuaXQpKSk7Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+
IFNWR0xlbmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHR5
cGUsIGZsb2F0IHZhbHVlKQorRXhjZXB0aW9uT3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnZl
cnRUb1NwZWNpZmllZFVuaXRzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQsIFNWR0xl
bmd0aFR5cGUgbGVuZ3RoVHlwZSkKIHsKLSAgICBpZiAodHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93
biB8fCB0eXBlID4gTGVuZ3RoVHlwZVBDKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
U3VwcG9ydGVkRXJyb3IgfTsKLQotICAgIG1fdW5pdCA9IHN0b3JlVW5pdChleHRyYWN0TW9kZSht
X3VuaXQpLCBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih0eXBlKSk7Ci0gICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeGNlcHRpb25P
cjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQg
c2hvcnQgdHlwZSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkKLXsKLSAgICBpZiAo
dHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93biB8fCB0eXBlID4gTGVuZ3RoVHlwZVBDKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLQogICAgIGF1dG8gdmFs
dWVJblVzZXJVbml0cyA9IHZhbHVlRm9yQmluZGluZ3MoY29udGV4dCk7CiAgICAgaWYgKHZhbHVl
SW5Vc2VyVW5pdHMuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB2YWx1ZUluVXNlclVu
aXRzLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGF1dG8gb3JpZ2luYWxVbml0QW5kVHlwZSA9
IG1fdW5pdDsKLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91bml0KSwgc3Rh
dGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odHlwZSkpOwotICAgIGF1dG8gcmVzdWx0ID0gc2V0VmFs
dWUodmFsdWVJblVzZXJVbml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udGV4dCk7Ci0gICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewotICAgICAgICBtX3VuaXQgPSBvcmlnaW5hbFVu
aXRBbmRUeXBlOwotICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi1TVkdMZW5ndGhWYWx1ZSBTVkdMZW5ndGhWYWx1
ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlJiB2YWx1ZSkK
LXsKLSAgICBTVkdMZW5ndGhUeXBlIHR5cGU7Ci0gICAgc3dpdGNoICh2YWx1ZS5wcmltaXRpdmVU
eXBlKCkpIHsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOgotICAgICAg
ICB0eXBlID0gTGVuZ3RoVHlwZU51bWJlcjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBl
UGVyY2VudGFnZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0VNUzoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVFTVM7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM6Ci0gICAgICAgIHR5cGUgPSBMZW5n
dGhUeXBlRVhTOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlUFg7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5
cGVDTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01N
OgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZU1NOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU46Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlSU47
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QVDoKLSAg
ICAgICAgdHlwZSA9IExlbmd0aFR5cGVQVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZVBDOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjoKLSAg
ICBkZWZhdWx0OgorICAgIGF1dG8gb3JpZ2luYWxMZW5ndGhUeXBlID0gbV9sZW5ndGhUeXBlOwor
ICAgIG1fbGVuZ3RoVHlwZSA9IGxlbmd0aFR5cGU7CisgICAgYXV0byByZXN1bHQgPSBzZXRWYWx1
ZShjb250ZXh0LCB2YWx1ZUluVXNlclVuaXRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpKTsKKyAgICBp
ZiAoIXJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICB9Owot
Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKHR5cGUsIHZhbHVlLmZsb2F0VmFsdWUoKSk7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0K
IAotUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVW
YWx1ZShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgbGVuZ3RoKQotewotICAgIENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZSBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19VTktOT1dOOwot
ICAgIHN3aXRjaCAobGVuZ3RoLnVuaXRUeXBlKCkpIHsKLSAgICBjYXNlIExlbmd0aFR5cGVVbmtu
b3duOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6Ci0gICAgICAg
IGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKLSAgICAgICAgY3NzVHlwZSA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBM
ZW5ndGhUeXBlRU1TOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
TVM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKLSAgICAgICAgY3Nz
VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIExlbmd0aFR5cGVQWDoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgotICAgICAgICBj
c3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBMZW5ndGhUeXBlTU06Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX01NOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKLSAgICAgICAg
Y3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGVuZ3RoVHlwZVBUOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUEM6Ci0gICAgICAg
IGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOwotICAgICAgICBicmVhazsKLSAg
ICB9OwotCi0gICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoLnZhbHVl
SW5TcGVjaWZpZWRVbml0cygpLCBjc3NUeXBlKTsKLX0KLQotU1ZHTGVuZ3RoTW9kZSBTVkdMZW5n
dGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQotewotICAgIHVzaW5nIE1hcCA9IEhhc2hNYXA8UXVhbGlmaWVk
TmFtZSwgU1ZHTGVuZ3RoTW9kZT47Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPE1hcD4gbWFw
ID0gW10gewotICAgICAgICBzdHJ1Y3QgTW9kZSB7Ci0gICAgICAgICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lOwotICAgICAgICAgICAgU1ZHTGVuZ3RoTW9kZSBtb2RlOwotICAgICAgICB9
OwotICAgICAgICBzdGF0aWMgY29uc3QgTW9kZSBtb2Rlc1tdID0gewotICAgICAgICAgICAgeyBT
VkdOYW1lczo6eEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1l
czo6eUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmN4
QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpjeUF0dHIs
IExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmR4QXR0ciwgTGVu
Z3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpkeUF0dHIsIExlbmd0aE1v
ZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OmZ4QXR0ciwgTGVuZ3RoTW9kZVdp
ZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpmeUF0dHIsIExlbmd0aE1vZGVIZWlnaHQg
fSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OndpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0s
Ci0gICAgICAgICAgICB7IFNWR05hbWVzOjpoZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0s
Ci0gICAgICAgICAgICB7IFNWR05hbWVzOjp4MUF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAg
ICAgICAgICAgeyBTVkdOYW1lczo6eDJBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAg
ICAgIHsgU1ZHTmFtZXM6OnkxQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAg
eyBTVkdOYW1lczo6eTJBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNW
R05hbWVzOjpyZWZYQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05h
bWVzOjpyZWZZQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1l
czo6bWFya2VyV2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZH
TmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAg
IHsgU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAg
ICAgIHsgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAg
ICAgIH07Ci0gICAgICAgIE1hcCBtYXA7Ci0gICAgICAgIGZvciAoYXV0byYgbW9kZSA6IG1vZGVz
KQotICAgICAgICAgICAgbWFwLmFkZChtb2RlLm5hbWUsIG1vZGUubW9kZSk7Ci0gICAgICAgIHJl
dHVybiBtYXA7Ci0gICAgfSgpOwotICAgIAotICAgIGF1dG8gcmVzdWx0ID0gbWFwLmdldCgpLmZp
bmQoYXR0ck5hbWUpOwotICAgIGlmIChyZXN1bHQgPT0gbWFwLmdldCgpLmVuZCgpKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoTW9kZU90aGVyOwotICAgIHJldHVybiByZXN1bHQtPnZhbHVlOworICAg
IG1fbGVuZ3RoVHlwZSA9IG9yaWdpbmFsTGVuZ3RoVHlwZTsKKyAgICByZXR1cm4gcmVzdWx0LnJl
bGVhc2VFeGNlcHRpb24oKTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aFZhbHVlLmgKaW5kZXggOTI2NjFiMjFlNTNlNzAwY2ExYmFmZWU1MWUxZjdjNWFjOWQ2ZTM0NS4u
NmU5OTI2YzlhMDIyNWRkOGVkZGM5YzYzMmM4N2U3YzVhOTQwMDMyZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aFZhbHVlLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCwxNDEgKzIxLDkwIEBACiAKICNwcmFnbWEg
b25jZQogCi0jaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU1ZHTGVu
Z3RoQ29udGV4dC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFy
c2luZ0Vycm9yLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLWNsYXNzIFF1YWxpZmllZE5h
bWU7CitjbGFzcyBTVkdMZW5ndGhDb250ZXh0OworCitlbnVtIGNsYXNzIFNWR0xlbmd0aFR5cGUg
OiB1aW50OF90IHsKKyAgICBVbmtub3duID0gMCwKKyAgICBOdW1iZXIsCisgICAgUGVyY2VudGFn
ZSwKKyAgICBFTVMsCisgICAgRVhTLAorICAgIFBYLAorICAgIENNLAorICAgIE1NLAorICAgIElO
LAorICAgIFBULAorICAgIFBDCit9OworCitlbnVtIGNsYXNzIFNWR0xlbmd0aE1vZGUgOiB1aW50
OF90IHsKKyAgICBXaWR0aCwKKyAgICBIZWlnaHQsCisgICAgT3RoZXIKK307CiAKLWVudW0gU1ZH
TGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIHsKLSAgICBBbGxvd05lZ2F0aXZlTGVuZ3RocywKLSAg
ICBGb3JiaWROZWdhdGl2ZUxlbmd0aHMKK2VudW0gY2xhc3MgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1
ZXNNb2RlIDogdWludDhfdCB7CisgICAgQWxsb3csCisgICAgRm9yYmlkCiB9OwogCiBjbGFzcyBT
VkdMZW5ndGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0g
ICAgLy8gRklYTUU6IE9uY2UgYWxsIFNWR0xlbmd0aFZhbHVlIHVzZXJzIHVzZSBMZW5ndGggaW50
ZXJuYWxseSwgd2UgbWFrZSB0aGlzIGEgd3JhcHBlciBmb3IgTGVuZ3RoLgotICAgIFNWR0xlbmd0
aFZhbHVlKFNWR0xlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIsIGNvbnN0IFN0cmluZyYgdmFs
dWVBc1N0cmluZyA9IFN0cmluZygpKTsKLSAgICBTVkdMZW5ndGhWYWx1ZShjb25zdCBTVkdMZW5n
dGhDb250ZXh0JiwgZmxvYXQsIFNWR0xlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIsIFNWR0xl
bmd0aFR5cGUgPSBMZW5ndGhUeXBlTnVtYmVyKTsKKyAgICBTVkdMZW5ndGhWYWx1ZShTVkdMZW5n
dGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmlu
ZyA9IFN0cmluZygpKTsKKyAgICBTVkdMZW5ndGhWYWx1ZShmbG9hdCB2YWx1ZUluU3BlY2lmaWVk
VW5pdHMsIFNWR0xlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUgPSBTVkdMZW5ndGhNb2RlOjpPdGhl
cik7CisgICAgU1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBT
VkdMZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyLCBTVkdMZW5ndGhNb2RlID0gU1ZH
TGVuZ3RoTW9kZTo6T3RoZXIpOwogCi0gICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSgpIGNvbnN0
OwotICAgIFNWR0xlbmd0aE1vZGUgdW5pdE1vZGUoKSBjb25zdDsKKyAgICBzdGF0aWMgU1ZHTGVu
Z3RoVmFsdWUgY29uc3RydWN0KFNWR0xlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYsIFNWR1BhcnNp
bmdFcnJvciYsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSA9IFNWR0xlbmd0aE5lZ2F0aXZl
VmFsdWVzTW9kZTo6QWxsb3cpOworICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBibGVuZChjb25z
dCBTVkdMZW5ndGhWYWx1ZSYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHRvLCBmbG9hdCBw
cm9ncmVzcyk7CisgICAgCisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGZyb21DU1NQcmltaXRp
dmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8Q1NTUHJp
bWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsK
IAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdMZW5ndGhWYWx1ZSYpIGNvbnN0OwotICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTVkdMZW5ndGhWYWx1ZSYpIGNvbnN0OworICAgIFNWR0xl
bmd0aFR5cGUgbGVuZ3RoVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoVHlwZTsgfQorICAg
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoTW9kZTsg
fQogCi0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGNvbnN0cnVjdChTVkdMZW5ndGhNb2RlLCBj
b25zdCBTdHJpbmcmLCBTVkdQYXJzaW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGUgPSBBbGxvd05lZ2F0aXZlTGVuZ3Rocyk7CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJl
dHVybiAhbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7ICB9CisgICAgYm9vbCBpc1JlbGF0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2Ug
fHwgbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OkVNUyB8fCBtX2xlbmd0aFR5cGUgPT0g
U1ZHTGVuZ3RoVHlwZTo6RVhTOyB9CiAKICAgICBmbG9hdCB2YWx1ZShjb25zdCBTVkdMZW5ndGhD
b250ZXh0JikgY29uc3Q7CisgICAgZmxvYXQgdmFsdWVBc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJl
dHVybiBtX2xlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSA/IG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzIC8gMTAwIDogbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7IH0KKyAgICBm
bG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0czsgfQorICAgIAorICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAg
ICAgRXhjZXB0aW9uT3I8ZmxvYXQ+IHZhbHVlRm9yQmluZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29u
dGV4dCYpIGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGZsb2F0LCBjb25z
dCBTVkdMZW5ndGhDb250ZXh0Jik7Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWUoY29u
c3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBl
KTsKIAotICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzOyB9CiAgICAgdm9pZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5p
dHMoZmxvYXQgdmFsdWUpIHsgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsgfQorICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9h
dCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4
dCYsIGZsb2F0LCBTVkdMZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlKTsKIAotICAgIGZsb2F0IHZh
bHVlQXNQZXJjZW50YWdlKCkgY29uc3Q7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNv
bnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5n
Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcm
LCBTVkdMZW5ndGhNb2RlKTsKLSAgICAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBuZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0LCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMp
OwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVk
IHNob3J0LCBjb25zdCBTVkdMZW5ndGhDb250ZXh0Jik7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rp
b25zCi0gICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gdHlw
ZSA9IHVuaXRUeXBlKCk7Ci0gICAgICAgIHJldHVybiB0eXBlID09IExlbmd0aFR5cGVQZXJjZW50
YWdlIHx8IHR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCB0eXBlID09IExlbmd0aFR5cGVFWFM7Ci0g
ICAgfQotCi0gICAgYm9vbCBpc1plcm8oKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7Ci0gICAgfQotCi0gICAgc3RhdGljIFNWR0xlbmd0aFZh
bHVlIGZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwotICAg
IHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmKTsKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlRm9y
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgU1ZH
TGVuZ3RoVmFsdWUgYmxlbmQoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGZsb2F0IHByb2dy
ZXNzKSBjb25zdAotICAgIHsKLSAgICAgICAgYXV0byB0b1R5cGUgPSB1bml0VHlwZSgpOwotICAg
ICAgICBhdXRvIGZyb21UeXBlID0gZnJvbS51bml0VHlwZSgpOwotICAgICAgICBpZiAoKGZyb20u
aXNaZXJvKCkgJiYgaXNaZXJvKCkpCi0gICAgICAgICAgICB8fCBmcm9tVHlwZSA9PSBMZW5ndGhU
eXBlVW5rbm93bgotICAgICAgICAgICAgfHwgdG9UeXBlID09IExlbmd0aFR5cGVVbmtub3duCi0g
ICAgICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgZnJvbVR5cGUgIT0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2UgJiYgdG9UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICAgICAg
fHwgKCFpc1plcm8oKSAmJiBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSAmJiB0b1R5
cGUgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAgICAgICB8fCAoIWZyb20uaXNaZXJv
KCkgJiYgIWlzWmVybygpICYmIChmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IGZyb21UeXBl
ID09IExlbmd0aFR5cGVFWFMpICYmIGZyb21UeXBlICE9IHRvVHlwZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0KLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotCi0gICAgICAg
IGlmIChmcm9tVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fCB0b1R5cGUgPT0gTGVuZ3Ro
VHlwZVBlcmNlbnRhZ2UpIHsKLSAgICAgICAgICAgIGF1dG8gZnJvbVBlcmNlbnQgPSBmcm9tLnZh
bHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7Ci0gICAgICAgICAgICBhdXRvIHRvUGVyY2VudCA9IHZh
bHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxlbmd0
aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVQZXJjZW50YWdlLCBXZWJDb3JlOjpi
bGVuZChmcm9tUGVyY2VudCwgdG9QZXJjZW50LCBwcm9ncmVzcykpOwotICAgICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAg
ICAgICAgICAgcmV0dXJuIGxlbmd0aDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmcm9tVHlw
ZSA9PSB0b1R5cGUgfHwgZnJvbS5pc1plcm8oKSB8fCBpc1plcm8oKSB8fCBmcm9tVHlwZSA9PSBM
ZW5ndGhUeXBlRU1TIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVFWFMpIHsKLSAgICAgICAgICAg
IGF1dG8gZnJvbVZhbHVlID0gZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKLSAgICAgICAg
ICAgIGF1dG8gdG9WYWx1ZSA9IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpOwotICAgICAgICAgICAg
aWYgKGlzWmVybygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byByZXN1bHQgPSBsZW5ndGgubmV3
VmFsdWVTcGVjaWZpZWRVbml0cyhmcm9tVHlwZSwgV2ViQ29yZTo6YmxlbmQoZnJvbVZhbHVlLCB0
b1ZhbHVlLCBwcm9ncmVzcykpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHModG9UeXBlLCBXZWJDb3JlOjpibGVuZChmcm9tVmFsdWUsIHRvVmFsdWUsIHByb2dy
ZXNzKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBsZW5ndGg7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlQoIWlzUmVsYXRpdmUoKSk7
Ci0gICAgICAgIEFTU0VSVCghZnJvbS5pc1JlbGF0aXZlKCkpOwotCi0gICAgICAgIFNWR0xlbmd0
aENvbnRleHQgbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0KG51bGxwdHIpOwotICAgICAgICBhdXRv
IGZyb21WYWx1ZUluVXNlclVuaXRzID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNvbnZlcnRW
YWx1ZVRvVXNlclVuaXRzKGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCksIGZyb20udW5pdE1v
ZGUoKSwgZnJvbVR5cGUpOwotICAgICAgICBpZiAoZnJvbVZhbHVlSW5Vc2VyVW5pdHMuaGFzRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAgICAgIGF1dG8gZnJvbVZh
bHVlID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMo
ZnJvbVZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJldHVyblZhbHVlKCksIHVuaXRNb2RlKCksIHRv
VHlwZSk7Ci0gICAgICAgIGlmIChmcm9tVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgICAgIGZsb2F0IHRvVmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRV
bml0cyh0b1R5cGUsIFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUo
KSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAg
fQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKGNvbnN0IFNW
R0xlbmd0aENvbnRleHQmLCBTVkdMZW5ndGhUeXBlKTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX3VuaXQ7CisgICAg
U1ZHTGVuZ3RoVHlwZSBtX2xlbmd0aFR5cGUgeyBTVkdMZW5ndGhUeXBlOjpOdW1iZXIgfTsKKyAg
ICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7IFNWR0xlbmd0aE1vZGU6Ok90aGVyIH07CiB9
OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhWYWx1ZT4g
ewotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsVmFsdWUoKSB7IHJldHVybiB7IH07
IH0KLSAgICBzdGF0aWMgT3B0aW9uYWw8U1ZHTGVuZ3RoVmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lLCBjb25zdCBTdHJpbmcmIHN0cmluZykKLSAgICB7Ci0gICAgICAg
IFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICAgICAgbGVuZ3RoLnNldFZhbHVlQXNTdHJpbmco
c3RyaW5nLCBTVkdMZW5ndGhWYWx1ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmli
dXRlKGF0dHJOYW1lKSkuaGFzRXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0g
ICAgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxl
bmd0aCkgeyByZXR1cm4gbGVuZ3RoLnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKK2lubGluZSBib29s
IG9wZXJhdG9yPT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVl
JiBiKQoreworICAgIHJldHVybiBhLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID09IGIudmFsdWVJ
blNwZWNpZmllZFVuaXRzKCkgJiYgYS5sZW5ndGhUeXBlKCkgPT0gYi5sZW5ndGhUeXBlKCkgJiYg
YS5sZW5ndGhNb2RlKCkgPT0gYi5sZW5ndGhNb2RlKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBiKQor
eworICAgIHJldHVybiBhLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpICE9IGIudmFsdWVJblNwZWNp
ZmllZFVuaXRzKCkgfHwgYS5sZW5ndGhUeXBlKCkgIT0gYi5sZW5ndGhUeXBlKCkgfHwgYS5sZW5n
dGhNb2RlKCkgIT0gYi5sZW5ndGhNb2RlKCk7Cit9CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCA2NWZlNTRmYTgwNDYxYTk3OWRmNjYxZGFk
MWY5MTFkYTYxMTllOWZhLi4zYzRkMzllMDI1MWYzNDhlNzdhY2MxMWVkZThjZjNkYmM5N2E0YzVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKQEAgLTU1LDEzICs1NSwxMyBA
QCB2b2lkIFNWR0xpbmVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9y
ID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAg
IG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94MS0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTFB
dHRyKQotICAgICAgICBtX3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eDJBdHRyKQotICAgICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikKLSAgICAgICAgbV95Mi0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5h
bWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAppbmRleCA1ODI3Nzdh
N2FkZjdjMzliMjFiNmI3MDhlMGVkZWZhNGQ4YmJjMDM5Li4zNmEwYmI0YzI5YjQwNzI4MzlkYjhh
ZWM2ZjJhM2M3NzdmN2RmYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaApAQCAt
NTYsMTAgKzU2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3QgZmluYWw7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3Ry
eSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kyIHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDdkN2Q3YzIzNjRmMmU0Y2Y1ZTgyNGRiZjAwZGM4ZDQ0
YTI4Mzc2MTAuLjlmYTk1Y2UzZWViODIzMDY4NzZiZjZkNmI4MjMwNzFiNDBiOWI3NWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC02
NCwxMyArNjQsMTMgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEKICAgICBTVkdQYXJzaW5nRXJy
b3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eDFB
dHRyKQotICAgICAgICBtX3gxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgbV95MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV95MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikKLSAgICAgICAgbV94Mi0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIG1f
eTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feTItPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihw
YXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuaAppbmRleCBiMGU2ZWI1MGQ0ZWE2ODgwZjZjOTFiMGFiYzUxZDM2
NTFhNDliMjIyLi5hZWZlNjRjZTE0Njc2Nzg0YzBkMWE5MjRjZTNkZmVhZDdiYWNjMzczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCkBAIC01OSwx
MCArNTksMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0
aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xl
bmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHAKaW5kZXggZjUzNDYyNDBmMDE2MTU1N2IyYjllM2Y2NDk0YWE2ZjJl
MTVkY2Q4OS4uODMwNmZkNzZiY2E3OWU4MDFlOTM2MGYyMzlkYTdiZThiOWQ2N2ZmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtNzksMTMgKzc5LDEzIEBAIHZv
aWQgU1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBO
b0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJlZlhBdHRyKQotICAgICAgICBt
X3JlZlgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9yZWZYLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0
aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpy
ZWZZQXR0cikKLSAgICAgICAgbV9yZWZZLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3JlZlktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIpCi0gICAgICAgIG1fbWFya2VyV2lk
dGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9tYXJrZXJXaWR0aC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6bWFya2VySGVpZ2h0QXR0cikKLSAgICAgICAgbV9tYXJrZXJIZWlnaHQtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fbWFya2VySGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VF
cnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApp
bmRleCAxYzg2ZTc1OTc4ZWZlNjAwMGExNzVhMDRhMTg4ZjBhMTJhZmJmNjI0Li5mZjc2YjA3MmIz
ZWI1MjMzZDlhYWFlMWVjMTM4NjA2NTVhZjA2Mzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJr
ZXJFbGVtZW50LmgKQEAgLTg4LDEwICs4OCwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0T3Jp
ZW50KFNWR01hcmtlck9yaWVudFR5cGUsIGNvbnN0IFNWR0FuZ2xlVmFsdWUmKTsKIAogICAgIFBy
b3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fcmVmWCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yZWZZIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJXaWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMyIpIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX21hcmtlckhlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgIjMiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV9yZWZYIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpX
aWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcmVmWSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJXaWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIzIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fbWFya2VySGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIzIikgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVt
ZXJhdGlvbj4gbV9tYXJrZXJVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0
aGlzLCBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRoKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEFu
Z2xlPiBtX29yaWVudEFuZ2xlIHsgU1ZHQW5pbWF0ZWRBbmdsZTo6Y3JlYXRlKHRoaXMpIH07CiAg
ICAgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4gbV9vcmllbnRUeXBlIHsgU1ZHQW5pbWF0ZWRP
cmllbnRUeXBlOjpjcmVhdGUodGhpcywgU1ZHTWFya2VyT3JpZW50QW5nbGUpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCA4ZjJhODAyYWVlMGZiZjQ4NzRlNDQ2ODRl
MmE4NDZhYmYwZmM4NjdjLi5iN2EwZjExYmFmYzQwNmE4YjY2ZTkxZjljMDhkOGJjYWUwMmYzNGU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTgyLDEzICs4MiwxMyBA
QCB2b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9y
ID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAg
bV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIp
Ci0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAg
IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9y
KHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQu
aAppbmRleCA5NTY0NjQ5YmM4M2MzNDEyYzQwNjRkMDMwM2Q4MmQ1ODRiMjM3OTZmLi5jM2U0OWJh
YWZhOTgxZGQ1Nzk3ZTU1NGY4OTU2NGQyZDE0YzQ2NjA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuaApAQCAtNjQsMTAgKzY0LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUHJv
cGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlV2lkdGgsICItMTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIi0xMCUi
KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTIwJSIpIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCwgIjEyMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgIi0xMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICItMTAlIikg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTIwJSIpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMTIwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1h
dGVkRW51bWVyYXRpb24+IG1fbWFza1VuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3Jl
YXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkg
fTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tYXNrQ29udGVudFVuaXRzIHsg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAppbmRleCBjZGRjM2EzZThiMTM4M2YwNjBmNDkxZmRlNjM2YmM5MWVmNjQ5
ZTg3Li44Mzg5YTcxZjEwYzAxZmZmZjY3MGFkMWMzYjc5Mzc1YmM5NGIxZWY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTkzLDEzICs5MywxMyBAQCB2b2lk
IFNWR1BhdHRlcm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaQogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAg
IG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2
ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9y
KHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuaAppbmRleCBkMWFkNTljOGRlNGJlYjk4YTAwM2U5YjFhZmRmNDYzMWE4YTFhZGZjLi4x
ZTY2MWQ3ZmQ0NjVhYjliYjc4ZWFlNmNhOWVhNjFlNmQ2MDdkMTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0dGVybkVsZW1lbnQuaApAQCAtNzUsMTAgKzc1LDEwIEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsg
fQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lk
dGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRo
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKICAgICBSZWY8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9wYXR0ZXJuVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0
aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5E
SU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3BhdHRlcm5Db250
ZW50VW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5
cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFKSB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZFRyYW5zZm9ybUxpc3Q+IG1fcGF0dGVyblRyYW5zZm9ybSB7IFNWR0FuaW1hdGVkVHJhbnNmb3Jt
TGlzdDo6Y3JlYXRlKHRoaXMpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGIxMWQ4NzU0ODI2NTRhYTc1Njg5NDg5NDkzNTZmMTQ5
NmFlYzA0YzUuLmZlMWQ0OTg4MDdjYzkwYTZhNzMyMTI5MDYzOGRmYzliZjQ5ZTBhNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC02
NiwxNyArNjYsMTcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEEKICAgICBTVkdQYXJzaW5nRXJy
b3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hB
dHRyKQotICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
Y3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICBtX3ItPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhlciwgdmFsdWUs
IHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3ItPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90
aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3Ji
aWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeEF0dHIpCi0gICAgICAgIG1f
ZngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9meC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZnlBdHRy
KQotICAgICAgICBtX2Z5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2Z5
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhN
b2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6ZnJBdHRyKQotICAgICAgICBtX2ZyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBG
b3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9mci0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAg
cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCmluZGV4IGYz
MTVkOTQ4MDhjNWRkOGNiZjQxOTJhYmExZmQwNzRlNDY1ZmEwMzkuLjg0ZjExNTg4ZjNlMjgxZTZm
NmUwN2E2MDlkMDg5YTk3ODcwOGEzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50LmgKQEAgLTYzLDEyICs2MywxMiBAQCBwcml2YXRlOgogICAgIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVy
dHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCAiNTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICI1MCUiKSB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsICI1MCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9meCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9meSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fZnIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVPdGhlciwgIjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiNTAl
IikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjUwJSIpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IFNWR0xlbmd0aE1vZGU6Ok90aGVyLCAiNTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fZnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9meSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9mciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6T3RoZXIsICIwJSIpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAppbmRleCBlYjUzOTk4MGI1ZTkx
MTZiMWYyOGIyNjBmMzA4ZjAxNWVhODkwNjE3Li5lY2ExM2YwNDY0ZThkNmZhNGZhZmVmMWVlYWIx
NGVhYmI1N2QxYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKQEAgLTU4
LDE3ICs1OCwxNyBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogICAgIFNWR1BhcnNpbmdFcnJv
ciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0
cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAg
ICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6cnhBdHRyKQotICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yeC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKLSAgICAgICAgbV9yeS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAg
ICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZh
bHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRo
QXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVn
YXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX2hl
aWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1
ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgKaW5k
ZXggZmMyNDc5Mjg2ZWU3YmE0NWJjNzY2OGJlZGU4M2I3NWY0Njc5Y2E0ZS4uYzVmNWYyYzBlNGMw
NTU1YTQ2ZTBiMjVmYTkyZTUzZjY5NTgyNTgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmgKQEAgLTYxLDEyICs2MSwxMiBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVy
VHJlZVBvc2l0aW9uJikgZmluYWw7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGgg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9yeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IGM1N2NmZmM1OTFhYTg3ZDA0YTg2
ZDU5MGUzZTY1NzA0MjBkZWI5MmMuLmQ3NTdlYWM0ZTQ3Mjg2ZDZkNDAxMGM4Y2Y4ZDVjNzM5NjEw
OTI3MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTIzMSwyMyArMjMx
LDIzIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VF
cnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAg
ICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlB
dHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OndpZHRoQXR0cikgewotICAgICAgICBhdXRvIGxlbmd0aCA9IFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVu
Z3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpOwogICAgICAgICBpZiAocGFyc2VFcnJvciAh
PSBOb0Vycm9yIHx8IHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgZGVmaW5pdGVseSB0aGUgY29ycmVjdCBiZWhhdmlvciBmb3IgYSBtaXNzaW5nL3JlbW92
ZWQgYXR0cmlidXRlLgogICAgICAgICAgICAgLy8gTm90IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0
aGUgZW1wdHkgc3RyaW5nIG9yIGZvciBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBwYXJzZWQuCi0g
ICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShMZW5ndGhNb2RlV2lkdGgsICIxMDAl
Il9zKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGU6
OldpZHRoLCAiMTAwJSJfcyk7CiAgICAgICAgIH0KICAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZh
bEludGVybmFsKGxlbmd0aCk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWln
aHRBdHRyKSB7Ci0gICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5n
dGhzKTsKKyAgICAgICAgYXV0byBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZl
VmFsdWVzTW9kZTo6Rm9yYmlkKTsKICAgICAgICAgaWYgKHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8
fCB2YWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGRlZmlu
aXRlbHkgdGhlIGNvcnJlY3QgYmVoYXZpb3IgZm9yIGEgcmVtb3ZlZCBhdHRyaWJ1dGUuCiAgICAg
ICAgICAgICAvLyBOb3Qgc3VyZSBpdCdzIGNvcnJlY3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcgb3Ig
Zm9yIHNvbWV0aGluZyB0aGF0IGNhbid0IGJlIHBhcnNlZC4KLSAgICAgICAgICAgIGxlbmd0aCA9
IFNWR0xlbmd0aFZhbHVlKExlbmd0aE1vZGVIZWlnaHQsICIxMDAlIl9zKTsKKyAgICAgICAgICAg
IGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEwMCUiX3Mp
OwogICAgICAgICB9CiAgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwobGVuZ3Ro
KTsKICAgICB9CkBAIC01NzYsMTcgKzU3NiwxNyBAQCBGbG9hdFNpemUgU1ZHU1ZHRWxlbWVudDo6
Y3VycmVudFZpZXdwb3J0U2l6ZSgpIGNvbnN0CiAKIGJvb2wgU1ZHU1ZHRWxlbWVudDo6aGFzSW50
cmluc2ljV2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aCgpLnVuaXRUeXBlKCkgIT0g
TGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgcmV0dXJuIHdpZHRoKCkubGVuZ3RoVHlwZSgpICE9
IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7CiB9CiAKIGJvb2wgU1ZHU1ZHRWxlbWVudDo6aGFz
SW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGVpZ2h0KCkudW5pdFR5cGUo
KSAhPSBMZW5ndGhUeXBlUGVyY2VudGFnZTsKKyAgICByZXR1cm4gaGVpZ2h0KCkubGVuZ3RoVHlw
ZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7CiB9CiAKIExlbmd0aCBTVkdTVkdFbGVt
ZW50OjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0CiB7Ci0gICAgaWYgKHdpZHRoKCkudW5pdFR5cGUo
KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAod2lkdGgoKS5sZW5ndGhUeXBlKCkg
PT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAgICAgICAgcmV0dXJuIExlbmd0aCgwLCBG
aXhlZCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGhpcyk7CkBAIC01
OTUsNyArNTk1LDcgQEAgTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6OmludHJpbnNpY1dpZHRoKCkgY29u
c3QKIAogTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6OmludHJpbnNpY0hlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKGhlaWdodCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAg
aWYgKGhlaWdodCgpLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQog
ICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKIAogICAgIFNWR0xlbmd0aENvbnRleHQg
bGVuZ3RoQ29udGV4dCh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCmluZGV4IDll
YWNkODA5MWRjMTE5NjFhOTY5MDE5OTc2M2ZjMjAyNWQyNTc4YzAuLmQ0NmI0Mjg4ZmQ4MmU0NmM2
NWYyNmIxZWVhMDdkMmJmMTA0MDZlY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaApA
QCAtMTY0LDEwICsxNjQsMTAgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHUG9pbnQ+IG1fY3VycmVu
dFRyYW5zbGF0ZSB7IFNWR1BvaW50OjpjcmVhdGUoKSB9OwogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgsICIxMDAlIl9zKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMDAl
Il9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIx
MDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEwMCUiX3Mp
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDE4MjBiM2NjZDJlNTI2YzkyMTQzMWY0ZTQ3
ZjYxMWM1OTIzZmYyYTQuLmQ1OTg5MWUzNzg3NGQzM2EzYTkwYjU4Yjk0ZWJiYzk3YTEzNDRkYzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBAIC0x
NzAsNyArMTcwLDcgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b20KICAgICAgICAgaWYgKHByb3Bl
cnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgbV9sZW5ndGhBZGp1c3QtPnNldEJhc2VWYWxJbnRl
cm5hbDxTVkdMZW5ndGhBZGp1c3RUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQotICAgICAgICBtX3RleHRMZW5ndGgt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVP
dGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAg
ICBtX3RleHRMZW5ndGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVn
YXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdF
cnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTE5Nyw5ICsxOTcsOSBAQCB2b2lk
IFNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogU1ZHQW5pbWF0ZWRMZW5ndGgmIFNWR1RleHRDb250ZW50RWxl
bWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
U1ZHTGVuZ3RoVmFsdWU+IGRlZmF1bHRUZXh0TGVuZ3RoKExlbmd0aE1vZGVPdGhlcik7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR0xlbmd0aFZhbHVlPiBkZWZhdWx0VGV4dExlbmd0aChT
VkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAgaWYgKG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52
YWx1ZSgpID09IGRlZmF1bHRUZXh0TGVuZ3RoKQotICAgICAgICBtX3RleHRMZW5ndGgtPmJhc2VW
YWwoKS0+dmFsdWUoKS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIGdl
dENvbXB1dGVkVGV4dExlbmd0aCgpKTsKKyAgICAgICAgbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCkt
PnZhbHVlKCkgPSB7IGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBTVkdMZW5ndGhUeXBlOjpOdW1i
ZXIgfTsKICAgICByZXR1cm4gbV90ZXh0TGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKaW5kZXggNThhN2QzNzcxNDg3YmVkM2U2NzA5MzBiOTVj
NmZmYThiNTYxYjVjOC4uZGIwZmVmMjNmMTY2MDJlNGUzZjc5ZmIyYjhjY2M1MmU1MmU5MjlkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApAQCAtMTA3LDkg
KzEwNyw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1RleHRDb250ZW50KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3RleHRMZW5ndGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fdGV4dExlbmd0aCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpIH07CiAg
ICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbGVuZ3RoQWRqdXN0IHsgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aEFkanVzdFNwYWNpbmcpIH07Ci0g
ICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoIHsgTGVuZ3RoTW9kZU90aGVy
IH07CisgICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoIHsgU1ZHTGVuZ3Ro
TW9kZTo6T3RoZXIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggNzZmYmJhNzkyNmZjZDIwMTkwZWZl
MmY3YzE1ZWJmN2JkMTc4ZjI4Ny4uZDlmZTFmNDc0ZGQ2YzBmN2M2ZjM2NDRlYzViZWI1ZTg3MGFm
NGMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTY3
LDcgKzY3LDcgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHIKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RhcnRP
ZmZzZXRBdHRyKQotICAgICAgICBtX3N0YXJ0T2Zmc2V0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1fc3RhcnRPZmZzZXQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpIHsKICAgICAgICAg
U1ZHVGV4dFBhdGhNZXRob2RUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdUZXh0UGF0aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHBy
b3BlcnR5VmFsdWUgPiAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCmlu
ZGV4IDU2NzdmNWJlYjIzN2ZjMzgyYjRjMGQyZWJiYThkYmEyZTRhOWQyODUuLjc4ZjA3ZjBhMGFk
YjQ0M2JjNDFkYmMxNDViZjQwNGY0NDE3YmIyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgc2Vs
Zkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9zdGFydE9mZnNldCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZU90aGVyKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9zdGFydE9mZnNl
dCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIp
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWV0aG9kIHsgU1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1RleHRQYXRoTWV0aG9kQWxpZ24pIH07CiAg
ICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fc3BhY2luZyB7IFNWR0FuaW1hdGVkRW51
bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0aFNwYWNpbmdFeGFjdCkgfTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAppbmRleCAw
ZTcxMzRjMTM4MzU3YzZjZGIzZGI1N2MxZDYyNDJmMzEzMTdmOTc3Li4zNzljNWE2Njk5MzcwZWRl
NTY0ZmYzYmYxNzZhNGI4Mjg0MzliNmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKQEAgLTU3LDEwICs1NywxMCBAQCBwcml2YXRlOgogICAg
IGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0PiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV95IHsgU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX2R4IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0Ojpj
cmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aExpc3Q+IG1fZHkgeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0PiBtX2R4IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dD4gbV9keSB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWROdW1iZXJMaXN0PiBtX3JvdGF0ZSB7
IFNWR0FuaW1hdGVkTnVtYmVyTGlzdDo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggOWE3Mjk4NDJlZDJkOWI2NjY5OTEwMGViNzVkZDMx
OGI1ODJhZDllNy4uYWQ5MjM4NDEzNWZhMjhkZDUzODllODc4OTY0NGVmOTViN2U3Zjg3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQg
U1ZHVXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJy
b3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAg
ICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Ondp
ZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBt
X2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVW
YWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihw
YXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCmlu
ZGV4IDFmNTJiYzFkY2YwZDIxOTIzMDVhNjVhZjgwNWJlNmQzMWQwNzBjZmIuLmFiNTljZDNjOTE2
MzJlNjRhYjY4MzhlNzRhODc1OTVjMzcwZmI4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuaApAQCAtOTYsMTAgKzk2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVw
ZW5kZW50U2hhZG93VHJlZXMoKTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Oldp
ZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVp
Z2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpIH07CiAKICAgICBib29sIG1faGF2ZUZpcmVkTG9hZEV2ZW50IHsgZmFsc2UgfTsKICAgICBi
b29sIG1fc2hhZG93VHJlZU5lZWRzVXBkYXRlIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vz
c29ySW1wbC5oCmluZGV4IGQzMjY3OGMxY2QwZTNlMGQyMzIzODBkZmIwMjRlMzMyOWE3NjRiOTMu
Ljk5YjJhYTkxMzE2M2Q5ZTBkZDhjMzczZjQ2N2ZkZDk2NDRmYmE4YjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nvcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3Bl
cnR5QWNjZXNzb3JJbXBsLmgKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5
cGUmIG93bmVyLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25N
b2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQs
IGJvb2wgaXNBZGRpdGl2ZSkgY29uc3QgZmluYWwKICAgICB7Ci0gICAgICAgIFNWR0xlbmd0aE1v
ZGUgbGVuZ3RoTW9kZSA9IHByb3BlcnR5KG93bmVyKS0+YmFzZVZhbCgpLT52YWx1ZSgpLnVuaXRN
b2RlKCk7CisgICAgICAgIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IHByb3BlcnR5KG93bmVy
KS0+YmFzZVZhbCgpLT52YWx1ZSgpLmxlbmd0aE1vZGUoKTsKICAgICAgICAgcmV0dXJuIFNWR0Fu
aW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25l
ciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBs
ZW5ndGhNb2RlKTsKICAgICB9CiAKQEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0
b3IoT3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
QW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0Fj
Y3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBy
ZXR1cm4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1l
LCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVk
LCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlV2lkdGgpOworICAgICAgICByZXR1cm4gU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25l
ciksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBT
VkdMZW5ndGhNb2RlOjpXaWR0aCk7CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRBbmltYXRlZElu
c3RhbmNlKE93bmVyVHlwZSYgb3duZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBhbmltYXRvcikg
Y29uc3QgZmluYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDdmYTgyYzYxOGQ2YmJlNDU3Njc0MGNhNjg1MDNlMTg0MmViOWNmY2UuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3Jn
PgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0g
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU1ZHRWxlbWVudDsKLQotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlv
biB7ICAgICAgICAgICAgCi0gICAgLy8gRW1wdHkgdmFsdWUKLSAgICBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb24oKQotICAgICAgICA6IG1fZWxlbWVudChudWxscHRyKQotICAgICAgICAs
IG1fYXR0cmlidXRlTmFtZShudWxscHRyKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBEZWxldGVk
IHZhbHVlCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uKFdURjo6SGFzaFRhYmxl
RGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX2VsZW1lbnQocmVpbnRlcnByZXRfY2FzdDxT
VkdFbGVtZW50Kj4oLTEpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VsZW1lbnQgPT0gcmVp
bnRlcnByZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEpOwotICAgIH0KLQotICAgIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbihTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5n
JiBhdHRyaWJ1dGVOYW1lKQotICAgICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICAgICAs
IG1fYXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lLmltcGwoKSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChtX2VsZW1lbnQpOwotICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVOYW1lKTsKLSAgICB9
Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0
aW9uJiBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VsZW1lbnQgPT0gb3Ro
ZXIubV9lbGVtZW50ICYmIG1fYXR0cmlidXRlTmFtZSA9PSBvdGhlci5tX2F0dHJpYnV0ZU5hbWU7
Ci0gICAgfQotCi0gICAgU1ZHRWxlbWVudCogbV9lbGVtZW50OwotICAgIEF0b21TdHJpbmdJbXBs
KiBtX2F0dHJpYnV0ZU5hbWU7Ci19OwotCi1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2Ny
aXB0aW9uSGFzaCB7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eURlc2NyaXB0aW9uJiBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gU3RyaW5nSGFz
aGVyOjpoYXNoTWVtb3J5PHNpemVvZihTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24pPigm
a2V5KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24mIGEsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlv
biYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgfQotCi0gICAgc3RhdGlj
IGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotfTsKLQot
c3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2hUcmFpdHMgOiBXVEY6OlNp
bXBsZUNsYXNzSGFzaFRyYWl0czxTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24+IHsgfTsK
LSAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b25JbXBsLmgKaW5kZXggOTIzM2FlOTJmOTUyMjIxZGJlOTAzOTBkNWY4YTQ1ZDBiNTM2NDNhYi4u
NjFhMWQwMzZjZmRhNTJiYTRlYThiNzFlNTFiYjJjN2IxN2FkYmNiNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rp
b25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAg
ICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0YXJnZXRFbGVtZW50KTsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvSXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSAoaSA8IGZyb21JdGVtcy5zaXplKCkg
JiYgcHJvZ3Jlc3MgPCAwLjUgPyBmcm9tSXRlbXMgOiB0b0l0ZW1zKVtpXS0+dmFsdWUoKS51bml0
VHlwZSgpOworICAgICAgICAgICAgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlID0gKGkgPCBmcm9t
SXRlbXMuc2l6ZSgpICYmIHByb2dyZXNzIDwgMC41ID8gZnJvbUl0ZW1zIDogdG9JdGVtcylbaV0t
PnZhbHVlKCkubGVuZ3RoVHlwZSgpOwogCiAgICAgICAgICAgICBmbG9hdCBmcm9tID0gaSA8IGZy
b21JdGVtcy5zaXplKCkgPyBmcm9tSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4
dCkgOiAwOwogICAgICAgICAgICAgZmxvYXQgdG8gPSB0b0l0ZW1zW2ldLT52YWx1ZSgpLnZhbHVl
KGxlbmd0aENvbnRleHQpOwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBm
bG9hdCB2YWx1ZSA9IGFuaW1hdGVkSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4
dCk7CiAKICAgICAgICAgICAgIHZhbHVlID0gQmFzZTo6YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0
Q291bnQsIGZyb20sIHRvLCB0b0F0RW5kT2ZEdXJhdGlvbiwgdmFsdWUpOwotICAgICAgICAgICAg
YW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKS5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCB2YWx1ZSwg
bGVuZ3RoTW9kZSwgdW5pdFR5cGUpOworICAgICAgICAgICAgYW5pbWF0ZWRJdGVtc1tpXS0+dmFs
dWUoKS5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwgbGVuZ3RoTW9k
ZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZyb21JdGVtcy5zaXplKCk7ICsraSkgewogICAg
ICAgICAgICAgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb21WYWx1ZSA9IGZyb21JdGVtc1tpXS0+
dmFsdWUoKTsKICAgICAgICAgICAgIFNWR0xlbmd0aFZhbHVlJiB0b1ZhbHVlID0gdG9JdGVtc1tp
XS0+dmFsdWUoKTsKLSAgICAgICAgICAgIHRvVmFsdWUuc2V0VmFsdWUodG9WYWx1ZS52YWx1ZShs
ZW5ndGhDb250ZXh0KSArIGZyb21WYWx1ZS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29u
dGV4dCk7CisgICAgICAgICAgICB0b1ZhbHVlLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIHRvVmFs
dWUudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tVmFsdWUudmFsdWUobGVuZ3RoQ29udGV4dCkp
OwogICAgICAgICB9CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlv
bkltcGwuaAppbmRleCAyOGM1MTJhMDlhNzQ5ZGIyNWJkNzNkYWNiYmFkNmQ0ODlkYjdhMzUyLi5j
ZWUxNWU0YzZhMTM2NGFiMTY1MDk2N2Q3OGRkZmI1NmY3M2Q4MTlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rp
b25JbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9u
QWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCkBAIC0xNzcsNyArMTc3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYW5pbWF0ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBmbG9hdCBwcm9ncmVz
cywgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR0xlbmd0aFZhbHVlJiBhbmltYXRlZCkKICAgICB7
CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0YXJnZXRFbGVtZW50KTsK
LSAgICAgICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSA9IHByb2dyZXNzIDwgMC41ID8gbV9mcm9t
LnVuaXRUeXBlKCkgOiBtX3RvLnVuaXRUeXBlKCk7CisgICAgICAgIFNWR0xlbmd0aFR5cGUgbGVu
Z3RoVHlwZSA9IHByb2dyZXNzIDwgMC41ID8gbV9mcm9tLmxlbmd0aFR5cGUoKSA6IG1fdG8ubGVu
Z3RoVHlwZSgpOwogCiAgICAgICAgIGZsb2F0IGZyb20gPSAobV9hbmltYXRpb25Nb2RlID09IEFu
aW1hdGlvbk1vZGU6OlRvID8gYW5pbWF0ZWQgOiBtX2Zyb20pLnZhbHVlKGxlbmd0aENvbnRleHQp
OwogICAgICAgICBmbG9hdCB0byA9IG1fdG8udmFsdWUobGVuZ3RoQ29udGV4dCk7CkBAIC0xODUs
NyArMTg1LDcgQEAgcHVibGljOgogICAgICAgICBmbG9hdCB2YWx1ZSA9IGFuaW1hdGVkLnZhbHVl
KGxlbmd0aENvbnRleHQpOwogCiAgICAgICAgIHZhbHVlID0gQmFzZTo6YW5pbWF0ZShwcm9ncmVz
cywgcmVwZWF0Q291bnQsIGZyb20sIHRvLCB0b0F0RW5kT2ZEdXJhdGlvbiwgdmFsdWUpOwotICAg
ICAgICBhbmltYXRlZCA9IHsgbGVuZ3RoQ29udGV4dCwgdmFsdWUsIG1fbGVuZ3RoTW9kZSwgdW5p
dFR5cGUgfTsKKyAgICAgICAgYW5pbWF0ZWQgPSB7IGxlbmd0aENvbnRleHQsIHZhbHVlLCBsZW5n
dGhUeXBlLCBtX2xlbmd0aE1vZGUgfTsKICAgICB9CiAKICAgICBPcHRpb25hbDxmbG9hdD4gY2Fs
Y3VsYXRlRGlzdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBm
cm9tLCBjb25zdCBTdHJpbmcmIHRvKSBjb25zdCBvdmVycmlkZQpAQCAtMjAwLDcgKzIwMCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBhZGRGcm9tQW5kVG9WYWx1ZXMoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dCh0YXJnZXRFbGVtZW50KTsKLSAgICAgICAgbV90by5zZXRWYWx1ZShtX3RvLnZhbHVl
KGxlbmd0aENvbnRleHQpICsgbV9mcm9tLnZhbHVlKGxlbmd0aENvbnRleHQpLCBsZW5ndGhDb250
ZXh0KTsKKyAgICAgICAgbV90by5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCBtX3RvLnZhbHVlKGxl
bmd0aENvbnRleHQpICsgbV9mcm9tLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKICAgICB9CiAKICAg
ICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaAppbmRl
eCBmZDNkYzk2MGZmYTdkMzEyOTAxMzdkNDUyY2RlMWEyODc5YTdlZGJkLi42Mjc2Nzg0OTk0ODE1
Njk1ZTE3Y2RiMzA5ZTU4NDU5ZjZiZTg4YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCkBA
IC0zOSwxMyArMzksMTMgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMg
U1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9yPFNWR0xlbmd0aCwgU1ZHQW4KIHB1YmxpYzoKICAgICBz
dGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVm
PFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1
dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNj
dW11bGF0ZWQsIGlzQWRkaXRpdmUsIExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPFNWR0xlbmd0aEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3Bl
cnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUs
IFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICB9CiAKICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTdHJpbmcgYmFzZVZh
bHVlID0gY29tcHV0ZUNTU1Byb3BlcnR5VmFsdWUodGFyZ2V0RWxlbWVudCwgY3NzUHJvcGVydHlJ
RChtX2F0dHJpYnV0ZU5hbWUubG9jYWxOYW1lKCkpKTsKLSAgICAgICAgU1ZHTGVuZ3RoVmFsdWUg
dmFsdWUoTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgdmFsdWUoU1ZH
TGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgICAgICBpZiAoIXZhbHVlLnNldFZhbHVlQXNTdHJpbmco
YmFzZVZhbHVlKS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIG1fcHJvcGVydHktPnNldFZh
bHVlKHZhbHVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAppbmRleCBh
ZTk0ZTI5ZWQ0Yjg2MTNiOTljZDk3NDg2ZWQwYjA2MjgyNmMwMmQ4Li4xNTk4ZjU2NmIyOWM0MTM4
ZGMyNGQ5YmY4MzgwOWZmNTk0YWM2ZDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBs
LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgU1ZHTGVuZ3RoTGlzdEFuaW1hdG9yIGZpbmFsIDog
cHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3I8U1ZHTGVuZ3QKIHB1YmxpYzoKICAg
ICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
UmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUs
IENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdU
Rk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3Rh
cnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378599</attachid>
            <date>2019-09-11 16:58:50 -0700</date>
            <delta_ts>2019-09-12 01:47:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190911165849.patch</filename>
            <type>text/plain</type>
            <size>134785</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJiMzk5MDA3ZmJiOWIy
N2Y4ZDAzZWU1YjNhNTZkMjA0YWNiN2QxYy4uMjllZjMzMmFkYTc0OWFlNjVkMDYyMTVmNWJhNDA2
ODhmOTM0ZmZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOS0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xl
bmd0aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0
ZWFkIG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLCBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUg
aGFkIG9uZSB1bnNpZ25lZCB0byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhUeXBl
LgorICAgICAgICBJdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCA0IGJp
dHMgb2YgdGhpcyB1bnNpZ25lZCB0byB0aGUKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSB3aGlsZSBp
dCBsZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0aFR5cGUuCisKKyAgICAgICAgVGhpcyB3aWxs
IG5vdCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9kZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUgbWFk
ZSBvZgorICAgICAgICBzaXplIHVpbnRfOC4KKworICAgICAgICBBbHNvIGluIHRoaXMgcGF0Y2g6
CisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIGlzIG1hZGUgZW51bSBj
bGFzcy4KKworICAgICAgICAtLSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoKSBpcyBtb3ZlZCB0byBT
VkdMZW5ndGhWYWx1ZS5jcHAgc28gd2UgZG8gbm90CisgICAgICAgICAgIG5lZWQgdG8gaW5jbHVk
ZSBTVkdMZW5ndGhDb250ZXh0LmggaW4gU1ZHTGVuZ3RoVmFsdWUuaC4KKworICAgICAgICAtLSBT
VkdMZW5ndGhUeXBlIGFuZCBTVkdMZW5ndGhNb2RlIGFyZSBtb3ZlZCB0byBTVkdMZW5ndGhWYWx1
ZS5oLiBJbnN0ZWFkCisgICAgICAgICAgIG9mIGhhdmluZyBTVkdMZW5ndGhWYWx1ZS5oIGluY2x1
ZGVzIFNWR0xlbmd0aENvbnR0ZXh0LmgsIHRoZSBvcHBvc2l0ZQorICAgICAgICAgICB3aWxsIGhh
cHBlbi4KKworICAgICAgICAtLSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpcyBk
ZWxldGVkLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgICAgd2l0aCB0aGUg
U1ZHIHRlYXIgb2ZmIG9iamVjdHMgcmVtb3ZhbC4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdBbmdsZVZhbHVlPiBhbmQgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+
CisgICAgICAgICAgIGFyZSBkZWxldGVkLiBUaGV5IHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCB3
aXRoIFNWR0FuaW1hdGVkVHlwZSByZW1vdmFsLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFZhbHVl
OjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBpcyBkZWxldGVkLiBJdAor
ICAgICAgICAgICB3YXMgb25seSBjYWxsZWQgZnJvbSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
dGhWYWx1ZT4uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NT
S2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJhZGlh
bEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojppbml0aWFs
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZH
QW5nbGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6OnVuaXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVU
b1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBl
cmNlbnRhZ2VUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRl
eHQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICog
c3ZnL1NWR0xlbmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1N0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlbmd0aFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpsZW5n
dGhUeXBlVG9QcmltaXRpdmVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVl
OjpTVkdMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpibGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAo
V2ViQ29yZTo6c3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RN
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0VHlwZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dW5pdE1v
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OnZh
bHVlQXNQZXJjZW50YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoVmFsdWU6OmlzWmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGhWYWx1ZTo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5n
dGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoVmFsdWU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6aW5pdGlhbFZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xl
bmd0aFZhbHVlPjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFz
SW50cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
aGFzSW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY0hlaWdodCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5j
dGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5j
dGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
TGVuZ3RoRnVuY3Rpb246OmFuaW1hdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorCiAyMDE5LTA5LTExICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OICgyNDUwMDYpOiBj
YW4ndCBzY3JvbGwgaW4gInJlYWQgbW9yZSIgdmlldyBpbiBFdmVudGJyaXRlIGFwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4
ZDI3ZmM0MWY0NzhmYjQzNjUzNWYwN2M2M2FhZTliNmRiOTNlNWEuLmM2MzEwM2IyZjI1ODRlNGYx
YmI4NmRkZmM0ZTJkNzg2M2M2MmMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MSw3ICsyNTEsNiBAQAogCQkwODc1NThD
NjEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRB
NTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2N0YxMURBMDQ1
QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUwNjgw
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQ
aGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEw
REZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhBMEUw
QzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg4QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmgg
Ki87IH07CiAJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5NTgyNTQwRTg1N0E3
RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1MzYsNyArNTUzNSw2IEBACiAJCTA4NzU1OEM0MTNCNEE1
N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAv
KiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4QTBERkQxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R1Byb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1By
b3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc1MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc2MTIzOTAwODAwMDNENjVDRSAvKiBT
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYwOTQsNyArMTYwOTIsNiBAQAogCQkJCTU1RUU1MzU4MjIzQjI5RjkwMEZCQTk0NCAvKiBT
VkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNUEyMjNCMjlG
QjAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oICovLAogCQkJCTU1RUU1
MzU2MjIzQjI5RjcwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgg
Ki8sCi0JCQkJMDg4QTBERkQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlE
ZXNjcmlwdGlvbi5oICovLAogCQkJCTU1RUU1MzVDMjIzQjJBMEQwMEZCQTk0NCAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5SW1wbC5oICovLAogCQkJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovLAogCQkJCTU1QkUwMjVFMjIzQjI5QzQwMDMyRjA4
QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yLmggKi8sCkBAIC0zMTc3OSw3ICsz
MTc3Niw2IEBACiAJCQkJMjREOTEyQjgxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRl
bUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4OEEwRTA2
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGQ4YWMzMjg5MmRjZDEzNTUyNjI5OGFlMTI1
YmZiMTdjOGMxNzUwYTkuLmUwYzMxOGVlNzdjYjEzYjk4NmYwNTcxNjZlOWQ4OWM0NmQ2MDlhMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBT
dHlsZVJ1bGVQYWdlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0Owog
Y2xhc3MgU3R5bGVkRWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogY2xhc3MgVmlld3BvcnRTdHlsZVJlc29sdmVyOwogc3RydWN0IFJlc291cmNlTG9hZGVy
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBiYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3
M2YzNjdlOTk3Li42ZjY0Y2M2ZWE4ZDZhMjM4MDY0YzNjMzFmM2JlNzllNzQ3ZDExYjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxl
bmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IEwKIAog
c3RhdGljIGlubGluZSBTVkdMZW5ndGhWYWx1ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gdG8uYmxlbmQoZnJv
bSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgIHJldHVybiBTVkdMZW5n
dGhWYWx1ZTo6YmxlbmQoZnJvbSwgdG8sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3Mp
KTsKIH0KIAogc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGJsZW5kRnVuYyhj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZh
bHVlPiYgZnJvbSwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgdG8sIGRvdWJsZSBwcm9n
cmVzcykKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhW
YWx1ZT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLAogICAgIH0K
ICAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHJlc3VsdChyZXN1bHRMZW5ndGgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0TGVuZ3RoOyArK2kpCi0gICAgICAgIHJlc3VsdFtp
XSA9IHRvW2kgJSB0b0xlbmd0aF0uYmxlbmQoZnJvbVtpICUgZnJvbUxlbmd0aF0sIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKKyAgICAgICAgcmVzdWx0W2ldID0gU1ZHTGVuZ3Ro
VmFsdWU6OmJsZW5kKGZyb21baSAlIGZyb21MZW5ndGhdLCB0b1tpICUgdG9MZW5ndGhdLCBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dyZXNzKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRl
eCA0MjQ0Y2E2MDE0NDhmMWIxMGE4ZjFmY2JmOTE3MDIzNGQzYTAxNzliLi45NTMyMTI5YWYyZDA3
OTY2YmU5ODM5MjE4ZDU0Mzk5MTg0YzIwZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtODIsOCArODIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyTWlkUmVzb3VyY2UoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlckVuZFJlc291cmNlKCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgTWFza1R5cGUgaW5pdGlhbE1hc2tUeXBlKCkg
eyByZXR1cm4gTWFza1R5cGU6Okx1bWluYW5jZTsgfQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7Ci0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVl
IGluaXRpYWxLZXJuaW5nKCk7CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxCYXNl
bGluZVNoaWZ0VmFsdWUoKSB7IHJldHVybiBTVkdMZW5ndGhWYWx1ZSgwLCBTVkdMZW5ndGhUeXBl
OjpOdW1iZXIpOyB9CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCkg
eyByZXR1cm4gU1ZHTGVuZ3RoVmFsdWUoMCwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKTsgfQogCiAg
ICAgLy8gU1ZHIENTUyBQcm9wZXJ0eSBzZXR0ZXJzCiAgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNl
bGluZShBbGlnbm1lbnRCYXNlbGluZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy5hbGlnbm1lbnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CkBAIC0y
NTYsMjAgKzI1Niw2IEBAIHByaXZhdGU6CiAgICAgRGF0YVJlZjxTdHlsZVJlc291cmNlRGF0YT4g
bV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGE7CiB9OwogCi1pbmxpbmUgU1ZHTGVuZ3RoVmFsdWUg
U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKQotewotICAgIFNWR0xl
bmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5n
dGhUeXBlTnVtYmVyLCAwKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1pbmxpbmUgU1ZHTGVu
Z3RoVmFsdWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKCkKLXsKLSAgICBTVkdMZW5n
dGhWYWx1ZSBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQogaW5saW5lIHZvaWQgU1ZH
UmVuZGVyU3R5bGU6OnNldEN4KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIGlmICghKG1f
bGF5b3V0RGF0YS0+Y3ggPT0gbGVuZ3RoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCmluZGV4IDdkYTkxOTkzZTNmY2U4YjgwYWY4NTZk
Y2NlZTVkOGFhYTYwMWJiOWEuLjE3N2MzOTU2YWZjZWU2MjNhODJmNzEzM2IyMjdjOWJkYjEwMzkx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxs
aXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmNwcApAQCAtNzksOCArNzksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0
ZVJhZGlpQW5kQ2VudGVyKCkKIHsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQo
JmdyYXBoaWNzRWxlbWVudCgpKTsKICAgICBtX2NlbnRlciA9IEZsb2F0UG9pbnQoCi0gICAgICAg
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN4KCksIExl
bmd0aE1vZGVXaWR0aCksCi0gICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpKTsKKyAgICAgICAgbGVuZ3Ro
Q29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgpLAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKICAgICBpZiAoaXM8
U1ZHQ2lyY2xlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkpKSB7CiAgICAgICAgIGZsb2F0IHJh
ZGl1cyA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnIo
KSk7CiAgICAgICAgIG1fcmFkaWkgPSBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpOwpAQCAtODks
OCArODksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVy
KCkKIAogICAgIEFTU0VSVChpczxTVkdFbGxpcHNlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkp
KTsKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAg
ICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgp
LCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwKKyAgICAg
ICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnkoKSwg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Zmls
bFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCmluZGV4IDRiMjRkZmQzZDFkYWEzNjdl
MjM2NzExYjJhYTlkNjQ3ZGFjMWJiNjkuLjY2MWQyMTk0MmM2ZDJmNDYyZmM4NWEwNTc3ZGFlYzI4
ZWI2ZmVjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZWN0LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKQogICAgIG1fdXNlUGF0aEZhbGxiYWNrID0gZmFsc2U7CiAKICAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJnJlY3RFbGVtZW50KCkpOwotICAgIEZsb2F0U2l6
ZSBib3VuZGluZ0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndp
ZHRoKCksIExlbmd0aE1vZGVXaWR0aCksIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCkpOworICAgIEZsb2F0U2l6ZSBib3VuZGlu
Z0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndpZHRoKCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSwgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgp
LmhlaWdodCgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKIAogICAgIC8vIEVsZW1lbnQgaXMg
aW52YWxpZCBpZiBlaXRoZXIgZGltZW5zaW9uIGlzIG5lZ2F0aXZlLgogICAgIGlmIChib3VuZGlu
Z0JveFNpemUud2lkdGgoKSA8IDAgfHwgYm91bmRpbmdCb3hTaXplLmhlaWdodCgpIDwgMCkKQEAg
LTc0LDggKzc0LDggQEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsbEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxl
KCkueCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS55KCksIExlbmd0aE1vZGVIZWlnaHQpKSwKKyAgICBt
X2ZpbGxCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
LAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUo
KS55KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpLAogICAgICAgICBib3VuZGluZ0JveFNpemUp
OwogCiAgICAgLy8gVG8gZGVjaWRlIGlmIHRoZSBzdHJva2UgY29udGFpbnMgYSBwb2ludCB3ZSBj
cmVhdGUgdHdvIHJlY3RzIHdoaWNoIHJlcHJlc2VudCB0aGUgaW5uZXIgYW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCmluZGV4IDBmODQ5OWU1M2IwMzA1
YWQwMDhjZWE0MzgxOGYzZDcxZGVmZWNlNTYuLjJiYWIxODAyYTY1NTRkOTFiNTVhMDk3ODY1ODgx
NmUwMjE3MWMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UGF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERh
dGEuY3BwCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxlbWVu
dChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dCgmZWxlbWVudCk7CiAgICAgZmxvYXQgciA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yKCkpOwogICAgIGlmIChyID4gMCkgewotICAgICAgICBm
bG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5j
eCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgICAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRleHQu
dmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsK
KyAgICAgICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2
Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOworICAgICAgICBmbG9hdCBjeSA9
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQpOwogICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KGN4
IC0gciwgY3kgLSByLCByICogMiwgciAqIDIpKTsKICAgICB9CiAgICAgcmV0dXJuIHBhdGg7CkBA
IC02NywxNyArNjcsMTcgQEAgc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBlbGVtZW50KQogCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5
bGUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVsZW1lbnQpOwotICAg
IGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7CisgICAgZmxvYXQgcnggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
OwogICAgIGlmIChyeCA8PSAwKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgcnkg
PSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgTGVu
Z3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVu
Z3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBp
ZiAocnkgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBm
bG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5j
eCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAg
IGZsb2F0IGN4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LmN4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRl
eHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQpOwogICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY3ggLSByeCwgY3kgLSByeSwg
cnggKiAyLCByeSAqIDIpKTsKICAgICByZXR1cm4gcGF0aDsKIH0KQEAgLTEzOCwxOSArMTM4LDE5
IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxl
bWVudCkKIAogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgU1ZHTGVu
Z3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KCZlbGVtZW50KTsKLSAgICBmbG9hdCB3aWR0aCA9IGxl
bmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUud2lkdGgoKSwgTGVuZ3RoTW9kZVdpZHRo
KTsKKyAgICBmbG9hdCB3aWR0aCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUu
d2lkdGgoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOwogICAgIGlmICh3aWR0aCA8PSAwKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgaGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQg
aGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBpZiAoaGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS55
KCksIExlbmd0aE1vZGVIZWlnaHQpOwotICAgIGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
cnkoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsK
KyAgICBmbG9hdCB5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHls
ZSgpLnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKKyAgICBmbG9hdCByeCA9IGxlbmd0aENv
bnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBTVkdMZW5ndGhNb2Rl
OjpXaWR0aCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBib29sIGhh
c1J4ID0gcnggPiAwOwogICAgIGJvb2wgaGFzUnkgPSByeSA+IDA7CiAgICAgaWYgKGhhc1J4IHx8
IGhhc1J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKaW5kZXggMGI2M2Q2Y2RmZmI1NWE0MmVh
OTA0NTk4YTAxZDFlNmUyOWFlZjJmYS4uZWQ1N2VhYjVhNGU3YWMxMGZjNGU3NWZhMTJlOGNmYzFi
NDU1YzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBmbG9h
dCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQoY29u
c3QgU1ZHUmVuZGVyU3R5bGUmCiB7CiAgICAgaWYgKHN0eWxlLmJhc2VsaW5lU2hpZnQoKSA9PSBC
YXNlbGluZVNoaWZ0OjpMZW5ndGgpIHsKICAgICAgICAgYXV0byBiYXNlbGluZVNoaWZ0VmFsdWVM
ZW5ndGggPSBzdHlsZS5iYXNlbGluZVNoaWZ0VmFsdWUoKTsKLSAgICAgICAgaWYgKGJhc2VsaW5l
U2hpZnRWYWx1ZUxlbmd0aC51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAg
ICAgICBpZiAoYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5n
dGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lU2hpZnRWYWx1
ZUxlbmd0aC52YWx1ZUFzUGVyY2VudGFnZSgpICogbV9mb250LnBpeGVsU2l6ZSgpOwogCiAgICAg
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5jcHAKaW5kZXggNDhkODBhZTk5MjZlMDYzZDllZjIxOTI0MmQzZGU3ODE3OGVjZTRlNS4u
YmNmMzU2YTgxZjhlYWYxOWM4ZDRkOTY4N2E1ZmExMDMxYTU2YzEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZVNwYWNp
bmc6OmNhbGN1bGF0ZUNTU0tlcm5pbmdBbmRTcGFjaW5nKGNvbnN0IFNWR1JlbmRlclMKIHsKICAg
ICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBhdXRvIGtlcm5pbmdMZW5ndGggPSBzdHlsZS0+a2Vy
bmluZygpOwotICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2UpCisgICAgaWYgKGtlcm5pbmdMZW5ndGgubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0
aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZhbHVl
QXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxlbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggZjUyMDE5ZmZm
ZTlhNDBhNDA3MmUyMzVjNWNhYjBkZGUxYmQ5MDU1Yy4uNmZkOTViZDZlZWUzMDJjZTRlNWVmNTE5
YzVlMjFhMTY1NzM1NzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdy
YWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVu
dEF0dHJpYnV0ZXMuaApAQCAtMjYsNyArMjYsNyBAQCBzdHJ1Y3QgTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMoKQogICAgICAgICA6IG1feDEoKQogICAgICAgICAsIG1feTEoKQotICAgICAgICAsIG1feDIo
TGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAgICAgICwgbV94MihTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgIjEwMCUiKQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFTZXQoZmFsc2Up
CiAgICAgICAgICwgbV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA4N2JlNzIyODgxNDNlM2RlMTFjMWQ3NGVlODVhZmU4
NmNlYjQxMTgwLi42MTIzZGJlOTBmMzc0NzZiMWI0ZThjY2ViZWI3MzYwOWRkZDA3MDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0yNSw5
ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdyYWRpZW50QXR0
cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzKCkKLSAgICAgICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0gICAgICAgICwg
bV9jeShMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQotICAgICAgICAsIG1fcihMZW5ndGhNb2RlV2lk
dGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQor
ICAgICAgICAsIG1fY3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAgICAgICAsIG1f
cihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCiAgICAgICAgICwgbV9jeFNldChmYWxzZSkK
ICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGVWYWx1ZS5oCmluZGV4IDRkNDAyZjdmY2Q0NWExZmM3ZTc5NDdkOTYxZGU5
ZWE1OTE0YmU0NjEuLmNjNDU0NDE4M2NmMGRmOTBmYjdlYjkyYTkzYWEzZGYxZWIzMTUyOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaApAQCAtNTYsMTAgKzU2LDQgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRl
PD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZVZhbHVlPiB7Ci0gICAgc3RhdGlj
IFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGVWYWx1ZSgpOyB9
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdBbmdsZVZhbHVlJiB0eXBlKSB7
IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IGQ5MzA0MGExZjU2YWFlZmY1YzI5MjFkNDZhYjcz
ZGIxMDhhZDc4ZjQuLjQ5ZDQ1OTMyZjA3MWUzNTQyOGI3MTI5NDBiM2ViNTAxZTU0OGY1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTU0LDExICs1NCwxMSBA
QCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9y
ID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAg
IG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lB
dHRyKQotICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAg
cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXggNzIwZjMxMGU2NDBmODJkYmVl
NjY3MDY0M2Y3OTMxM2I0ZjVlZmE4NS4uNzFiNzYzMGQyM2JkNTFhZjRhOGMxMzE5MmZmNGI4YzNk
YjBiM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC01NSw5ICs1
NSw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA1Y2Q3ZDE5ZGU5Mzk1ZWUx
ZmY0NWQwYjdlNDZlODUzZTBiYmY3NDQ3Li4yZmQ1NzY2NDliNzIyOGVhMGZkMjVlYWVkY2E3MzVk
ODQyNTNhODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC02
NCw5ICs2NCw5IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgU1ZHUGFyc2luZ0Vycm9y
IHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmluZGV4IGVkNjRkNWZhMTllODM1ZjkwODA1MzI1NTVm
MTdjOGNmNDc0NGMwMjIuLjVkZDRkNGJkN2ZiMmI2ZWI1ZDFlZTE0NDE2ZTNmYTQzZDVkZWUyMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNjEsOCArNjEsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1h
Z2VWYWx1ZSo+IG1fY2xpZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCmluZGV4IDgzMzJlYjVkYmZjMjhmODYyNzgyNGJmODg5ZjhmMzQ2MDY2ZDM0MWMu
LmFkYjZjYmNhNDIzOWY3OGI2YjkwMzA2NzQ4ZWIwM2MyNTY2NmFiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgU1ZH
RWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAg
ICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpyeEF0dHIpCi0gICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IDMwMzU1
OGUwMmU1M2ZmYTI4ODFmMTM1ZjBhZTgxNTllNzE1YzNjMGIuLmNhMDdiM2YxYmNmYzZhYzgzMTJh
ODlkNTI4MWIzYzJiYWVkZDQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5oCkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N4
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCmluZGV4IDI0YzZjNTJmNDgzOGY3MmFjM2I4ZTZjNzk0YThiNWI3OTcwMjcxYmMuLjE4
NmI3NzFlNThlM2RhOGMyMWExMmUxZmQ4OGMzMWIwMWE0MWU1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCB2b2lkIFNWR0ZpbHRl
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbgogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBt
X3ByaW1pdGl2ZVVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4
QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0g
ICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2hl
aWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmli
dXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5kZXggMTU4OWE2YzQyYmRhODc3MTQ1ZDVlMDczN2VjOGZh
MWY0YWJjZWVkZi4uNTkwMzIwOTU5Y2U5ZWQ0YmYyYjk0ZmVmYWU0YzYxZTBkNDZjYjE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJp
dmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fZmlsdGVyVW5pdHMgeyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBt
X3ByaW1pdGl2ZVVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAl
IikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiLTEwJSIp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEyMCUiKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEyMCUiKSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAzNjRjYjI4MGYzMjc5ZjIw
ZjUyNmE2MWM4YTMyMzEwM2NjNDdiZWM4Li4zMGRhNDM0ZjRjZDM5ZDBhYzIwMTRjNzc3NmE1Mjhh
NzgyNDMyODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIHZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBO
b0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAg
ICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVzdWx0
QXR0cikKICAgICAgICAgbV9yZXN1bHQtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaAppbmRleCBjMjgxNmRhMzYzNWQwNjU2M2I5MWM4MzUwOGJkODEzOGNiMzlh
Yjk0Li5jOThiMTNlZDk2Mjc2YWY5ZTE0ZjY0MjgxMWE2ZmQ3NDY3NzJhY2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNwZWM6IElm
IHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0
aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCwgIjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIwJSIpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjAlIikgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3Vs
dCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDVhY2Q1ZmNiMzE5
ODBkZTdiOGU2NmIwOGQzYzVkMzViNjA3YjI4MjkuLjdmZjNiODY3ZmM1OTJkOGRiMjNhZmE0NjUw
ZmY3ZTZjYjBmMzNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAK
ICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCmluZGV4
IDAyYTE5NGM0MTdhN2FiNzczMDQxNDgyNzdkM2Y5ZTY0OWZiMDY4YTQuLmRiMjA0MzM5NTVlYmUy
MzQxM2U2MDk2YWI1NDVhN2JlMzk0OGMwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
eSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0
aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCA5NjcwZTI2NDQwNjdjZmRhYjM0NzMwMzUxOWIxNGYwZmMxOGYxNmI3Li43YjY0YTAyMTRhM2Jh
MGYwZTg1MWM0NWQwZTlkNzM0NDIxYzc2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtNzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nCiAg
ICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1f
d2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwor
ICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5l
Z2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7
CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggOWZiNTc4Njg3NWZi
MTE0YzUyMzI4NjVlNGUwODNhZWIzZmNhODQwMy4uZWFmZjYxODZkODlkOTM0OGZiY2ExNTE4NWRk
ZmFhNmEwZGVkZDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNjks
MTAgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVp
Z2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9
OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbyB7IFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZHSW1hZ2VMb2FkZXIgbV9p
bWFnZUxvYWRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKaW5kZXggZmYwZmQzNTE0YjI2M2Ux
MzhkNWNjYTkwN2YzYTc5ODdiNmYzYjllZi4uN2U3YzExNDk2ZjgyNTg4ODJlMjQ4Mjk1MzdjMzEz
ZjQ5MDYwNTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJT
VkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIApAQCAtMzgs
MTcgKzM5LDE3IEBAIGNsYXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PFNW
R0xlbmd0aFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVu
dW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uCiAgICAgZW51
bSB7Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5ndGhUeXBlVW5rbm93biwK
LSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSID0gTGVuZ3RoVHlwZU51bWJlciwKLSAgICAg
ICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQZXJjZW50YWdlLAotICAg
ICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBlRU1TLAotICAgICAgICBTVkdfTEVO
R1RIVFlQRV9FWFMgPSBMZW5ndGhUeXBlRVhTLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCA9
IExlbmd0aFR5cGVQWCwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gPSBMZW5ndGhUeXBlQ00s
Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX01NID0gTGVuZ3RoVHlwZU1NLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFQg
PSBMZW5ndGhUeXBlUFQsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BDID0gTGVuZ3RoVHlwZVBD
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpVbmtub3duKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVN
QkVSICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6Ok51bWJlciks
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
RU1TICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkVNUyks
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpFWFMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCAgICAg
ICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UFgpLAorICAgICAg
ICBTVkdfTEVOR1RIVFlQRV9DTSAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZH
TGVuZ3RoVHlwZTo6Q00pLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9NTSAgICAgICAgICAgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6TU0pLAorICAgICAgICBTVkdfTEVO
R1RIVFlQRV9JTiAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlw
ZTo6SU4pLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QVCAgICAgICAgICAgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UFQpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9Q
QyAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UEMpCiAg
ICAgfTsKIAogICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoKQpAQCAtNzksOSArODAs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVlKTsK
ICAgICB9CiAKLSAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSgpCisgICAgdW5zaWduZWQgc2hv
cnQgdW5pdFR5cGUoKSAgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLnVuaXRU
eXBlKCk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5sZW5n
dGhUeXBlKCkpOwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRp
bmdzKCkKQEAgLTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgp
KQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVy
cm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVlLCBT
VkdMZW5ndGhDb250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAgICAgICAgYXV0byByZXN1
bHQgPSBtX3ZhbHVlLnNldFZhbHVlKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgp
IH0sIHZhbHVlKTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIApAQCAtMTM1LDEyICsxMzYsMTIgQEAgcHVibGlj
OgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQg
PSBtX3ZhbHVlLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZp
ZWRVbml0cyk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICAKKyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNWR19M
RU5HVEhUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAgICAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgICAg
IG1fdmFsdWUgPSB7IHZhbHVlSW5TcGVjaWZpZWRVbml0cywgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3Ro
VHlwZT4odW5pdFR5cGUpLCBtX3ZhbHVlLmxlbmd0aE1vZGUoKSB9OwogICAgICAgICBjb21taXRD
aGFuZ2UoKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAgICAgCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHMo
dW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpCkBAIC0xNDgsMTAgKzE0OSwxMyBAQCBwdWJsaWM6CiAg
ICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tm9Nb2RpZmljYXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1f
dmFsdWUuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQg
eyBjb250ZXh0RWxlbWVudCgpIH0pOworICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xFTkdU
SFRZUEVfVU5LTk9XTiB8fCB1bml0VHlwZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAgYXV0
byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKFNWR0xlbmd0aENvbnRl
eHQgeyBjb250ZXh0RWxlbWVudCgpIH0sIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXRU
eXBlKSk7CiAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICAKKwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4
dC5jcHAKaW5kZXggMDgwMDAxNzZiYWMwZmI5MGZlYTM1MGZmZDYyZTU2ZWM0YmJjMTI5ZS4uMDk5
NTRmYjIyOWJhOGM3NDBhNGNiYmIzNjNhMzU5MGRmYjFlM2NmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhDb250ZXh0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVk
IDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUg
U3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODUsMTAg
Kzg1LDEwIEBAIGZsb2F0IFNWR0xlbmd0aENvbnRleHQ6OnJlc29sdmVMZW5ndGgoY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dCwgU1ZHVW5pdFR5cGVzOjpTCiAgICAgcmV0dXJuIHgudmFsdWVBc1Bl
cmNlbnRhZ2UoKTsKIH0KIAotZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK2Zsb2F0IFNWR0xlbmd0
aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBTVkdMZW5ndGhN
b2RlIGxlbmd0aE1vZGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkgewotICAgICAg
ICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVu
Z3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRW
YWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIGxlbmd0
aE1vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAg
cmV0dXJuIDA7CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CkBA
IC05OSw0OSArOTksNDkgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgo
Y29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9kZSkKICAgICBGbG9hdFNpemUg
dmlld3BvcnRTaXplOwogICAgIGRldGVybWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CiAKLSAg
ICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2gg
KGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAgICBy
ZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIHZpZXdwb3J0U2l6ZS53aWR0aCgpKTsK
LSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWln
aHQ6CiAgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgdmlld3BvcnRT
aXplLmhlaWdodCgpKTsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xl
bmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5n
dGgsIHN0ZDo6c3FydCh2aWV3cG9ydFNpemUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAyKSk7
CiAgICAgfTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0
aENvbnRleHQ6OmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhN
b2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQpIGNvbnN0CitFeGNlcHRpb25PcjxmbG9h
dD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUs
IFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBjb25z
dAogewogICAgIC8vIElmIHRoZSBTVkdMZW5ndGhDb250ZXh0IGNhcnJpZXMgYSBjdXN0b20gdmll
d3BvcnQsIGZvcmNlIHJlc29sdmluZyBhZ2FpbnN0IGl0LgogICAgIGlmICghbV9vdmVycmlkZGVu
Vmlld3BvcnQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIDEwMCUgPSAxMDAuMCBpbnN0ZWFkIG9m
IDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlzIGNvdWxkIGV2ZW50dWFsbHkgYmUgY2hh
bmdlZAotICAgICAgICBpZiAoZnJvbVVuaXQgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAg
ICAgIGlmIChsZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAg
ICAgICB2YWx1ZSAvPSAxMDA7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2Vu
dGFnZVRvVXNlclVuaXRzKHZhbHVlLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1
ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAot
ICAgIHN3aXRjaCAoZnJvbVVuaXQpIHsKLSAgICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgorICAg
IHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlTnVtYmVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOgogICAg
ICAgICByZXR1cm4gdmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpQWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRv
VXNlclVuaXRzKHZhbHVlIC8gMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVy
dFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEwMCwgbGVuZ3RoTW9kZSk7
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFs
dWVGcm9tRU1TVG9Vc2VyVW5pdHModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAg
ICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVYUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZy
b21FWFNUb1VzZXJVbml0cyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgY2Fz
ZSBTVkdMZW5ndGhUeXBlOjpDTToKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVy
SW5jaCAvIDIuNTRmOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6TU06CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyNS40
ZjsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OklOOgog
ICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAgIHJldHVybiB2YWx1
ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICBj
YXNlIFNWR0xlbmd0aFR5cGU6OlBDOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQ
ZXJJbmNoIC8gNjsKICAgICB9CiAKQEAgLTE0OSwzMCArMTQ5LDMwIEBAIEV4Y2VwdGlvbk9yPGZs
b2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2YWx1
ZSwgU1ZHTGVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5n
dGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5n
dGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdAorRXhjZXB0aW9uT3I8Zmxv
YXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQgdmFs
dWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBj
b25zdAogewotICAgIHN3aXRjaCAodG9Vbml0KSB7Ci0gICAgY2FzZSBMZW5ndGhUeXBlVW5rbm93
bjoKKyAgICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVu
a25vd246CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9Owot
ICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51bWJl
cjoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6
Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJjZW50YWdlKHZh
bHVlICogMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAgY2FzZSBTVkdM
ZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVVz
ZXJVbml0c1RvUGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgbGVuZ3RoTW9kZSk7CisgICAgY2FzZSBT
VkdMZW5ndGhUeXBlOjpFTVM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNlclVu
aXRzVG9FTVModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OkVYUzoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNU
b0VYUyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpQWDoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIDIuNTRm
IC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICBjYXNlIFNW
R0xlbmd0aFR5cGU6Ok1NOgogICAgICAgICByZXR1cm4gdmFsdWUgKiAyNS40ZiAvIGNzc1BpeGVs
c1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgY2FzZSBTVkdMZW5ndGhUeXBl
OjpJTjoKICAgICAgICAgcmV0dXJuIHZhbHVlIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNl
IExlbmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBUOgogICAgICAgICByZXR1
cm4gdmFsdWUgKiA3MiAvIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUEM6
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKICAgICAgICAgcmV0dXJuIHZhbHVlICogNiAv
IGNzc1BpeGVsc1BlckluY2g7CiAgICAgfQogCkBAIC0xODAsMTggKzE4MCwxOCBAQCBFeGNlcHRp
b25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhm
bG9hdCB2YWx1ZSwgU1ZHTAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZShm
bG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8ZmxvYXQ+
IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2Uo
ZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBGbG9h
dFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRT
aXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0
Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAg
ICByZXR1cm4gdmFsdWUgLyB2aWV3cG9ydFNpemUud2lkdGgoKSAqIDEwMDsKLSAgICBjYXNlIExl
bmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAg
IHJldHVybiB2YWx1ZSAvIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIDEwMDsKLSAgICBjYXNlIExl
bmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICBy
ZXR1cm4gdmFsdWUgLyAoc3RkOjpzcXJ0KHZpZXdwb3J0U2l6ZS5kaWFnb25hbExlbmd0aFNxdWFy
ZWQoKSAvIDIpKSAqIDEwMDsKICAgICB9OwogCkBAIC0xOTksMTggKzE5OSwxOCBAQCBFeGNlcHRp
b25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1Rv
UGVyY2VudGFnZShmbG9hdAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhm
bG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8ZmxvYXQ+
IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMo
ZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBGbG9h
dFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRT
aXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAK
LSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0
Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAg
ICByZXR1cm4gdmFsdWUgKiB2aWV3cG9ydFNpemUud2lkdGgoKTsKLSAgICBjYXNlIExlbmd0aE1v
ZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVy
biB2YWx1ZSAqIHZpZXdwb3J0U2l6ZS5oZWlnaHQoKTsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhl
cjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFsdWUg
KiBzdGQ6OnNxcnQodmlld3BvcnRTaXplLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIC8gMik7CiAg
ICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgKaW5kZXggOGU5N2UyMTRi
OWIzNTJhODg5MDQ1ZWMyYTI5MmI5NWQ1ZTdhNzM3MS4uZDNjYzRmYTcwMDkyYWU1MGM0Yzc1Yzc5
MjhmZjg3ZWQ2YzEwMjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5oCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAxMS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIx
LDM1ICsyMiwxNSBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGbG9h
dFJlY3QuaCIKKyNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1VuaXRU
eXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFz
cyBTVkdMZW5ndGhWYWx1ZTsKIAogc3RydWN0IExlbmd0aDsKIAotZW51bSBTVkdMZW5ndGhUeXBl
IHsKLSAgICBMZW5ndGhUeXBlVW5rbm93biA9IDAsCi0gICAgTGVuZ3RoVHlwZU51bWJlciwKLSAg
ICBMZW5ndGhUeXBlUGVyY2VudGFnZSwKLSAgICBMZW5ndGhUeXBlRU1TLAotICAgIExlbmd0aFR5
cGVFWFMsCi0gICAgTGVuZ3RoVHlwZVBYLAotICAgIExlbmd0aFR5cGVDTSwKLSAgICBMZW5ndGhU
eXBlTU0sCi0gICAgTGVuZ3RoVHlwZUlOLAotICAgIExlbmd0aFR5cGVQVCwKLSAgICBMZW5ndGhU
eXBlUEMKLX07Ci0KLWVudW0gU1ZHTGVuZ3RoTW9kZSB7Ci0gICAgTGVuZ3RoTW9kZVdpZHRoID0g
MCwKLSAgICBMZW5ndGhNb2RlSGVpZ2h0LAotICAgIExlbmd0aE1vZGVPdGhlcgotfTsKLQogY2xh
c3MgU1ZHTGVuZ3RoQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHTGVuZ3RoQ29u
dGV4dChjb25zdCBTVkdFbGVtZW50Kik7CkBAIC02NCw5ICs0NSw5IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgRmxvYXRQb2ludCByZXNvbHZlUG9pbnQoY29uc3QgU1ZHRWxlbWVudCosIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4LCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgeSk7CiAgICAgc3RhdGljIGZsb2F0IHJlc29sdmVMZW5ndGgoY29uc3QgU1ZHRWxl
bWVudCosIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7
CiAKLSAgICBmbG9hdCB2YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhNb2Rl
ID0gTGVuZ3RoTW9kZU90aGVyKTsKLSAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVl
VG9Vc2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQp
IGNvbnN0OwotICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRz
KGZsb2F0LCBTVkdMZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlIHRvVW5pdCkgY29uc3Q7CisgICAg
ZmxvYXQgdmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xl
bmd0aE1vZGU6Ok90aGVyKTsKKyAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVlVG9V
c2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUpIGNvbnN0OworICAg
IEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0LCBTVkdM
ZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlKSBjb25zdDsKIAogICAgIGJvb2wgZGV0ZXJtaW5lVmll
d3BvcnQoRmxvYXRTaXplJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCmlu
ZGV4IGIwMTQ3ZmEyMzRmNGQ5YTg4ZjlmYzlmMzFkNWYzODg5NzMxNjc2OTUuLjVlYjU3MDFjNjc0
Njg3OTJkMDU2MmMxNWI1MjE2YjQ5MmMwMjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3QuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR1Zh
bHVlUHJvcGVydHlMaXN0PFNWR0xlbmd0aD4gewogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShTVkdMZW5ndGhNb2Rl
IGxlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIpCisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGhM
aXN0PiBjcmVhdGUoU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3Ro
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KGxl
bmd0aE1vZGUpKTsKICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAg
ICAgfQogCi0gICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBMZW5ndGhNb2RlT3RoZXIg
fTsKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVuZ3RoTW9kZSB7IFNWR0xlbmd0aE1vZGU6Ok90aGVy
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aFZhbHVlLmNwcAppbmRleCBkZDJlZGUxNGZiNzE3YzE2YTBmYjhlNjAyYTQxYWU5ODc0YTExOGVm
Li4zNTlkMjJjNDRhZjE4OTViYTVhN2JhN2M1YmY1ZGU1ZGZmNTEwYjRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMZW5ndGhWYWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw1OCArMjIsMzcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogCi0jaW5jbHVk
ZSAiQ1NTSGVscGVyLmgiCisjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2lu
Y2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEhl
bHBlciBmdW5jdGlvbnMKLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc3RvcmVVbml0KFNWR0xlbmd0
aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFy
KiBsZW5ndGhUeXBlVG9TdHJpbmcoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewotICAgIHJl
dHVybiAobW9kZSA8PCA0KSB8IHR5cGU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoTW9k
ZSBleHRyYWN0TW9kZSh1bnNpZ25lZCB1bml0KQotewotICAgIHVuc2lnbmVkIG1vZGUgPSB1bml0
ID4+IDQ7ICAgIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhNb2RlPihtb2RlKTsK
LX0KLQotc3RhdGljIGlubGluZSBTVkdMZW5ndGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVkIHVu
aXQpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXQgJiAoKDEg
PDwgNCkgLSAxKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbGVuZ3RoVHlwZVRv
U3RyaW5nKFNWR0xlbmd0aFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBj
YXNlIExlbmd0aFR5cGVVbmtub3duOgotICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBz
d2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVua25vd246Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiAiIjsgICAgCi0g
ICAgY2FzZSBMZW5ndGhUeXBlUGVyY2VudGFnZToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBl
cmNlbnRhZ2U6CiAgICAgICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RU1TOgogICAgICAgICByZXR1cm4gImVtIjsKLSAgICBj
YXNlIExlbmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFWFM6CiAgICAgICAg
IHJldHVybiAiZXgiOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6UFg6CiAgICAgICAgIHJldHVybiAicHgiOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q006CiAgICAgICAgIHJldHVybiAiY20iOwotICAgIGNh
c2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TU06CiAgICAgICAgIHJl
dHVybiAibW0iOwotICAgIGNhc2UgTGVuZ3RoVHlwZUlOOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlw
ZTo6SU46CiAgICAgICAgIHJldHVybiAiaW4iOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgorICAg
IGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UFQ6CiAgICAgICAgIHJldHVybiAicHQiOwotICAgIGNhc2Ug
TGVuZ3RoVHlwZVBDOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UEM6CiAgICAgICAgIHJldHVy
biAicGMiOwogICAgIH0KIApAQCAtODEsOTAgKzYwLDE4MyBAQCBzdGF0aWMgaW5saW5lIGNvbnN0
IGNoYXIqIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhUeXBlIHR5cGUpCiAgICAgcmV0dXJu
ICIiOwogfQogCi1pbmxpbmUgU1ZHTGVuZ3RoVHlwZSBwYXJzZUxlbmd0aFR5cGUoY29uc3QgVUNo
YXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBw
YXJzZUxlbmd0aFR5cGUoY29uc3QgVUNoYXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKIHsKICAg
ICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVOdW1iZXI7CisgICAg
ICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CiAKICAgICBjb25zdCBVQ2hhciBmaXJz
dENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIGZp
cnN0Q2hhciA9PSAnJScgPyBMZW5ndGhUeXBlUGVyY2VudGFnZSA6IExlbmd0aFR5cGVVbmtub3du
OworICAgICAgICByZXR1cm4gZmlyc3RDaGFyID09ICclJyA/IFNWR0xlbmd0aFR5cGU6OlBlcmNl
bnRhZ2UgOiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwogCiAgICAgY29uc3QgVUNoYXIgc2Vjb25k
Q2hhciA9ICpwdHI7CiAKICAgICBpZiAoKytwdHIgIT0gZW5kKQotICAgICAgICByZXR1cm4gTGVu
Z3RoVHlwZVVua25vd247CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwog
CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnZScgJiYgc2Vjb25kQ2hhciA9PSAnbScpCi0gICAgICAg
IHJldHVybiBMZW5ndGhUeXBlRU1TOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RU1T
OwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENoYXIgPT0gJ3gnKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoVHlwZUVYUzsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OkVY
UzsKICAgICBpZiAoZmlyc3RDaGFyID09ICdwJyAmJiBzZWNvbmRDaGFyID09ICd4JykKLSAgICAg
ICAgcmV0dXJuIExlbmd0aFR5cGVQWDsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBY
OwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2MnICYmIHNlY29uZENoYXIgPT0gJ20nKQotICAgICAg
ICByZXR1cm4gTGVuZ3RoVHlwZUNNOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6Q007
CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnbScgJiYgc2Vjb25kQ2hhciA9PSAnbScpCi0gICAgICAg
IHJldHVybiBMZW5ndGhUeXBlTU07CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpNTTsK
ICAgICBpZiAoZmlyc3RDaGFyID09ICdpJyAmJiBzZWNvbmRDaGFyID09ICduJykKLSAgICAgICAg
cmV0dXJuIExlbmd0aFR5cGVJTjsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OklOOwog
ICAgIGlmIChmaXJzdENoYXIgPT0gJ3AnICYmIHNlY29uZENoYXIgPT0gJ3QnKQotICAgICAgICBy
ZXR1cm4gTGVuZ3RoVHlwZVBUOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UFQ7CiAg
ICAgaWYgKGZpcnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAnYycpCi0gICAgICAgIHJl
dHVybiBMZW5ndGhUeXBlUEM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQQzsKIAot
ICAgIHJldHVybiBMZW5ndGhUeXBlVW5rbm93bjsKKyAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
VW5rbm93bjsKIH0KIAotU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1v
ZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQotICAgIDogbV91bml0KHN0b3Jl
VW5pdChtb2RlLCBMZW5ndGhUeXBlTnVtYmVyKSkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlw
ZSBwcmltaXRpdmVUeXBlVG9MZW5ndGhUeXBlKHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUp
CiB7Ci0gICAgc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKKyAgICBzd2l0Y2ggKHBy
aW1pdGl2ZVR5cGUpIHsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOgor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOworICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
UGVyY2VudGFnZTsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOgorICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RU1TOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FWFM6CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpFWFM7CisgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6
UFg7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOgorICAgICAgICByZXR1cm4g
U1ZHTGVuZ3RoVHlwZTo6Q007CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOgor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TU07CisgICAgY2FzZSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0lOOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6SU47CisgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlw
ZTo6UFQ7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOgorICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoVHlwZTo6UEM7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
S05PV046CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlVua25v
d247CisgICAgfQogfQogCi1TVkdMZW5ndGhWYWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZH
TGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwg
U1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSkKLSAgICA6IG1fdW5pdChzdG9yZVVuaXQobW9kZSwgdW5p
dFR5cGUpKQorc3RhdGljIGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGUgbGVuZ3Ro
VHlwZVRvUHJpbWl0aXZlVHlwZShTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAgc2V0
VmFsdWUodmFsdWUsIGNvbnRleHQpOworICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNh
c2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfVU5LTk9XTjsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok51bWJlcjoKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOworICAgIGNhc2UgU1ZHTGVu
Z3RoVHlwZTo6UGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRTsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVNUzoKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6
RVhTOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7CisgICAgY2Fz
ZSBTVkdMZW5ndGhUeXBlOjpQWDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFg7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDTToKKyAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfQ007CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNTToKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpJTjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47CisgICAg
Y2FzZSBTVkdMZW5ndGhUeXBlOjpQVDoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFQ7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQQzoKKyAgICAgICAgcmV0dXJuIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7CisgICAgfQogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBT
VkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJp
bmcsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShT
VkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKKyAg
ICA6IG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gMDsKLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQobW9kZSwgTGVuZ3RoVHlwZU51bWJlcik7
Ci0gICAgcmV0dXJuIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CisgICAgc2V0VmFs
dWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6b3Bl
cmF0b3I9PShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhWYWx1
ZTo6U1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5ndGhU
eXBlIGxlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICA6IG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICAsIG1fbGVuZ3RoVHlw
ZShsZW5ndGhUeXBlKQorICAgICwgbV9sZW5ndGhNb2RlKGxlbmd0aE1vZGUpCiB7Ci0gICAgcmV0
dXJuIG1fdW5pdCA9PSBvdGhlci5tX3VuaXQgJiYgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPT0g
b3RoZXIubV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgQVNTRVJUKG1fbGVuZ3RoVHlwZSAh
PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6b3Bl
cmF0b3IhPShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhWYWx1
ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
dmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2Rl
KQorICAgIDogbV9sZW5ndGhUeXBlKGxlbmd0aFR5cGUpCisgICAgLCBtX2xlbmd0aE1vZGUobGVu
Z3RoTW9kZSkKIHsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOworICAgIHNldFZhbHVl
KGNvbnRleHQsIHZhbHVlKTsKIH0KIAotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZywg
U1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUg
bmVnYXRpdmVWYWx1ZXNNb2RlKQorU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmlu
ZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQogewotICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aChtb2Rl
KTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobGVuZ3RoTW9kZSk7CiAKICAgICBpZiAobGVu
Z3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZykuaGFzRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHBhcnNlRXJyb3IgPSBQYXJzaW5nQXR0cmlidXRlRmFpbGVkRXJyb3I7Ci0gICAgZWxzZSBp
ZiAobmVnYXRpdmVWYWx1ZXNNb2RlID09IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocyAmJiBsZW5ndGgu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQorICAgIGVsc2UgaWYgKG5lZ2F0aXZlVmFsdWVz
TW9kZSA9PSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCAmJiBsZW5ndGgudmFs
dWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQogICAgICAgICBwYXJzZUVycm9yID0gTmVnYXRpdmVW
YWx1ZUZvcmJpZGRlbkVycm9yOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotU1ZHTGVuZ3Ro
VHlwZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdFR5cGUoKSBjb25zdAorU1ZHTGVuZ3RoVmFsdWUgU1ZH
TGVuZ3RoVmFsdWU6OmJsZW5kKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdM
ZW5ndGhWYWx1ZSYgdG8sIGZsb2F0IHByb2dyZXNzKQoreworICAgIGlmICgoZnJvbS5pc1plcm8o
KSAmJiB0by5pc1plcm8oKSkKKyAgICAgICAgfHwgZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVu
Z3RoVHlwZTo6VW5rbm93bgorICAgICAgICB8fCB0by5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3Ro
VHlwZTo6VW5rbm93bgorICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgZnJvbS5sZW5ndGhU
eXBlKCkgIT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSAmJiB0by5sZW5ndGhUeXBlKCkgPT0g
U1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKKyAgICAgICAgfHwgKCF0by5pc1plcm8oKSAmJiBm
cm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlICYmIHRvLmxlbmd0
aFR5cGUoKSAhPSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQorICAgICAgICB8fCAoIWZyb20u
aXNaZXJvKCkgJiYgIXRvLmlzWmVybygpICYmIChmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5n
dGhUeXBlOjpFTVMgfHwgZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6RVhTKSAm
JiBmcm9tLmxlbmd0aFR5cGUoKSAhPSB0by5sZW5ndGhUeXBlKCkpKQorICAgICAgICByZXR1cm4g
dG87CisKKyAgICBpZiAoZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2Vu
dGFnZSB8fCB0by5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkgewor
ICAgICAgICBhdXRvIGZyb21QZXJjZW50ID0gZnJvbS52YWx1ZUFzUGVyY2VudGFnZSgpICogMTAw
OworICAgICAgICBhdXRvIHRvUGVyY2VudCA9IHRvLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7
CisgICAgICAgIHJldHVybiB7IFdlYkNvcmU6OmJsZW5kKGZyb21QZXJjZW50LCB0b1BlcmNlbnQs
IHByb2dyZXNzKSwgU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSB9OworICAgIH0KKworICAgIGlm
IChmcm9tLmxlbmd0aFR5cGUoKSA9PSB0by5sZW5ndGhUeXBlKCkgfHwgZnJvbS5pc1plcm8oKSB8
fCB0by5pc1plcm8oKSB8fCBmcm9tLmlzUmVsYXRpdmUoKSkgeworICAgICAgICBhdXRvIGZyb21W
YWx1ZSA9IGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGF1dG8gdG9WYWx1
ZSA9IHRvLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICByZXR1cm4geyBXZWJDb3Jl
OjpibGVuZChmcm9tVmFsdWUsIHRvVmFsdWUsIHByb2dyZXNzKSwgdG8uaXNaZXJvKCkgPyBmcm9t
Lmxlbmd0aFR5cGUoKSA6IHRvLmxlbmd0aFR5cGUoKSB9OworICAgIH0KKworICAgIFNWR0xlbmd0
aENvbnRleHQgbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0KG51bGxwdHIpOworICAgIGF1dG8gZnJv
bVZhbHVlSW5Vc2VyVW5pdHMgPSBub25SZWxhdGl2ZUxlbmd0aENvbnRleHQuY29udmVydFZhbHVl
VG9Vc2VyVW5pdHMoZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSwgZnJvbS5sZW5ndGhUeXBl
KCksIGZyb20ubGVuZ3RoTW9kZSgpKTsKKyAgICBpZiAoZnJvbVZhbHVlSW5Vc2VyVW5pdHMuaGFz
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGZyb21WYWx1ZSA9
IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZyb21W
YWx1ZUluVXNlclVuaXRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB0by5sZW5ndGhUeXBlKCksIHRv
Lmxlbmd0aE1vZGUoKSk7CisgICAgaWYgKGZyb21WYWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIGZsb2F0IHRvVmFsdWUgPSB0by52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKTsKKyAgICByZXR1cm4geyBXZWJDb3JlOjpibGVuZChmcm9tVmFsdWUucmVsZWFzZVJl
dHVyblZhbHVlKCksIHRvVmFsdWUsIHByb2dyZXNzKSwgdG8ubGVuZ3RoVHlwZSgpIH07Cit9CisK
K1NWR0xlbmd0aFZhbHVlIFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBleHRyYWN0VHlwZSht
X3VuaXQpOworICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSA9IHByaW1pdGl2ZVR5cGVUb0xl
bmd0aFR5cGUodmFsdWUucHJpbWl0aXZlVHlwZSgpKTsKKyAgICByZXR1cm4gbGVuZ3RoVHlwZSA9
PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duID8gU1ZHTGVuZ3RoVmFsdWUoKSA6IFNWR0xlbmd0aFZh
bHVlKHZhbHVlLmZsb2F0VmFsdWUoKSwgbGVuZ3RoVHlwZSk7CiB9CiAKLVNWR0xlbmd0aE1vZGUg
U1ZHTGVuZ3RoVmFsdWU6OnVuaXRNb2RlKCkgY29uc3QKK1JlZjxDU1NQcmltaXRpdmVWYWx1ZT4g
U1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
IGxlbmd0aCkKIHsKLSAgICByZXR1cm4gZXh0cmFjdE1vZGUobV91bml0KTsKKyAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShsZW5ndGgudmFsdWVJblNwZWNpZmllZFVuaXRzKCks
IGxlbmd0aFR5cGVUb1ByaW1pdGl2ZVR5cGUobGVuZ3RoLmxlbmd0aFR5cGUoKSkpOworfQorCitF
eGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBT
dHJpbmcmIHZhbHVlQXNTdHJpbmcsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKK3sKKyAgICBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IDA7CisgICAgbV9sZW5ndGhNb2RlID0gbGVuZ3RoTW9k
ZTsKKyAgICBtX2xlbmd0aFR5cGUgPSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CisgICAgcmV0dXJu
IHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CiB9CiAKIGZsb2F0IFNWR0xlbmd0aFZh
bHVlOjp2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAtMTc1
LDM3ICsyNDcsMzUgQEAgZmxvYXQgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlKGNvbnN0IFNWR0xlbmd0
aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKTsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZv
ckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CitTdHJpbmcg
U1ZHTGVuZ3RoVmFsdWU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBjb250
ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzLCBleHRy
YWN0TW9kZShtX3VuaXQpLCBleHRyYWN0VHlwZShtX3VuaXQpKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzKSwgbGVuZ3RoVHlwZVRvU3RyaW5nKG1fbGVuZ3RoVHlwZSkpOwogfQogCi1FeGNlcHRpb25P
cjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB1
bml0VHlwZSkKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVGb3JCaW5k
aW5ncyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIC8vIEZJ
WE1FOiBTZWVtcyBsaWtlIGEgYnVnIHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBtX3VuaXQg
ZXZlbiBpZiBzZXRWYWx1ZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgotICAgIG1fdW5pdCA9IHN0b3Jl
VW5pdChtb2RlLCB1bml0VHlwZSk7Ci0gICAgcmV0dXJuIHNldFZhbHVlKHZhbHVlLCBjb250ZXh0
KTsKKyAgICByZXR1cm4gY29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cywgbV9sZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUpOwogfQogCi1FeGNlcHRp
b25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoZmxvYXQgdmFsdWUsIGNvbnN0IFNW
R0xlbmd0aENvbnRleHQmIGNvbnRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1
ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUp
CiB7CiAgICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3JpY2FsIHJl
YXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgaWYgKGV4dHJhY3RU
eXBlKG1fdW5pdCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKG1fbGVuZ3RoVHlw
ZSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICB2YWx1ZSA9IHZhbHVlIC8g
MTAwOwogCi0gICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnRleHQuY29udmVydFZhbHVlRnJv
bVVzZXJVbml0cyh2YWx1ZSwgZXh0cmFjdE1vZGUobV91bml0KSwgZXh0cmFjdFR5cGUobV91bml0
KSk7CisgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnRleHQuY29udmVydFZhbHVlRnJvbVVz
ZXJVbml0cyh2YWx1ZSwgbV9sZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUpOwogICAgIGlmIChjb252
ZXJ0ZWRWYWx1ZS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZFZhbHVl
LnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNvbnZl
cnRlZFZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIHJldHVybiB7IH07CiB9Ci1mbG9h
dCBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UoKSBjb25zdAotewotICAgIC8vIDEw
MCUgPSAxMDAuMCBpbnN0ZWFkIG9mIDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlzIGNv
dWxkIGV2ZW50dWFsbHkgYmUgY2hhbmdlZAotICAgIGlmIChleHRyYWN0VHlwZShtX3VuaXQpID09
IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMgLyAxMDA7CiAKLSAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CitFeGNl
cHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZH
TGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQoreworICAgIC8vIEZJWE1FOiBTZWVtcyBsaWtlIGEgYnVn
IHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBtX3VuaXQgZXZlbiBpZiBzZXRWYWx1ZSB0aHJv
d3MgYW4gZXhjZXB0aW9uLgorICAgIG1fbGVuZ3RoTW9kZSA9IGxlbmd0aE1vZGU7CisgICAgbV9s
ZW5ndGhUeXBlID0gbGVuZ3RoVHlwZTsKKyAgICByZXR1cm4gc2V0VmFsdWUoY29udGV4dCwgdmFs
dWUpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTIyMSwxNzUgKzI5MSwyOSBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKICAgICBpZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCBjb252ZXJ0ZWROdW1iZXIs
IGZhbHNlKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKLSAg
ICBhdXRvIHR5cGUgPSBwYXJzZUxlbmd0aFR5cGUocHRyLCBlbmQpOwotICAgIGlmICh0eXBlID09
IExlbmd0aFR5cGVVbmtub3duKQorICAgIGF1dG8gbGVuZ3RoVHlwZSA9IHBhcnNlTGVuZ3RoVHlw
ZShwdHIsIGVuZCk7CisgICAgaWYgKGxlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6VW5rbm93
bikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKLSAgICBtX3Vu
aXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91bml0KSwgdHlwZSk7CisgICAgbV9sZW5ndGhU
eXBlID0gbGVuZ3RoVHlwZTsKICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNvbnZlcnRl
ZE51bWJlcjsKICAgICByZXR1cm4geyB9OwogfQogCi1TdHJpbmcgU1ZHTGVuZ3RoVmFsdWU6OnZh
bHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51
bWJlcjo6Zml4ZWRQcmVjaXNpb24obV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpLCBsZW5ndGhUeXBl
VG9TdHJpbmcoZXh0cmFjdFR5cGUobV91bml0KSkpOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBT
VkdMZW5ndGhWYWx1ZTo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB0eXBl
LCBmbG9hdCB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpjb252ZXJ0
VG9TcGVjaWZpZWRVbml0cyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBTVkdMZW5n
dGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24g
fHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yIH07Ci0KLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91
bml0KSwgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odHlwZSkpOwotICAgIG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzID0gdmFsdWU7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhjZXB0aW9uT3I8
dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNo
b3J0IHR5cGUsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYgKHR5
cGUgPT0gTGVuZ3RoVHlwZVVua25vd24gfHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0KICAgICBhdXRvIHZhbHVl
SW5Vc2VyVW5pdHMgPSB2YWx1ZUZvckJpbmRpbmdzKGNvbnRleHQpOwogICAgIGlmICh2YWx1ZUlu
VXNlclVuaXRzLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gdmFsdWVJblVzZXJVbml0
cy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBhdXRvIG9yaWdpbmFsVW5pdEFuZFR5cGUgPSBt
X3VuaXQ7Ci0gICAgbV91bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCksIHN0YXRp
Y19jYXN0PFNWR0xlbmd0aFR5cGU+KHR5cGUpKTsKLSAgICBhdXRvIHJlc3VsdCA9IHNldFZhbHVl
KHZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQpOwotICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgbV91bml0ID0gb3JpZ2luYWxVbml0
QW5kVHlwZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6
OmZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCi17
Ci0gICAgU1ZHTGVuZ3RoVHlwZSB0eXBlOwotICAgIHN3aXRjaCAodmFsdWUucHJpbWl0aXZlVHlw
ZSgpKSB7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjoKLSAgICAgICAg
dHlwZSA9IExlbmd0aFR5cGVOdW1iZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19FTVM6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlRU1TOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgotICAgICAgICB0eXBlID0gTGVuZ3Ro
VHlwZUVYUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZVBYOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ006Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBl
Q007Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTToK
LSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVNTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZUlOOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6Ci0gICAg
ICAgIHR5cGUgPSBMZW5ndGhUeXBlUFQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QQzoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQQzsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV046Ci0gICAg
ZGVmYXVsdDoKKyAgICBhdXRvIG9yaWdpbmFsTGVuZ3RoVHlwZSA9IG1fbGVuZ3RoVHlwZTsKKyAg
ICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOworICAgIGF1dG8gcmVzdWx0ID0gc2V0VmFsdWUo
Y29udGV4dCwgdmFsdWVJblVzZXJVbml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgaWYg
KCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsKLQot
ICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRV
bml0cyh0eXBlLCB2YWx1ZS5mbG9hdFZhbHVlKCkpOwotICAgIHJldHVybiBsZW5ndGg7Ci19CiAK
LVJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZlVmFs
dWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxlbmd0aCkKLXsKLSAgICBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGUgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjsKLSAg
ICBzd2l0Y2ggKGxlbmd0aC51bml0VHlwZSgpKSB7Ci0gICAgY2FzZSBMZW5ndGhUeXBlVW5rbm93
bjoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgotICAgICAgICBj
c3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVu
Z3RoVHlwZUVNUzoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1T
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVFWFM6Ci0gICAgICAgIGNzc1R5
cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlUFg6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1BYOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVDTToKLSAgICAgICAgY3Nz
VHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTGVuZ3RoVHlwZU1NOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19NTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46Ci0gICAgICAgIGNz
c1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIExlbmd0aFR5cGVQVDoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgotICAgICAgICBj
c3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fTsKLQotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxlbmd0aC52YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoKSwgY3NzVHlwZSk7Ci19Ci0KLVNWR0xlbmd0aE1vZGUgU1ZHTGVuZ3Ro
VmFsdWU6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICB1c2luZyBNYXAgPSBIYXNoTWFwPFF1YWxpZmllZE5h
bWUsIFNWR0xlbmd0aE1vZGU+OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYXA+IG1hcCA9
IFtdIHsKLSAgICAgICAgc3RydWN0IE1vZGUgewotICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZTsKLSAgICAgICAgICAgIFNWR0xlbmd0aE1vZGUgbW9kZTsKLSAgICAgICAgfTsK
LSAgICAgICAgc3RhdGljIGNvbnN0IE1vZGUgbW9kZXNbXSA9IHsKLSAgICAgICAgICAgIHsgU1ZH
TmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6
OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpjeEF0
dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6Y3lBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpkeEF0dHIsIExlbmd0
aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6ZHlBdHRyLCBMZW5ndGhNb2Rl
SGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpmeEF0dHIsIExlbmd0aE1vZGVXaWR0
aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6ZnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0s
Ci0gICAgICAgICAgICB7IFNWR05hbWVzOjp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAot
ICAgICAgICAgICAgeyBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAot
ICAgICAgICAgICAgeyBTVkdOYW1lczo6eDFBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAg
ICAgICAgIHsgU1ZHTmFtZXM6OngyQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAg
ICB7IFNWR05hbWVzOjp5MUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsg
U1ZHTmFtZXM6OnkyQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdO
YW1lczo6cmVmWEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1l
czo6cmVmWUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6
Om1hcmtlcldpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05h
bWVzOjptYXJrZXJIZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7
IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAg
ICB7IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAg
ICB9OwotICAgICAgICBNYXAgbWFwOwotICAgICAgICBmb3IgKGF1dG8mIG1vZGUgOiBtb2RlcykK
LSAgICAgICAgICAgIG1hcC5hZGQobW9kZS5uYW1lLCBtb2RlLm1vZGUpOwotICAgICAgICByZXR1
cm4gbWFwOwotICAgIH0oKTsKLSAgICAKLSAgICBhdXRvIHJlc3VsdCA9IG1hcC5nZXQoKS5maW5k
KGF0dHJOYW1lKTsKLSAgICBpZiAocmVzdWx0ID09IG1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIExlbmd0aE1vZGVPdGhlcjsKLSAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICBt
X2xlbmd0aFR5cGUgPSBvcmlnaW5hbExlbmd0aFR5cGU7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCk7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhW
YWx1ZS5oCmluZGV4IDkyNjYxYjIxZTUzZTcwMGNhMWJhZmVlNTFlMWY3YzVhYzlkNmUzNDUuLjZl
OTkyNmM5YTAyMjVkZDhlZGRjOWM2MzJjODdlN2M1YTk0MDAzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMZW5ndGhWYWx1ZS5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsMTQxICsyMSw5MCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNWR0xlbmd0
aENvbnRleHQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNWR1BhcnNp
bmdFcnJvci5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBRdWFsaWZpZWROYW1l
OworY2xhc3MgU1ZHTGVuZ3RoQ29udGV4dDsKKworZW51bSBjbGFzcyBTVkdMZW5ndGhUeXBlIDog
dWludDhfdCB7CisgICAgVW5rbm93biA9IDAsCisgICAgTnVtYmVyLAorICAgIFBlcmNlbnRhZ2Us
CisgICAgRU1TLAorICAgIEVYUywKKyAgICBQWCwKKyAgICBDTSwKKyAgICBNTSwKKyAgICBJTiwK
KyAgICBQVCwKKyAgICBQQworfTsKKworZW51bSBjbGFzcyBTVkdMZW5ndGhNb2RlIDogdWludDhf
dCB7CisgICAgV2lkdGgsCisgICAgSGVpZ2h0LAorICAgIE90aGVyCit9OwogCi1lbnVtIFNWR0xl
bmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSB7Ci0gICAgQWxsb3dOZWdhdGl2ZUxlbmd0aHMsCi0gICAg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzCitlbnVtIGNsYXNzIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVz
TW9kZSA6IHVpbnQ4X3QgeworICAgIEFsbG93LAorICAgIEZvcmJpZAogfTsKIAogY2xhc3MgU1ZH
TGVuZ3RoVmFsdWUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IC8vIEZJWE1FOiBPbmNlIGFsbCBTVkdMZW5ndGhWYWx1ZSB1c2VycyB1c2UgTGVuZ3RoIGludGVy
bmFsbHksIHdlIG1ha2UgdGhpcyBhIHdyYXBwZXIgZm9yIExlbmd0aC4KLSAgICBTVkdMZW5ndGhW
YWx1ZShTVkdMZW5ndGhNb2RlID0gTGVuZ3RoTW9kZU90aGVyLCBjb25zdCBTdHJpbmcmIHZhbHVl
QXNTdHJpbmcgPSBTdHJpbmcoKSk7Ci0gICAgU1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3Ro
Q29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhNb2RlID0gTGVuZ3RoTW9kZU90aGVyLCBTVkdMZW5n
dGhUeXBlID0gTGVuZ3RoVHlwZU51bWJlcik7CisgICAgU1ZHTGVuZ3RoVmFsdWUoU1ZHTGVuZ3Ro
TW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcg
PSBTdHJpbmcoKSk7CisgICAgU1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVu
aXRzLCBTVkdMZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIp
OworICAgIFNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZH
TGVuZ3RoVHlwZSA9IFNWR0xlbmd0aFR5cGU6Ok51bWJlciwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xl
bmd0aE1vZGU6Ok90aGVyKTsKIAotICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUoKSBjb25zdDsK
LSAgICBTVkdMZW5ndGhNb2RlIHVuaXRNb2RlKCkgY29uc3Q7CisgICAgc3RhdGljIFNWR0xlbmd0
aFZhbHVlIGNvbnN0cnVjdChTVkdMZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmLCBTVkdQYXJzaW5n
RXJyb3ImLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUgPSBTVkdMZW5ndGhOZWdhdGl2ZVZh
bHVlc01vZGU6OkFsbG93KTsKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgYmxlbmQoY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywgZmxvYXQgcHJv
Z3Jlc3MpOworICAgIAorICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBmcm9tQ1NTUHJpbWl0aXZl
VmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPENTU1ByaW1p
dGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CiAK
LSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKSBjb25zdDsKLSAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKSBjb25zdDsKKyAgICBTVkdMZW5n
dGhUeXBlIGxlbmd0aFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aFR5cGU7IH0KKyAgICBT
VkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aE1vZGU7IH0K
IAotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZSwgY29u
c3QgU3RyaW5nJiwgU1ZHUGFyc2luZ0Vycm9yJiwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2Rl
ID0gQWxsb3dOZWdhdGl2ZUxlbmd0aHMpOworICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1
cm4gIW1fdmFsdWVJblNwZWNpZmllZFVuaXRzOyAgfQorICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGVuZ3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlIHx8
IG1fbGVuZ3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpFTVMgfHwgbV9sZW5ndGhUeXBlID09IFNW
R0xlbmd0aFR5cGU6OkVYUzsgfQogCiAgICAgZmxvYXQgdmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29u
dGV4dCYpIGNvbnN0OworICAgIGZsb2F0IHZhbHVlQXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgPyBtX3ZhbHVlSW5T
cGVjaWZpZWRVbml0cyAvIDEwMCA6IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOyB9CisgICAgZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHM7IH0KKyAgICAKKyAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogICAg
IEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRl
eHQmKSBjb25zdDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZShmbG9hdCwgY29uc3Qg
U1ZHTGVuZ3RoQ29udGV4dCYpOwotICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0
IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSk7
CiAKLSAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0czsgfQogICAgIHZvaWQgc2V0VmFsdWVJblNwZWNpZmllZFVuaXRz
KGZsb2F0IHZhbHVlKSB7IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7IH0KKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiwgZmxvYXQp
OworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQm
LCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSk7CiAKLSAgICBmbG9hdCB2YWx1
ZUFzUGVyY2VudGFnZSgpIGNvbnN0OwotCi0gICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25z
dDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiwg
U1ZHTGVuZ3RoTW9kZSk7Ci0gICAgCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gbmV3VmFsdWVTcGVj
aWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsK
LSAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBz
aG9ydCwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpOwogCi0gICAgLy8gSGVscGVyIGZ1bmN0aW9u
cwotICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvIHR5cGUg
PSB1bml0VHlwZSgpOwotICAgICAgICByZXR1cm4gdHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFn
ZSB8fCB0eXBlID09IExlbmd0aFR5cGVFTVMgfHwgdHlwZSA9PSBMZW5ndGhUeXBlRVhTOwotICAg
IH0KLQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgCi0gICAgewotICAgICAgICByZXR1cm4gIW1f
dmFsdWVJblNwZWNpZmllZFVuaXRzOwotICAgIH0KLQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKLSAgICBz
dGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNW
R0xlbmd0aFZhbHVlJik7Ci0gICAgc3RhdGljIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZUZvckFu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIFNWR0xl
bmd0aFZhbHVlIGJsZW5kKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBmbG9hdCBwcm9ncmVz
cykgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gdG9UeXBlID0gdW5pdFR5cGUoKTsKLSAgICAg
ICAgYXV0byBmcm9tVHlwZSA9IGZyb20udW5pdFR5cGUoKTsKLSAgICAgICAgaWYgKChmcm9tLmlz
WmVybygpICYmIGlzWmVybygpKQotICAgICAgICAgICAgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlw
ZVVua25vd24KLSAgICAgICAgICAgIHx8IHRvVHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bgotICAg
ICAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmIGZyb21UeXBlICE9IExlbmd0aFR5cGVQZXJj
ZW50YWdlICYmIHRvVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKLSAgICAgICAgICAgIHx8
ICghaXNaZXJvKCkgJiYgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgJiYgdG9UeXBl
ICE9IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICAgICAgfHwgKCFmcm9tLmlzWmVybygp
ICYmICFpc1plcm8oKSAmJiAoZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCBmcm9tVHlwZSA9
PSBMZW5ndGhUeXBlRVhTKSAmJiBmcm9tVHlwZSAhPSB0b1R5cGUpKQotICAgICAgICAgICAgcmV0
dXJuICp0aGlzOwotCi0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLQotICAgICAgICBp
ZiAoZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgfHwgdG9UeXBlID09IExlbmd0aFR5
cGVQZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICBhdXRvIGZyb21QZXJjZW50ID0gZnJvbS52YWx1
ZUFzUGVyY2VudGFnZSgpICogMTAwOwotICAgICAgICAgICAgYXV0byB0b1BlcmNlbnQgPSB2YWx1
ZUFzUGVyY2VudGFnZSgpICogMTAwOwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBsZW5ndGgu
bmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlUGVyY2VudGFnZSwgV2ViQ29yZTo6Ymxl
bmQoZnJvbVBlcmNlbnQsIHRvUGVyY2VudCwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnJvbVR5cGUg
PT0gdG9UeXBlIHx8IGZyb20uaXNaZXJvKCkgfHwgaXNaZXJvKCkgfHwgZnJvbVR5cGUgPT0gTGVu
Z3RoVHlwZUVNUyB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRVhTKSB7Ci0gICAgICAgICAgICBh
dXRvIGZyb21WYWx1ZSA9IGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Ci0gICAgICAgICAg
ICBhdXRvIHRvVmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKLSAgICAgICAgICAgIGlm
IChpc1plcm8oKSkgewotICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbGVuZ3RoLm5ld1Zh
bHVlU3BlY2lmaWVkVW5pdHMoZnJvbVR5cGUsIFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9W
YWx1ZSwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKHRvVHlwZSwgV2ViQ29yZTo6YmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVz
cykpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm4gbGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUKCFpc1JlbGF0aXZlKCkpOwot
ICAgICAgICBBU1NFUlQoIWZyb20uaXNSZWxhdGl2ZSgpKTsKLQotICAgICAgICBTVkdMZW5ndGhD
b250ZXh0IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dChudWxscHRyKTsKLSAgICAgICAgYXV0byBm
cm9tVmFsdWVJblVzZXJVbml0cyA9IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFs
dWVUb1VzZXJVbml0cyhmcm9tLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpLCBmcm9tLnVuaXRNb2Rl
KCksIGZyb21UeXBlKTsKLSAgICAgICAgaWYgKGZyb21WYWx1ZUluVXNlclVuaXRzLmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBhdXRvIGZyb21WYWx1
ZSA9IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZy
b21WYWx1ZUluVXNlclVuaXRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB1bml0TW9kZSgpLCB0b1R5
cGUpOwotICAgICAgICBpZiAoZnJvbVZhbHVlLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLQotICAgICAgICBmbG9hdCB0b1ZhbHVlID0gdmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHModG9UeXBlLCBXZWJDb3JlOjpibGVuZChmcm9tVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCks
IHRvVmFsdWUsIHByb2dyZXNzKSk7Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0K
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhjb25zdCBTVkdM
ZW5ndGhDb250ZXh0JiwgU1ZHTGVuZ3RoVHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgeyAwIH07Ci0gICAgdW5zaWduZWQgbV91bml0OworICAgIFNW
R0xlbmd0aFR5cGUgbV9sZW5ndGhUeXBlIHsgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyIH07CisgICAg
U1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBTVkdMZW5ndGhNb2RlOjpPdGhlciB9OwogfTsK
IAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+IHsK
LSAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9
Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNWR0xlbmd0aFZhbHVlPiBwYXJzZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgewotICAgICAgICBT
VkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAgICAgIGxlbmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHN0
cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZShhdHRyTmFtZSkpLmhhc0V4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAg
IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBsZW5n
dGgpIHsgcmV0dXJuIGxlbmd0aC52YWx1ZUFzU3RyaW5nKCk7IH0KLX07CitpbmxpbmUgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBhLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
YikKK3sKKyAgICByZXR1cm4gYS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA9PSBiLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpICYmIGEubGVuZ3RoVHlwZSgpID09IGIubGVuZ3RoVHlwZSgpICYmIGEu
bGVuZ3RoTW9kZSgpID09IGIubGVuZ3RoTW9kZSgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBhLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgYikKK3sK
KyAgICByZXR1cm4gYS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSAhPSBiLnZhbHVlSW5TcGVjaWZp
ZWRVbml0cygpIHx8IGEubGVuZ3RoVHlwZSgpICE9IGIubGVuZ3RoVHlwZSgpIHx8IGEubGVuZ3Ro
TW9kZSgpICE9IGIubGVuZ3RoTW9kZSgpOworfQogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggNjVmZTU0ZmE4MDQ2MWE5NzlkZjY2MWRhZDFm
OTExZGE2MTE5ZTlmYS4uM2M0ZDM5ZTAyNTFmMzQ4ZTc3YWNjMTFlZGU4Y2YzZGJjOTdhNGM1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAg
dm9pZCBTVkdMaW5lRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9
IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICBt
X3gxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feDEtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0
cikKLSAgICAgICAgbV95MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95
MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OngyQXR0cikKLSAgICAgICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp5MkF0dHIpCi0gICAgICAgIG1feTItPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1l
LCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKaW5kZXggNTgyNzc3YTdh
ZGY3YzM5YjIxYjZiNzA4ZTBlZGVmYTRkOGJiYzAzOS4uMzZhMGJiNGMyOWI0MDcyODM5ZGI4YWVj
NmYyYTNjNzc3ZjdkZmM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKQEAgLTU2
LDEwICs1NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Rocygp
IGNvbnN0IGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV95MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MiB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcAppbmRleCA3ZDdkN2MyMzY0ZjJlNGNmNWU4MjRkYmYwMGRjOGQ0NGEy
ODM3NjEwLi45ZmE5NWNlM2VlYjgyMzA2ODc2YmY2ZDZiODIzMDcxYjQwYjliNzVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNjQs
MTMgKzY0LDEzIEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBCiAgICAgU1ZHUGFyc2luZ0Vycm9y
IHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0
cikKLSAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gx
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhN
b2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjp5MUF0dHIpCi0gICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp4MkF0dHIpCi0gICAgICAgIG1feDItPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBtX3ky
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3kyLT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFy
c2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50LmgKaW5kZXggYjBlNmViNTBkNGVhNjg4MGY2YzkxYjBhYmM1MWQzNjUx
YTQ5YjIyMi4uYWVmZTY0Y2UxNDY3Njc4NGMwZDFhOTI0Y2UzZGZlYWQ3YmFjYzM3MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaApAQCAtNTksMTAg
KzU5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94
MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpXaWR0aCwgIjEwMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95
MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCmluZGV4IGY1MzQ2MjQwZjAxNjE1NTdiMmI5ZTNmNjQ5NGFhNmYyZTE1
ZGNkODkuLjgzMDZmZDc2YmNhNzllODAxZTkzNjBmMjM5ZGE3YmU4YjlkNjdmZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTc5LDEzICs3OSwxMyBAQCB2b2lk
IFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5h
bWUsIGNvbnN0IEF0b21TdHJpbgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpyZWZYQXR0cikKLSAgICAgICAgbV9y
ZWZYLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fcmVmWC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVm
WUF0dHIpCi0gICAgICAgIG1fcmVmWS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV9yZWZZLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyKQotICAgICAgICBtX21hcmtlcldpZHRo
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fbWFya2VyV2lkdGgtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Oldp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Om1hcmtlckhlaWdodEF0dHIpCi0gICAgICAgIG1fbWFya2VySGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX21hcmtlckhlaWdodC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJy
b3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5k
ZXggMWM4NmU3NTk3OGVmZTYwMDBhMTc1YTA0YTE4OGYwYTEyYWZiZjYyNC4uZmY3NmIwNzJiM2Vi
NTIzM2Q5YWFhZTFlYzEzODYwNjU1YWYwNjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hcmtlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5oCkBAIC04OCwxMCArODgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE9yaWVu
dChTVkdNYXJrZXJPcmllbnRUeXBlLCBjb25zdCBTVkdBbmdsZVZhbHVlJik7CiAKICAgICBQcm9w
ZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3JlZlggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcmVmWSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VyV2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjMiKSB9OwotICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9tYXJrZXJIZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsICIzIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
cmVmWCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3JlZlkgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VyV2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMyIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX21hcmtlckhlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMyIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVy
YXRpb24+IG1fbWFya2VyVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhp
cywgU1ZHTWFya2VyVW5pdHNTdHJva2VXaWR0aCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRBbmds
ZT4gbV9vcmllbnRBbmdsZSB7IFNWR0FuaW1hdGVkQW5nbGU6OmNyZWF0ZSh0aGlzKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IG1fb3JpZW50VHlwZSB7IFNWR0FuaW1hdGVkT3Jp
ZW50VHlwZTo6Y3JlYXRlKHRoaXMsIFNWR01hcmtlck9yaWVudEFuZ2xlKSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKaW5kZXggOGYyYTgwMmFlZTBmYmY0ODc0ZTQ0Njg0ZTJh
ODQ2YWJmMGZjODY3Yy4uYjdhMGYxMWJhZmM0MDZhOGI2NmU5MWY5YzA4ZDhiY2FlMDJmMzRlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCkBAIC04MiwxMyArODIsMTMgQEAg
dm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9
IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1f
eC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQot
ICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihw
YXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXNrRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
aW5kZXggOTU2NDY0OWJjODNjMzQxMmM0MDY0ZDAzMDNkODJkNTg0YjIzNzk2Zi4uYzNlNDliYWFm
YTk4MWRkNTc5N2U1NTRmODk1NjRkMmQxNGM0NjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmgKQEAgLTY0LDEwICs2NCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1Jl
bGF0aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZVdpZHRoLCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikg
fTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSB9OwotICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lk
dGgsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiLTEwJSIpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEyMCUiKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEyMCUiKSB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBtX21hc2tVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0
ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFza0NvbnRlbnRVbml0cyB7IFNW
R0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJu
RWxlbWVudC5jcHAKaW5kZXggY2RkYzNhM2U4YjEzODNmMDYwZjQ5MWZkZTYzNmJjOTFlZjY0OWU4
Ny4uODM4OWE3MWYxMGMwMWZmZmY2NzBhZDFjM2I3OTM3NWJjOTRiMWVmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCkBAIC05MywxMyArOTMsMTMgQEAgdm9pZCBT
VkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbVN0cmkKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJy
b3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAg
ICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Ondp
ZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBt
X2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVW
YWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihw
YXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmgKaW5kZXggZDFhZDU5YzhkZTRiZWI5OGEwMDNlOWIxYWZkZjQ2MzFhOGExYWRmYy4uMWU2
NjFkN2ZkNDY1YWI5YmI3OGVhZTZjYTllYTYxZTZkNjA3ZDE3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmgKQEAgLTc1LDEwICs3NSwxMCBAQCBwcml2YXRlOgogICAgIGJv
b2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRo
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb24+IG1fcGF0dGVyblVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlv
bjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElO
R0JPWCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9wYXR0ZXJuQ29udGVu
dFVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBl
czo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRU
cmFuc2Zvcm1MaXN0PiBtX3BhdHRlcm5UcmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5zZm9ybUxp
c3Q6OmNyZWF0ZSh0aGlzKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LmNwcAppbmRleCBiMTFkODc1NDgyNjU0YWE3NTY4OTQ4OTQ5MzU2ZjE0OTZh
ZWMwNGM1Li5mZTFkNDk4ODA3Y2M5MGE2YTczMjEyOTA2MzhkZmM5YmY0OWUwYTcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNjYs
MTcgKzY2LDE3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBCiAgICAgU1ZHUGFyc2luZ0Vycm9y
IHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0
cikKLSAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhN
b2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpjeUF0dHIpCi0gICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjpyQXR0cikKLSAgICAgICAgbV9yLT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpPdGhl
ciwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBtX2Z4
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fZngtPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZ5QXR0cikK
LSAgICAgICAgbV9meS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9meS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OmZyQXR0cikKLSAgICAgICAgbV9mci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9y
YmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fZnItPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFy
c2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJl
cG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAppbmRleCBmMzE1
ZDk0ODA4YzVkZDhjYmY0MTkyYWJhMWZkMDc0ZTQ2NWZhMDM5Li44NGYxMTU4OGYzZTI4MWU2ZjZl
MDdhNjA5ZDA4OWE5Nzg3MDhhMzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlh
bEdyYWRpZW50RWxlbWVudC5oCkBAIC02MywxMiArNjMsMTIgQEAgcHJpdmF0ZToKICAgICBib29s
IHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5
UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIjUwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiNTAlIikgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fZnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnkgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX2ZyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlT3RoZXIsICIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N4IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICI1MCUiKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpPdGhlciwgIjUwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2Z4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpX
aWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnkgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fZnIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6Ok90aGVyLCAiMCUiKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5kZXggZWI1Mzk5ODBiNWU5MTE2
YjFmMjhiMjYwZjMwOGYwMTVlYTg5MDYxNy4uZWNhMTNmMDQ2NGU4ZDZmYTRmYWZlZjFlZWFiMTRl
YWJiNTdkMWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC01OCwx
NyArNTgsMTcgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcngtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAg
bV9yeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1
ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0
dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0
aXZlTGVuZ3RocykpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWln
aHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVz
TW9kZTo6Rm9yYmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VF
cnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCmluZGV4
IGZjMjQ3OTI4NmVlN2JhNDViYzc2NjhiZWRlODNiNzVmNDY3OWNhNGUuLmM1ZjVmMmMwZTRjMDU1
NWE0NmUwYjI1ZmE5MmU1M2Y2OTU4MjU4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5oCkBAIC02MSwxMiArNjEsMTIgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkg
fTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
aGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCBjNTdjZmZjNTkxYWE4N2QwNGE4NmQ1
OTBlM2U2NTcwNDIwZGViOTJjLi5kNzU3ZWFjNGU0NzI4NmQ2ZDQwMTBjOGNmOGQ1YzczOTYxMDky
NzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0yMzEsMjMgKzIzMSwy
MyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJy
b3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAg
ICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0
cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3kt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgYXV0byBsZW5ndGggPSBTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3Rocyk7CisgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0
aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKTsKICAgICAgICAgaWYgKHBhcnNlRXJyb3IgIT0g
Tm9FcnJvciB8fCB2YWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgYmVoYXZpb3IgZm9yIGEgbWlzc2luZy9yZW1vdmVk
IGF0dHJpYnV0ZS4KICAgICAgICAgICAgIC8vIE5vdCBzdXJlIGl0J3MgY29ycmVjdCBmb3IgdGhl
IGVtcHR5IHN0cmluZyBvciBmb3Igc29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgcGFyc2VkLgotICAg
ICAgICAgICAgbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWUoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSJf
cyk7CisgICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgIjEwMCUiX3MpOwogICAgICAgICB9CiAgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJ
bnRlcm5hbChsZW5ndGgpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0
QXR0cikgewotICAgICAgICBhdXRvIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Ro
cyk7CisgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZh
bHVlc01vZGU6OkZvcmJpZCk7CiAgICAgICAgIGlmIChwYXJzZUVycm9yICE9IE5vRXJyb3IgfHwg
dmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBkZWZpbml0
ZWx5IHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciBhIHJlbW92ZWQgYXR0cmlidXRlLgogICAgICAg
ICAgICAgLy8gTm90IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0aGUgZW1wdHkgc3RyaW5nIG9yIGZv
ciBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBwYXJzZWQuCi0gICAgICAgICAgICBsZW5ndGggPSBT
VkdMZW5ndGhWYWx1ZShMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJfcyk7CisgICAgICAgICAgICBs
ZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMDAlIl9zKTsK
ICAgICAgICAgfQogICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKGxlbmd0aCk7
CiAgICAgfQpAQCAtNTc2LDE3ICs1NzYsMTcgQEAgRmxvYXRTaXplIFNWR1NWR0VsZW1lbnQ6OmN1
cnJlbnRWaWV3cG9ydFNpemUoKSBjb25zdAogCiBib29sIFNWR1NWR0VsZW1lbnQ6Omhhc0ludHJp
bnNpY1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGgoKS51bml0VHlwZSgpICE9IExl
bmd0aFR5cGVQZXJjZW50YWdlOworICAgIHJldHVybiB3aWR0aCgpLmxlbmd0aFR5cGUoKSAhPSBT
VkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOwogfQogCiBib29sIFNWR1NWR0VsZW1lbnQ6Omhhc0lu
dHJpbnNpY0hlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhlaWdodCgpLnVuaXRUeXBlKCkg
IT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgcmV0dXJuIGhlaWdodCgpLmxlbmd0aFR5cGUo
KSAhPSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOwogfQogCiBMZW5ndGggU1ZHU1ZHRWxlbWVu
dDo6aW50cmluc2ljV2lkdGgoKSBjb25zdAogewotICAgIGlmICh3aWR0aCgpLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKHdpZHRoKCkubGVuZ3RoVHlwZSgpID09
IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiBMZW5ndGgoMCwgRml4
ZWQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOwpAQCAtNTk1
LDcgKzU5NSw3IEBAIExlbmd0aCBTVkdTVkdFbGVtZW50OjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0
CiAKIExlbmd0aCBTVkdTVkdFbGVtZW50OjppbnRyaW5zaWNIZWlnaHQoKSBjb25zdAogewotICAg
IGlmIChoZWlnaHQoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgIGlm
IChoZWlnaHQoKS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAg
ICAgICAgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxl
bmd0aENvbnRleHQodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCA5ZWFj
ZDgwOTFkYzExOTYxYTk2OTAxOTk3NjNmYzIwMjVkMjU3OGMwLi5kNDZiNDI4OGZkODJlNDZjNjVm
MjZiMWVlYTA3ZDJiZjEwNDA2ZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAg
LTE2NCwxMCArMTY0LDEwIEBAIHByaXZhdGU6CiAgICAgUmVmPFNWR1BvaW50PiBtX2N1cnJlbnRU
cmFuc2xhdGUgeyBTVkdQb2ludDo6Y3JlYXRlKCkgfTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkg
bV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoLCAiMTAwJSJfcykgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJf
cykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAw
JSJfcykgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMDAlIl9zKSB9
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCAxODIwYjNjY2QyZTUyNmM5MjE0MzFmNGU0N2Y2
MTFjNTkyM2ZmMmE0Li5kNTk4OTFlMzc4NzRkMzNhM2E5MGI1OGI5NGViYmM5N2ExMzQ0ZGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMTcw
LDcgKzE3MCw3IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tCiAgICAgICAgIGlmIChwcm9wZXJ0
eVZhbHVlID4gMCkKICAgICAgICAgICAgIG1fbGVuZ3RoQWRqdXN0LT5zZXRCYXNlVmFsSW50ZXJu
YWw8U1ZHTGVuZ3RoQWRqdXN0VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChu
YW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKLSAgICAgICAgbV90ZXh0TGVuZ3RoLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3Ro
ZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAg
bV90ZXh0TGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0
aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJy
b3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkBAIC0xOTcsOSArMTk3LDkgQEAgdm9pZCBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiAKIFNWR0FuaW1hdGVkTGVuZ3RoJiBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNW
R0xlbmd0aFZhbHVlPiBkZWZhdWx0VGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdMZW5ndGhWYWx1ZT4gZGVmYXVsdFRleHRMZW5ndGgoU1ZH
TGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgIGlmIChtX3RleHRMZW5ndGgtPmJhc2VWYWwoKS0+dmFs
dWUoKSA9PSBkZWZhdWx0VGV4dExlbmd0aCkKLSAgICAgICAgbV90ZXh0TGVuZ3RoLT5iYXNlVmFs
KCktPnZhbHVlKCkubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCBnZXRD
b21wdXRlZFRleHRMZW5ndGgoKSk7CisgICAgICAgIG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52
YWx1ZSgpID0geyBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVy
IH07CiAgICAgcmV0dXJuIG1fdGV4dExlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5oCmluZGV4IDU4YTdkMzc3MTQ4N2JlZDNlNjcwOTMwYjk1YzZm
ZmE4YjU2MWI1YzguLmRiMGZlZjIzZjE2NjAyZTRlM2Y3OWZiMmI4Y2NjNTJlNTJlOTI5ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKQEAgLTEwNyw5ICsx
MDcsOSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGJvb2wgaXNUZXh0Q29udGVudCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV90ZXh0TGVuZ3RoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
T3RoZXIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3RleHRMZW5ndGggeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2xlbmd0aEFkanVzdCB7IFNWR0FuaW1hdGVk
RW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhBZGp1c3RTcGFjaW5nKSB9OwotICAg
IFNWR0xlbmd0aFZhbHVlIG1fc3BlY2lmaWVkVGV4dExlbmd0aCB7IExlbmd0aE1vZGVPdGhlciB9
OworICAgIFNWR0xlbmd0aFZhbHVlIG1fc3BlY2lmaWVkVGV4dExlbmd0aCB7IFNWR0xlbmd0aE1v
ZGU6Ok90aGVyIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IDc2ZmJiYTc5MjZmY2QyMDE5MGVmZTJm
N2MxNWViZjdiZDE3OGYyODcuLmQ5ZmUxZjQ3NGRkNmMwZjdjNmYzNjQ0ZWM1YmViNWU4NzBhZjRj
MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC02Nyw3
ICs2Nyw3IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBh
cnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0T2Zm
c2V0QXR0cikKLSAgICAgICAgbV9zdGFydE9mZnNldC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgICAgICBtX3N0YXJ0T2Zmc2V0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptZXRob2RBdHRyKSB7CiAgICAgICAgIFNW
R1RleHRQYXRoTWV0aG9kVHlwZSBwcm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZH
VGV4dFBhdGhNZXRob2RUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9w
ZXJ0eVZhbHVlID4gMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0
aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRl
eCA1Njc3ZjViZWIyMzdmYzM4MmI0YzBkMmViYmE4ZGJhMmU0YTlkMjg1Li43OGYwN2YwYTBhZGI0
NDNiYzQxZGJjMTQ1YmY0MDRmNDQxN2JiMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fc3RhcnRPZmZzZXQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fc3RhcnRPZmZzZXQg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKSB9
OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21ldGhvZCB7IFNWR0FuaW1hdGVk
RW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0aE1ldGhvZEFsaWduKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3NwYWNpbmcgeyBTVkdBbmltYXRlZEVudW1l
cmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QpIH07CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKaW5kZXggMGU3
MTM0YzEzODM1N2M2Y2RiM2RiNTdjMWQ2MjQyZjMxMzE3Zjk3Ny4uMzc5YzVhNjY5OTM3MGVkZTU2
NGZmM2JmMTc2YTRiODI4NDM5YjZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudC5oCkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToKICAgICBj
b25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5
IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feSB7IFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0PiBtX2R5IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3ggeyBTVkdBbmlt
YXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdD4gbV9keCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMs
IFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+
IG1fZHkgeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV9yb3RhdGUgeyBT
VkdBbmltYXRlZE51bWJlckxpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDlhNzI5ODQyZWQyZDliNjY2OTkxMDBlYjc1ZGQzMThi
NTgyYWQ5ZTcuLmFkOTIzODQxMzVmYTI4ZGQ1Mzg5ZTg3ODk2NDRlZjk1YjdlN2Y4N2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTgwLDEzICs4MCwxMyBAQCB2b2lkIFNW
R1VzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAg
bV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0
aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNl
RXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9o
ZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xl
bmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFs
dWVzTW9kZTo6Rm9yYmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFy
c2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRl
eCAxZjUyYmMxZGNmMGQyMTkyMzA1YTY1YWY4MDViZTZkMzFkMDcwY2ZiLi5hYjU5Y2QzYzkxNjMy
ZTY0YWI2ODM4ZTc0YTg3NTk1YzM3MGZiODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVXNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmgKQEAgLTk2LDEwICs5NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZURlcGVu
ZGVudFNoYWRvd1RyZWVzKCk7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdp
c3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0
aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdo
dCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
KSB9OwogCiAgICAgYm9vbCBtX2hhdmVGaXJlZExvYWRFdmVudCB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX3NoYWRvd1RyZWVOZWVkc1VwZGF0ZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3Nv
ckltcGwuaAppbmRleCBkMzI2NzhjMWNkMGUzZTBkMjMyMzgwZGZiMDI0ZTMzMjlhNzY0YjkzLi45
OWIyYWE5MTMxNjNkOWUwZGQ4YzM3M2Y0NjdmZGQ5NjQ0ZmJhOGIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eUFjY2Vzc29ySW1wbC5oCkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBl
JiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9k
ZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBi
b29sIGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICBTVkdMZW5ndGhNb2Rl
IGxlbmd0aE1vZGUgPSBwcm9wZXJ0eShvd25lciktPmJhc2VWYWwoKS0+dmFsdWUoKS51bml0TW9k
ZSgpOworICAgICAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBwcm9wZXJ0eShvd25lcikt
PmJhc2VWYWwoKS0+dmFsdWUoKS5sZW5ndGhNb2RlKCk7CiAgICAgICAgIHJldHVybiBTVkdBbmlt
YXRlZExlbmd0aEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIp
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVu
Z3RoTW9kZSk7CiAgICAgfQogCkBAIC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9y
KE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFu
aW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1
bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0
dXJuIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwg
cHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZVdpZHRoKTsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIp
LCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0
YW5jZShPd25lclR5cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNv
bnN0IGZpbmFsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdB
bmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZmE4MmM2MThkNmJiZTQ1NzY3NDBjYTY4NTAzZTE4NDJlYjljZmNlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oCisrKyAvZGV2
L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0g
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIFNWR0VsZW1lbnQ7Ci0KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24g
eyAgICAgICAgICAgIAotICAgIC8vIEVtcHR5IHZhbHVlCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0
eURlc2NyaXB0aW9uKCkKLSAgICAgICAgOiBtX2VsZW1lbnQobnVsbHB0cikKLSAgICAgICAgLCBt
X2F0dHJpYnV0ZU5hbWUobnVsbHB0cikKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gRGVsZXRlZCB2
YWx1ZQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbihXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpCi0gICAgICAgIDogbV9lbGVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8U1ZH
RWxlbWVudCo+KC0xKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0
ZWRWYWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lbGVtZW50ID09IHJlaW50
ZXJwcmV0X2Nhc3Q8U1ZHRWxlbWVudCo+KC0xKTsKLSAgICB9Ci0KLSAgICBTVkdBbmltYXRlZFBy
b3BlcnR5RGVzY3JpcHRpb24oU1ZHRWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYg
YXR0cmlidXRlTmFtZSkKLSAgICAgICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAgICAgLCBt
X2F0dHJpYnV0ZU5hbWUoYXR0cmlidXRlTmFtZS5pbXBsKCkpCi0gICAgewotICAgICAgICBBU1NF
UlQobV9lbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKG1fYXR0cmlidXRlTmFtZSk7Ci0gICAgfQot
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlv
biYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9lbGVtZW50ID09IG90aGVy
Lm1fZWxlbWVudCAmJiBtX2F0dHJpYnV0ZU5hbWUgPT0gb3RoZXIubV9hdHRyaWJ1dGVOYW1lOwot
ICAgIH0KLQotICAgIFNWR0VsZW1lbnQqIG1fZWxlbWVudDsKLSAgICBBdG9tU3RyaW5nSW1wbCog
bV9hdHRyaWJ1dGVOYW1lOwotfTsKLQotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbkhhc2ggewotICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNWR0FuaW1hdGVkUHJv
cGVydHlEZXNjcmlwdGlvbiYga2V5KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hl
cjo6aGFzaE1lbW9yeTxzaXplb2YoU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uKT4oJmtl
eSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eURlc2NyaXB0aW9uJiBhLCBjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24m
IGIpCi0gICAgewotICAgICAgICByZXR1cm4gYSA9PSBiOwotICAgIH0KLQotICAgIHN0YXRpYyBj
b25zdCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXN0
cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb25IYXNoVHJhaXRzIDogV1RGOjpTaW1w
bGVDbGFzc0hhc2hUcmFpdHM8U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uPiB7IH07Ci0g
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9u
SW1wbC5oCmluZGV4IDkyMzNhZTkyZjk1MjIyMWRiZTkwMzkwZDVmOGE0NWQwYjUzNjQzYWIuLjYx
YTFkMDM2Y2ZkYTUyYmE0ZWE4YjcxZTUxYmIyYzdiMTdhZGJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9u
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFk
ZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAg
ICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b0l0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAg
ICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gKGkgPCBmcm9tSXRlbXMuc2l6ZSgpICYm
IHByb2dyZXNzIDwgMC41ID8gZnJvbUl0ZW1zIDogdG9JdGVtcylbaV0tPnZhbHVlKCkudW5pdFR5
cGUoKTsKKyAgICAgICAgICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSA9IChpIDwgZnJvbUl0
ZW1zLnNpemUoKSAmJiBwcm9ncmVzcyA8IDAuNSA/IGZyb21JdGVtcyA6IHRvSXRlbXMpW2ldLT52
YWx1ZSgpLmxlbmd0aFR5cGUoKTsKIAogICAgICAgICAgICAgZmxvYXQgZnJvbSA9IGkgPCBmcm9t
SXRlbXMuc2l6ZSgpID8gZnJvbUl0ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQp
IDogMDsKICAgICAgICAgICAgIGZsb2F0IHRvID0gdG9JdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKQEAgLTc3LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZmxv
YXQgdmFsdWUgPSBhbmltYXRlZEl0ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQp
OwogCiAgICAgICAgICAgICB2YWx1ZSA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENv
dW50LCBmcm9tLCB0bywgdG9BdEVuZE9mRHVyYXRpb24sIHZhbHVlKTsKLSAgICAgICAgICAgIGFu
aW1hdGVkSXRlbXNbaV0tPnZhbHVlKCkuc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgdmFsdWUsIGxl
bmd0aE1vZGUsIHVuaXRUeXBlKTsKKyAgICAgICAgICAgIGFuaW1hdGVkSXRlbXNbaV0tPnZhbHVl
KCkuc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgdmFsdWUsIGxlbmd0aFR5cGUsIGxlbmd0aE1vZGUp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tSXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tVmFsdWUgPSBmcm9tSXRlbXNbaV0tPnZh
bHVlKCk7CiAgICAgICAgICAgICBTVkdMZW5ndGhWYWx1ZSYgdG9WYWx1ZSA9IHRvSXRlbXNbaV0t
PnZhbHVlKCk7Ci0gICAgICAgICAgICB0b1ZhbHVlLnNldFZhbHVlKHRvVmFsdWUudmFsdWUobGVu
Z3RoQ29udGV4dCkgKyBmcm9tVmFsdWUudmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRl
eHQpOworICAgICAgICAgICAgdG9WYWx1ZS5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCB0b1ZhbHVl
LnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbVZhbHVlLnZhbHVlKGxlbmd0aENvbnRleHQpKTsK
ICAgICAgICAgfQogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25J
bXBsLmgKaW5kZXggMjhjNTEyYTA5YTc0OWRiMjViZDczZGFjYmJhZDZkNDg5ZGI3YTM1Mi4uY2Vl
MTVlNGM2YTEzNjRhYjE2NTA5NjdkNzhkZGZiNTZmNzNkODE5ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9u
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFk
ZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3Ms
IHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdMZW5ndGhWYWx1ZSYgYW5pbWF0ZWQpCiAgICAgewog
ICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7Ci0g
ICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSBwcm9ncmVzcyA8IDAuNSA/IG1fZnJvbS51
bml0VHlwZSgpIDogbV90by51bml0VHlwZSgpOworICAgICAgICBTVkdMZW5ndGhUeXBlIGxlbmd0
aFR5cGUgPSBwcm9ncmVzcyA8IDAuNSA/IG1fZnJvbS5sZW5ndGhUeXBlKCkgOiBtX3RvLmxlbmd0
aFR5cGUoKTsKIAogICAgICAgICBmbG9hdCBmcm9tID0gKG1fYW5pbWF0aW9uTW9kZSA9PSBBbmlt
YXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogbV9mcm9tKS52YWx1ZShsZW5ndGhDb250ZXh0KTsK
ICAgICAgICAgZmxvYXQgdG8gPSBtX3RvLnZhbHVlKGxlbmd0aENvbnRleHQpOwpAQCAtMTg1LDcg
KzE4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQgdmFsdWUgPSBhbmltYXRlZC52YWx1ZShs
ZW5ndGhDb250ZXh0KTsKIAogICAgICAgICB2YWx1ZSA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3Ms
IHJlcGVhdENvdW50LCBmcm9tLCB0bywgdG9BdEVuZE9mRHVyYXRpb24sIHZhbHVlKTsKLSAgICAg
ICAgYW5pbWF0ZWQgPSB7IGxlbmd0aENvbnRleHQsIHZhbHVlLCBtX2xlbmd0aE1vZGUsIHVuaXRU
eXBlIH07CisgICAgICAgIGFuaW1hdGVkID0geyBsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3Ro
VHlwZSwgbV9sZW5ndGhNb2RlIH07CiAgICAgfQogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1
bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJv
bSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJpZGUKQEAgLTIwMCw3ICsyMDAsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQodGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIG1fdG8uc2V0VmFsdWUobV90by52YWx1ZShs
ZW5ndGhDb250ZXh0KSArIG1fZnJvbS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4
dCk7CisgICAgICAgIG1fdG8uc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgbV90by52YWx1ZShsZW5n
dGhDb250ZXh0KSArIG1fZnJvbS52YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfQogCiAgICAg
U1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKaW5kZXgg
ZmQzZGM5NjBmZmE3ZDMxMjkwMTM3ZDQ1MmNkZTFhMjg3OWE3ZWRiZC4uNjI3Njc4NDk5NDgxNTY5
NWUxN2NkYjMwOWU1ODQ1OWY2YmU4OGJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAt
MzksMTMgKzM5LDEzIEBAIGNsYXNzIFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNW
R1ZhbHVlUHJvcGVydHlBbmltYXRvcjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3Rh
dGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxT
VkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRl
TmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3Vt
dWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0
eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBT
VkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgU3RyaW5nIGJhc2VWYWx1
ZSA9IGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVlKHRhcmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQo
bV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpKSk7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIHZh
bHVlKExlbmd0aE1vZGVPdGhlcik7CisgICAgICAgIFNWR0xlbmd0aFZhbHVlIHZhbHVlKFNWR0xl
bmd0aE1vZGU6Ok90aGVyKTsKICAgICAgICAgaWYgKCF2YWx1ZS5zZXRWYWx1ZUFzU3RyaW5nKGJh
c2VWYWx1ZSkuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICBtX3Byb3BlcnR5LT5zZXRWYWx1
ZSh2YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggYWU5
NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4NmVkMGIwNjI4MjZjMDJkOC4uMTU5OGY1NjZiMjljNDEzOGRj
MjRkOWJmODM4MDlmZjU5NGFjNmQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3By
b3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5o
CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1
YmxpYyBTVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAg
c3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJl
ZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBD
YWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAg
ICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0
dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwg
aXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZN
b3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlz
QWRkaXRpdmUsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICB9CiAKICAgICB2b2lkIHN0YXJ0
KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378635</attachid>
            <date>2019-09-12 01:47:20 -0700</date>
            <delta_ts>2019-09-12 15:28:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190912014719.patch</filename>
            <type>text/plain</type>
            <size>135049</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJiMzk5MDA3ZmJiOWIy
N2Y4ZDAzZWU1YjNhNTZkMjA0YWNiN2QxYy4uMjllZjMzMmFkYTc0OWFlNjVkMDYyMTVmNWJhNDA2
ODhmOTM0ZmZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOS0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xl
bmd0aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0
ZWFkIG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLCBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUg
aGFkIG9uZSB1bnNpZ25lZCB0byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhUeXBl
LgorICAgICAgICBJdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCA0IGJp
dHMgb2YgdGhpcyB1bnNpZ25lZCB0byB0aGUKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSB3aGlsZSBp
dCBsZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0aFR5cGUuCisKKyAgICAgICAgVGhpcyB3aWxs
IG5vdCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9kZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUgbWFk
ZSBvZgorICAgICAgICBzaXplIHVpbnRfOC4KKworICAgICAgICBBbHNvIGluIHRoaXMgcGF0Y2g6
CisKKyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIGlzIG1hZGUgZW51bSBj
bGFzcy4KKworICAgICAgICAtLSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoKSBpcyBtb3ZlZCB0byBT
VkdMZW5ndGhWYWx1ZS5jcHAgc28gd2UgZG8gbm90CisgICAgICAgICAgIG5lZWQgdG8gaW5jbHVk
ZSBTVkdMZW5ndGhDb250ZXh0LmggaW4gU1ZHTGVuZ3RoVmFsdWUuaC4KKworICAgICAgICAtLSBT
VkdMZW5ndGhUeXBlIGFuZCBTVkdMZW5ndGhNb2RlIGFyZSBtb3ZlZCB0byBTVkdMZW5ndGhWYWx1
ZS5oLiBJbnN0ZWFkCisgICAgICAgICAgIG9mIGhhdmluZyBTVkdMZW5ndGhWYWx1ZS5oIGluY2x1
ZGVzIFNWR0xlbmd0aENvbnR0ZXh0LmgsIHRoZSBvcHBvc2l0ZQorICAgICAgICAgICB3aWxsIGhh
cHBlbi4KKworICAgICAgICAtLSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpcyBk
ZWxldGVkLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgICAgd2l0aCB0aGUg
U1ZHIHRlYXIgb2ZmIG9iamVjdHMgcmVtb3ZhbC4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdBbmdsZVZhbHVlPiBhbmQgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+
CisgICAgICAgICAgIGFyZSBkZWxldGVkLiBUaGV5IHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCB3
aXRoIFNWR0FuaW1hdGVkVHlwZSByZW1vdmFsLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFZhbHVl
OjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBpcyBkZWxldGVkLiBJdAor
ICAgICAgICAgICB3YXMgb25seSBjYWxsZWQgZnJvbSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5n
dGhWYWx1ZT4uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
U1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRMYXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NT
S2VybmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJhZGlh
bEdyYWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojppbml0aWFs
VmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZH
QW5nbGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
ICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6OnVuaXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVU
b1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBl
cmNlbnRhZ2VUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRl
eHQuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICog
c3ZnL1NWR0xlbmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1N0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlbmd0aFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpsZW5n
dGhUeXBlVG9QcmltaXRpdmVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVl
OjpTVkdMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpibGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAo
V2ViQ29yZTo6c3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RN
b2RlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9IGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0VHlwZSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dW5pdE1v
ZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OnZh
bHVlQXNQZXJjZW50YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xl
bmd0aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aFR5cGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoVmFsdWU6OmlzWmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGhWYWx1ZTo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5n
dGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoVmFsdWU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6aW5pdGlhbFZh
bHVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xl
bmd0aFZhbHVlPjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVy
dHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBz
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRl
cm5FbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToK
KyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFz
SW50cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
aGFzSW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmludHJpbnNpY0hlaWdodCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAg
KiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5j
dGlvbkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5j
dGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRk
aXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9u
TGVuZ3RoRnVuY3Rpb246OmFuaW1hdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1Zh
bHVlUHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdW
YWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorCiAyMDE5LTA5LTExICBBbnR0aSBLb2l2
aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OICgyNDUwMDYpOiBj
YW4ndCBzY3JvbGwgaW4gInJlYWQgbW9yZSIgdmlldyBpbiBFdmVudGJyaXRlIGFwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI4
ZDI3ZmM0MWY0NzhmYjQzNjUzNWYwN2M2M2FhZTliNmRiOTNlNWEuLmM2MzEwM2IyZjI1ODRlNGYx
YmI4NmRkZmM0ZTJkNzg2M2M2MmMzOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1MSw3ICsyNTEsNiBAQAogCQkwODc1NThD
NjEzQjRBNTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODc1NThDNDEzQjRB
NTdEMDBGNDkzMDcgLyogU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4NTA2N0YxMURBMDQ1
QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUwNjgw
MTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQ
aGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0J
CTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEw
REZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODhBMEUw
QzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlUcmFpdHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAv
KiBTVkdQcm9wZXJ0eVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTA4OEMyRjdBMTIzOTAwODEwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0
QXR0cmlidXRlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDg4QzJGNzYxMjM5MDA4MDAwM0Q2NUNFIC8qIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzLmgg
Ki87IH07CiAJCTA4OTU4MjU2MEU4NTdBN0UwMEY4MkM4MyAvKiBJbWFnZUxvYWRlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5NTgyNTQwRTg1N0E3
RTAwRjgyQzgzIC8qIEltYWdlTG9hZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU1MzYsNyArNTUzNSw2IEBACiAJCTA4NzU1OEM0MTNCNEE1
N0QwMEY0OTMwNyAvKiBTdXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAv
KiBQYWludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFpbnRJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5
OCAvKiBQYWludFBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50
UGhhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDg4QTBERkQxMjZFRjFEQjAw
OTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDg4QTBFMDMxMjZFRjFEQjAwOTc4RjdBIC8qIFNW
R1Byb3BlcnR5VHJhaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1By
b3BlcnR5VHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc1MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4OEMyRjc2MTIzOTAwODAwMDNENjVDRSAvKiBT
VkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTYwOTQsNyArMTYwOTIsNiBAQAogCQkJCTU1RUU1MzU4MjIzQjI5RjkwMEZCQTk0NCAvKiBT
VkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmggKi8sCiAJCQkJNTVFRTUzNUEyMjNCMjlG
QjAwRkJBOTQ0IC8qIFNWR0FuaW1hdGVkUHJvcGVydHlBbmltYXRvci5oICovLAogCQkJCTU1RUU1
MzU2MjIzQjI5RjcwMEZCQTk0NCAvKiBTVkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3JJbXBsLmgg
Ki8sCi0JCQkJMDg4QTBERkQxMjZFRjFEQjAwOTc4RjdBIC8qIFNWR0FuaW1hdGVkUHJvcGVydHlE
ZXNjcmlwdGlvbi5oICovLAogCQkJCTU1RUU1MzVDMjIzQjJBMEQwMEZCQTk0NCAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5SW1wbC5oICovLAogCQkJCTcyNjZGMDJBMjI0MzE0OUIwMDgzMzk3NSAvKiBT
VkdBbmltYXRlZFByb3BlcnR5TGlzdC5oICovLAogCQkJCTU1QkUwMjVFMjIzQjI5QzQwMDMyRjA4
QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5UGFpckFjY2Vzc29yLmggKi8sCkBAIC0zMTc3OSw3ICsz
MTc3Niw2IEBACiAJCQkJMjREOTEyQjgxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRl
bUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAv
KiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTA4OEEwRTA2
MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNW
R0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IGQ4YWMzMjg5MmRjZDEzNTUyNjI5OGFlMTI1
YmZiMTdjOGMxNzUwYTkuLmUwYzMxOGVlNzdjYjEzYjk4NmYwNTcxNjZlOWQ4OWM0NmQ2MDlhMjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBT
dHlsZVJ1bGVQYWdlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0Owog
Y2xhc3MgU3R5bGVkRWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdTVkdFbGVt
ZW50OwogY2xhc3MgVmlld3BvcnRTdHlsZVJlc29sdmVyOwogc3RydWN0IFJlc291cmNlTG9hZGVy
T3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBiYWViMjQ3NjU3MTY3MzdiODRhMWNjOGYxOWRlMDE3
M2YzNjdlOTk3Li42ZjY0Y2M2ZWE4ZDZhMjM4MDY0YzNjMzFmM2JlNzllNzQ3ZDExYjFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0yODUsNyArMjg1LDcgQEAgc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxl
bmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IEwKIAog
c3RhdGljIGlubGluZSBTVkdMZW5ndGhWYWx1ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gdG8uYmxlbmQoZnJv
bSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgIHJldHVybiBTVkdMZW5n
dGhWYWx1ZTo6YmxlbmQoZnJvbSwgdG8sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3Mp
KTsKIH0KIAogc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGJsZW5kRnVuYyhj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZh
bHVlPiYgZnJvbSwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgdG8sIGRvdWJsZSBwcm9n
cmVzcykKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhW
YWx1ZT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLAogICAgIH0K
ICAgICBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IHJlc3VsdChyZXN1bHRMZW5ndGgpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0TGVuZ3RoOyArK2kpCi0gICAgICAgIHJlc3VsdFtp
XSA9IHRvW2kgJSB0b0xlbmd0aF0uYmxlbmQoZnJvbVtpICUgZnJvbUxlbmd0aF0sIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKKyAgICAgICAgcmVzdWx0W2ldID0gU1ZHTGVuZ3Ro
VmFsdWU6OmJsZW5kKGZyb21baSAlIGZyb21MZW5ndGhdLCB0b1tpICUgdG9MZW5ndGhdLCBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHByb2dyZXNzKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAppbmRl
eCA0MjQ0Y2E2MDE0NDhmMWIxMGE4ZjFmY2JmOTE3MDIzNGQzYTAxNzliLi45NTMyMTI5YWYyZDA3
OTY2YmU5ODM5MjE4ZDU0Mzk5MTg0YzIwZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaApAQCAtODIsOCArODIsOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFN0cmluZyBpbml0aWFsTWFya2VyTWlkUmVzb3VyY2UoKSB7IHJldHVybiBTdHJp
bmcoKTsgfQogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlckVuZFJlc291cmNlKCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgTWFza1R5cGUgaW5pdGlhbE1hc2tUeXBlKCkg
eyByZXR1cm4gTWFza1R5cGU6Okx1bWluYW5jZTsgfQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCk7Ci0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVl
IGluaXRpYWxLZXJuaW5nKCk7CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxCYXNl
bGluZVNoaWZ0VmFsdWUoKSB7IHJldHVybiBTVkdMZW5ndGhWYWx1ZSgwLCBTVkdMZW5ndGhUeXBl
OjpOdW1iZXIpOyB9CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGluaXRpYWxLZXJuaW5nKCkg
eyByZXR1cm4gU1ZHTGVuZ3RoVmFsdWUoMCwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKTsgfQogCiAg
ICAgLy8gU1ZHIENTUyBQcm9wZXJ0eSBzZXR0ZXJzCiAgICAgdm9pZCBzZXRBbGlnbm1lbnRCYXNl
bGluZShBbGlnbm1lbnRCYXNlbGluZSB2YWwpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5mbGFnQml0
cy5hbGlnbm1lbnRCYXNlbGluZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2YWwpOyB9CkBAIC0y
NTYsMjAgKzI1Niw2IEBAIHByaXZhdGU6CiAgICAgRGF0YVJlZjxTdHlsZVJlc291cmNlRGF0YT4g
bV9ub25Jbmhlcml0ZWRSZXNvdXJjZURhdGE7CiB9OwogCi1pbmxpbmUgU1ZHTGVuZ3RoVmFsdWUg
U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUoKQotewotICAgIFNWR0xl
bmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5n
dGhUeXBlTnVtYmVyLCAwKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1pbmxpbmUgU1ZHTGVu
Z3RoVmFsdWUgU1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKCkKLXsKLSAgICBTVkdMZW5n
dGhWYWx1ZSBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsKLX0KLQogaW5saW5lIHZvaWQgU1ZH
UmVuZGVyU3R5bGU6OnNldEN4KGNvbnN0IExlbmd0aCYgbGVuZ3RoKQogewogICAgIGlmICghKG1f
bGF5b3V0RGF0YS0+Y3ggPT0gbGVuZ3RoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCmluZGV4IDdkYTkxOTkzZTNmY2U4YjgwYWY4NTZk
Y2NlZTVkOGFhYTYwMWJiOWEuLjE3N2MzOTU2YWZjZWU2MjNhODJmNzEzM2IyMjdjOWJkYjEwMzkx
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxs
aXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdFbGxp
cHNlLmNwcApAQCAtNzksOCArNzksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0
ZVJhZGlpQW5kQ2VudGVyKCkKIHsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQo
JmdyYXBoaWNzRWxlbWVudCgpKTsKICAgICBtX2NlbnRlciA9IEZsb2F0UG9pbnQoCi0gICAgICAg
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN4KCksIExl
bmd0aE1vZGVXaWR0aCksCi0gICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpKTsKKyAgICAgICAgbGVuZ3Ro
Q29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgpLAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKICAgICBpZiAoaXM8
U1ZHQ2lyY2xlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkpKSB7CiAgICAgICAgIGZsb2F0IHJh
ZGl1cyA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnIo
KSk7CiAgICAgICAgIG1fcmFkaWkgPSBGbG9hdFNpemUocmFkaXVzLCByYWRpdXMpOwpAQCAtODks
OCArODksOCBAQCB2b2lkIFJlbmRlclNWR0VsbGlwc2U6OmNhbGN1bGF0ZVJhZGlpQW5kQ2VudGVy
KCkKIAogICAgIEFTU0VSVChpczxTVkdFbGxpcHNlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50KCkp
KTsKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAg
ICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeSgp
LCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwKKyAgICAg
ICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnkoKSwg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Zmls
bFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1JlY3QuY3BwCmluZGV4IDRiMjRkZmQzZDFkYWEzNjdl
MjM2NzExYjJhYTlkNjQ3ZGFjMWJiNjkuLjY2MWQyMTk0MmM2ZDJmNDYyZmM4NWEwNTc3ZGFlYzI4
ZWI2ZmVjZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZWN0LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0ZVNoYXBl
RnJvbUVsZW1lbnQoKQogICAgIG1fdXNlUGF0aEZhbGxiYWNrID0gZmFsc2U7CiAKICAgICBTVkdM
ZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJnJlY3RFbGVtZW50KCkpOwotICAgIEZsb2F0U2l6
ZSBib3VuZGluZ0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndp
ZHRoKCksIExlbmd0aE1vZGVXaWR0aCksIGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCkpOworICAgIEZsb2F0U2l6ZSBib3VuZGlu
Z0JveFNpemUobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLndpZHRoKCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSwgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgp
LmhlaWdodCgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKTsKIAogICAgIC8vIEVsZW1lbnQgaXMg
aW52YWxpZCBpZiBlaXRoZXIgZGltZW5zaW9uIGlzIG5lZ2F0aXZlLgogICAgIGlmIChib3VuZGlu
Z0JveFNpemUud2lkdGgoKSA8IDAgfHwgYm91bmRpbmdCb3hTaXplLmhlaWdodCgpIDwgMCkKQEAg
LTc0LDggKzc0LDggQEAgdm9pZCBSZW5kZXJTVkdSZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50
KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fZmlsbEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0
KEZsb2F0UG9pbnQobGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxl
KCkueCgpLCBMZW5ndGhNb2RlV2lkdGgpLAotICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9y
TGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS55KCksIExlbmd0aE1vZGVIZWlnaHQpKSwKKyAgICBt
X2ZpbGxCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
LAorICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUo
KS55KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpLAogICAgICAgICBib3VuZGluZ0JveFNpemUp
OwogCiAgICAgLy8gVG8gZGVjaWRlIGlmIHRoZSBzdHJva2UgY29udGFpbnMgYSBwb2ludCB3ZSBj
cmVhdGUgdHdvIHJlY3RzIHdoaWNoIHJlcHJlc2VudCB0aGUgaW5uZXIgYW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1BhdGhEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCmluZGV4IDBmODQ5OWU1M2IwMzA1
YWQwMDhjZWE0MzgxOGYzZDcxZGVmZWNlNTYuLjJiYWIxODAyYTY1NTRkOTFiNTVhMDk3ODY1ODgx
NmUwMjE3MWMxM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UGF0aERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERh
dGEuY3BwCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxlbWVu
dChjb25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dCgmZWxlbWVudCk7CiAgICAgZmxvYXQgciA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yKCkpOwogICAgIGlmIChyID4gMCkgewotICAgICAgICBm
bG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5j
eCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgICAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRleHQu
dmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsK
KyAgICAgICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2
Z1N0eWxlKCkuY3goKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOworICAgICAgICBmbG9hdCBjeSA9
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQpOwogICAgICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0KGN4
IC0gciwgY3kgLSByLCByICogMiwgciAqIDIpKTsKICAgICB9CiAgICAgcmV0dXJuIHBhdGg7CkBA
IC02NywxNyArNjcsMTcgQEAgc3RhdGljIFBhdGggcGF0aEZyb21FbGxpcHNlRWxlbWVudChjb25z
dCBTVkdFbGVtZW50JiBlbGVtZW50KQogCiAgICAgYXV0byYgc3R5bGUgPSByZW5kZXJlci0+c3R5
bGUoKTsKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVsZW1lbnQpOwotICAg
IGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7CisgICAgZmxvYXQgcnggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
OwogICAgIGlmIChyeCA8PSAwKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgcnkg
PSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgTGVu
Z3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVu
Z3RoKHN0eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBp
ZiAocnkgPD0gMCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIFBhdGggcGF0aDsKLSAgICBm
bG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5j
eCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAgIGZsb2F0IGN5ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAg
IGZsb2F0IGN4ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LmN4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICBmbG9hdCBjeSA9IGxlbmd0aENvbnRl
eHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQpOwogICAgIHBhdGguYWRkRWxsaXBzZShGbG9hdFJlY3QoY3ggLSByeCwgY3kgLSByeSwg
cnggKiAyLCByeSAqIDIpKTsKICAgICByZXR1cm4gcGF0aDsKIH0KQEAgLTEzOCwxOSArMTM4LDE5
IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tUmVjdEVsZW1lbnQoY29uc3QgU1ZHRWxlbWVudCYgZWxl
bWVudCkKIAogICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgU1ZHTGVu
Z3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KCZlbGVtZW50KTsKLSAgICBmbG9hdCB3aWR0aCA9IGxl
bmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUud2lkdGgoKSwgTGVuZ3RoTW9kZVdpZHRo
KTsKKyAgICBmbG9hdCB3aWR0aCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUu
d2lkdGgoKSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOwogICAgIGlmICh3aWR0aCA8PSAwKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgZmxvYXQgaGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQg
aGVpZ2h0ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5oZWlnaHQoKSwgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBpZiAoaGVpZ2h0IDw9IDApCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBQYXRoIHBhdGg7Ci0gICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS55
KCksIExlbmd0aE1vZGVIZWlnaHQpOwotICAgIGZsb2F0IHJ4ID0gbGVuZ3RoQ29udGV4dC52YWx1
ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ4KCksIExlbmd0aE1vZGVXaWR0aCk7Ci0gICAg
ZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
cnkoKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgZmxvYXQgeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS54KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsK
KyAgICBmbG9hdCB5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHls
ZSgpLnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKKyAgICBmbG9hdCByeCA9IGxlbmd0aENv
bnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBTVkdMZW5ndGhNb2Rl
OjpXaWR0aCk7CisgICAgZmxvYXQgcnkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnN2Z1N0eWxlKCkucnkoKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBib29sIGhh
c1J4ID0gcnggPiAwOwogICAgIGJvb2wgaGFzUnkgPSByeSA+IDA7CiAgICAgaWYgKGhhc1J4IHx8
IGhhc1J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Rl
eHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1RleHRMYXlvdXRFbmdpbmVCYXNlbGluZS5jcHAKaW5kZXggMGI2M2Q2Y2RmZmI1NWE0MmVh
OTA0NTk4YTAxZDFlNmUyOWFlZjJmYS4uZWQ1N2VhYjVhNGU3YWMxMGZjNGU3NWZhMTJlOGNmYzFi
NDU1YzJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lQmFzZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBmbG9h
dCBTVkdUZXh0TGF5b3V0RW5naW5lQmFzZWxpbmU6OmNhbGN1bGF0ZUJhc2VsaW5lU2hpZnQoY29u
c3QgU1ZHUmVuZGVyU3R5bGUmCiB7CiAgICAgaWYgKHN0eWxlLmJhc2VsaW5lU2hpZnQoKSA9PSBC
YXNlbGluZVNoaWZ0OjpMZW5ndGgpIHsKICAgICAgICAgYXV0byBiYXNlbGluZVNoaWZ0VmFsdWVM
ZW5ndGggPSBzdHlsZS5iYXNlbGluZVNoaWZ0VmFsdWUoKTsKLSAgICAgICAgaWYgKGJhc2VsaW5l
U2hpZnRWYWx1ZUxlbmd0aC51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAg
ICAgICBpZiAoYmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5n
dGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICAgICAgcmV0dXJuIGJhc2VsaW5lU2hpZnRWYWx1
ZUxlbmd0aC52YWx1ZUFzUGVyY2VudGFnZSgpICogbV9mb250LnBpeGVsU2l6ZSgpOwogCiAgICAg
ICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5jcHAKaW5kZXggNDhkODBhZTk5MjZlMDYzZDllZjIxOTI0MmQzZGU3ODE3OGVjZTRlNS4u
YmNmMzU2YTgxZjhlYWYxOWM4ZDRkOTY4N2E1ZmExMDMxYTU2YzEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3Bh
Y2luZy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgZmxvYXQgU1ZHVGV4dExheW91dEVuZ2luZVNwYWNp
bmc6OmNhbGN1bGF0ZUNTU0tlcm5pbmdBbmRTcGFjaW5nKGNvbnN0IFNWR1JlbmRlclMKIHsKICAg
ICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBhdXRvIGtlcm5pbmdMZW5ndGggPSBzdHlsZS0+a2Vy
bmluZygpOwotICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBl
cmNlbnRhZ2UpCisgICAgaWYgKGtlcm5pbmdMZW5ndGgubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0
aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJuaW5nTGVuZ3RoLnZhbHVl
QXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAgICAgZWxzZSB7CiAgICAgICAg
IFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxlbWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmgKaW5kZXggZjUyMDE5ZmZm
ZTlhNDBhNDA3MmUyMzVjNWNhYjBkZGUxYmQ5MDU1Yy4uNmZkOTViZDZlZWUzMDJjZTRlNWVmNTE5
YzVlMjFhMTY1NzM1NzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdy
YWRpZW50QXR0cmlidXRlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9MaW5lYXJHcmFkaWVu
dEF0dHJpYnV0ZXMuaApAQCAtMjYsNyArMjYsNyBAQCBzdHJ1Y3QgTGluZWFyR3JhZGllbnRBdHRy
aWJ1dGVzIDogR3JhZGllbnRBdHRyaWJ1dGVzIHsKICAgICBMaW5lYXJHcmFkaWVudEF0dHJpYnV0
ZXMoKQogICAgICAgICA6IG1feDEoKQogICAgICAgICAsIG1feTEoKQotICAgICAgICAsIG1feDIo
TGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpCisgICAgICAgICwgbV94MihTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgIjEwMCUiKQogICAgICAgICAsIG1feTIoKQogICAgICAgICAsIG1feDFTZXQoZmFsc2Up
CiAgICAgICAgICwgbV95MVNldChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9SYWRpYWxH
cmFkaWVudEF0dHJpYnV0ZXMuaAppbmRleCA4N2JlNzIyODgxNDNlM2RlMTFjMWQ3NGVlODVhZmU4
NmNlYjQxMTgwLi42MTIzZGJlOTBmMzc0NzZiMWI0ZThjY2ViZWI3MzYwOWRkZDA3MDU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCkBAIC0yNSw5
ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdyYWRpZW50QXR0
cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGllbnRBdHRyaWJ1
dGVzKCkKLSAgICAgICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0gICAgICAgICwg
bV9jeShMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQotICAgICAgICAsIG1fcihMZW5ndGhNb2RlV2lk
dGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQor
ICAgICAgICAsIG1fY3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAgICAgICAsIG1f
cihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCiAgICAgICAgICwgbV9jeFNldChmYWxzZSkK
ICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxzZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGVWYWx1ZS5oCmluZGV4IDRkNDAyZjdmY2Q0NWExZmM3ZTc5NDdkOTYxZGU5
ZWE1OTE0YmU0NjEuLmNjNDU0NDE4M2NmMGRmOTBmYjdlYjkyYTkzYWEzZGYxZWIzMTUyOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaApAQCAtNTYsMTAgKzU2LDQgQEAgcHJpdmF0ZToK
ICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRl
PD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZVZhbHVlPiB7Ci0gICAgc3RhdGlj
IFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGVWYWx1ZSgpOyB9
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdBbmdsZVZhbHVlJiB0eXBlKSB7
IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IGQ5MzA0MGExZjU2YWFlZmY1YzI5MjFkNDZhYjcz
ZGIxMDhhZDc4ZjQuLjQ5ZDQ1OTMyZjA3MWUzNTQyOGI3MTI5NDBiM2ViNTAxZTU0OGY1MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTU0LDExICs1NCwxMSBA
QCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9y
ID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAg
IG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lB
dHRyKQotICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAg
cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgKaW5kZXggNzIwZjMxMGU2NDBmODJkYmVl
NjY3MDY0M2Y3OTMxM2I0ZjVlZmE4NS4uNzFiNzYzMGQyM2JkNTFhZjRhOGMxMzE5MmZmNGI4YzNk
YjBiM2RhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCkBAIC01NSw5ICs1
NSw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1l
bnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5h
bDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAppbmRleCA1Y2Q3ZDE5ZGU5Mzk1ZWUx
ZmY0NWQwYjdlNDZlODUzZTBiYmY3NDQ3Li4yZmQ1NzY2NDliNzIyOGVhMGZkMjVlYWVkY2E3MzVk
ODQyNTNhODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwCkBAIC02
NCw5ICs2NCw5IEBAIHZvaWQgU1ZHQ3Vyc29yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAgICAgU1ZHUGFyc2luZ0Vycm9y
IHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAg
ICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCmluZGV4IGVkNjRkNWZhMTllODM1ZjkwODA1MzI1NTVm
MTdjOGNmNDc0NGMwMjIuLjVkZDRkNGJkN2ZiMmI2ZWI1ZDFlZTE0NDE2ZTNmYTQzZDVkZWUyMGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaApAQCAtNjEsOCArNjEsOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0
PFVSTD4mKSBjb25zdCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1h
Z2VWYWx1ZSo+IG1fY2xpZW50czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCmluZGV4IDgzMzJlYjVkYmZjMjhmODYyNzgyNGJmODg5ZjhmMzQ2MDY2ZDM0MWMu
LmFkYjZjYmNhNDIzOWY3OGI2YjkwMzA2NzQ4ZWIwM2MyNTY2NmFiMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgU1ZH
RWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAg
ICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpyeEF0dHIpCi0gICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5l
Z2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6cnlBdHRyKQotICAgICAgICBtX3J5LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcnktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5oCmluZGV4IDMwMzU1
OGUwMmU1M2ZmYTI4ODFmMTM1ZjBhZTgxNTllNzE1YzNjMGIuLmNhMDdiM2YxYmNmYzZhYzgzMTJh
ODlkNTI4MWIzYzJiYWVkZDQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5oCkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxl
bWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRy
ZWVQb3NpdGlvbiYpIGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVn
aXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N4
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCmluZGV4IDI0YzZjNTJmNDgzOGY3MmFjM2I4ZTZjNzk0YThiNWI3OTcwMjcxYmMuLjE4
NmI3NzFlNThlM2RhOGMyMWExMmUxZmQ4OGMzMWIwMWE0MWU1YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTc2LDEzICs3NiwxMyBAQCB2b2lkIFNWR0ZpbHRl
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbgogICAgICAgICBpZiAocHJvcGVydHlWYWx1ZSA+IDApCiAgICAgICAgICAgICBt
X3ByaW1pdGl2ZVVuaXRzLT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHVW5pdFR5cGVzOjpTVkdVbml0
VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp4
QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1f
eC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dpZHRoLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0g
ICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2hl
aWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmli
dXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmgKaW5kZXggMTU4OWE2YzQyYmRhODc3MTQ1ZDVlMDczN2VjOGZh
MWY0YWJjZWVkZi4uNTkwMzIwOTU5Y2U5ZWQ0YmYyYjk0ZmVmYWU0YzYxZTBkNDZjYjE5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJp
dmF0ZToKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07
CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fZmlsdGVyVW5pdHMgeyBTVkdBbmlt
YXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBF
X09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBt
X3ByaW1pdGl2ZVVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNW
R1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VSU1BBQ0VPTlVTRSkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAl
IikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiLTEwJSIp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEyMCUiKSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEyMCUiKSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAzNjRjYjI4MGYzMjc5ZjIw
ZjUyNmE2MWM4YTMyMzEwM2NjNDdiZWM4Li4zMGRhNDM0ZjRjZDM5ZDBhYzIwMTRjNzc3NmE1Mjhh
NzgyNDMyODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNTEsMTMgKzUxLDEzIEBAIHZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBO
b0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAg
ICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxz
ZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVzdWx0
QXR0cikKICAgICAgICAgbV9yZXN1bHQtPnNldEJhc2VWYWxJbnRlcm5hbCh2YWx1ZSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaAppbmRleCBjMjgxNmRhMzYzNWQwNjU2M2I5MWM4MzUwOGJkODEzOGNiMzlh
Yjk0Li5jOThiMTNlZDk2Mjc2YWY5ZTE0ZjY0MjgxMWE2ZmQ3NDY3NzJhY2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNwZWM6IElm
IHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRoZSB3aWR0
aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMgYXMgaWYg
YSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0
aCwgIjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIwJSIpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjAlIikgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3Vs
dCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDVhY2Q1ZmNiMzE5
ODBkZTdiOGU2NmIwOGQzYzVkMzViNjA3YjI4MjkuLjdmZjNiODY3ZmM1OTJkOGRiMjNhZmE0NjUw
ZmY3ZTZjYjBmMzNkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50LmNwcApAQCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
CiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAg
IG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV93aWR0aC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
KSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAK
ICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCmluZGV4
IDAyYTE5NGM0MTdhN2FiNzczMDQxNDgyNzdkM2Y5ZTY0OWZiMDY4YTQuLmRiMjA0MzM5NTVlYmUy
MzQxM2U2MDk2YWI1NDVhN2JlMzk0OGMwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
b3JlaWduT2JqZWN0RWxlbWVudC5oCkBAIC01OCwxMCArNTgsMTAgQEAgcHJpdmF0ZToKICAgICBi
b29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
eSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0
aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRl
eCA5NjcwZTI2NDQwNjdjZmRhYjM0NzMwMzUxOWIxNGYwZmMxOGYxNmI3Li43YjY0YTAyMTRhM2Jh
MGYwZTg1MWM0NWQwZTlkNzM0NDIxYzc2NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcApAQCAtNzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nCiAg
ICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUg
PT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1f
d2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0
aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOwor
ICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5l
Z2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7
CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgKaW5kZXggOWZiNTc4Njg3NWZi
MTE0YzUyMzI4NjVlNGUwODNhZWIzZmNhODQwMy4uZWFmZjYxODZkODlkOTM0OGZiY2ExNTE4NWRk
ZmFhNmEwZGVkZDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaApAQCAtNjks
MTAgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1
bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVp
Z2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9
OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbyB7IFNWR0FuaW1hdGVkUHJl
c2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZHSW1hZ2VMb2FkZXIgbV9p
bWFnZUxvYWRlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgKaW5kZXggZmYwZmQzNTE0YjI2M2Ux
MzhkNWNjYTkwN2YzYTc5ODdiNmYzYjllZi4uZWQ1MDAzODJjNWZlODM4MWQ0Nzc5NjhiOTA5MzAw
ZjZiZmM0ZDkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGguaApAQCAtMjUsNiArMjUsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIKICNpbmNsdWRlICJT
VkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1ZhbHVlUHJvcGVydHkuaCIKIApAQCAtMzgs
MTcgKzM5LDE3IEBAIGNsYXNzIFNWR0xlbmd0aCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5PFNW
R0xlbmd0aFZhbHVlPiB7CiBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZCBkZWNsYXJlIHRoZXNlIGVu
dW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0aW9uCiAgICAgZW51
bSB7Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5ndGhUeXBlVW5rbm93biwK
LSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSID0gTGVuZ3RoVHlwZU51bWJlciwKLSAgICAg
ICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQZXJjZW50YWdlLAotICAg
ICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBlRU1TLAotICAgICAgICBTVkdfTEVO
R1RIVFlQRV9FWFMgPSBMZW5ndGhUeXBlRVhTLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCA9
IExlbmd0aFR5cGVQWCwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gPSBMZW5ndGhUeXBlQ00s
Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX01NID0gTGVuZ3RoVHlwZU1NLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUFQg
PSBMZW5ndGhUeXBlUFQsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BDID0gTGVuZ3RoVHlwZVBD
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpVbmtub3duKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVN
QkVSICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6Ok51bWJlciks
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVf
RU1TICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkVtcyks
CisgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihTVkdMZW5ndGhUeXBlOjpFeHMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QWCAgICAg
ICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UGl4ZWxzKSwKKyAg
ICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFNWR0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTU0g
ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0
ZXJzKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfSU4gICAgICAgICAgID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkluY2hlcyksCisgICAgICAgIFNWR19MRU5HVEhUWVBF
X1BUICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpQb2lu
dHMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QQyAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UGljYXMpCiAgICAgfTsKIAogICAgIHN0YXRpYyBSZWY8
U1ZHTGVuZ3RoPiBjcmVhdGUoKQpAQCAtNzksOSArODAsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVlKTsKICAgICB9CiAKLSAgICB1bnNpZ25lZCBz
aG9ydCB1bml0VHlwZSgpCisgICAgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGUoKSAgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLnVuaXRUeXBlKCk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5sZW5ndGhUeXBlKCkpOwogICAgIH0KIAogICAg
IEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRpbmdzKCkKQEAgLTk0LDcgKzk1LDcgQEAg
cHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byBy
ZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVlLCBTVkdMZW5ndGhDb250ZXh0IHsgY29udGV4
dEVsZW1lbnQoKSB9KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKFNW
R0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0sIHZhbHVlKTsKICAgICAgICAgaWYg
KHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIApAQCAtMTM1LDEyICsxMzYsMTIgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25s
eSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dl
ZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAg
ICAKKyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNWR19MRU5HVEhUWVBFX1VOS05PV04gfHwgdW5p
dFR5cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgICAgIG1fdmFsdWUgPSB7IHZhbHVlSW5TcGVj
aWZpZWRVbml0cywgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odW5pdFR5cGUpLCBtX3ZhbHVl
Lmxlbmd0aE1vZGUoKSB9OwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgCiAgICAgRXhjZXB0aW9u
T3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUp
CkBAIC0xNDgsMTAgKzE0OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChpc1JlYWRPbmx5KCkp
CiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmljYXRpb25BbGxvd2VkRXJy
b3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUuY29udmVydFRvU3BlY2lmaWVk
VW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0pOwor
ICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfVU5LTk9XTiB8fCB1bml0VHlw
ZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLmNvbnZl
cnRUb1NwZWNpZmllZFVuaXRzKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0s
IHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXRUeXBlKSk7CiAgICAgICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAK
KwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5jcHAKaW5kZXggMDgwMDAxNzZiYWMw
ZmI5MGZlYTM1MGZmZDYyZTU2ZWM0YmJjMTI5ZS4uMjMyMmZhMjY1MGM3OTMwMWVlODNlZDY2OGMz
YzJhM2NiOWI0YmVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmNwcApA
QCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtODUsMTAgKzg1LDEwIEBAIGZsb2F0IFNWR0xlbmd0
aENvbnRleHQ6OnJlc29sdmVMZW5ndGgoY29uc3QgU1ZHRWxlbWVudCogY29udGV4dCwgU1ZHVW5p
dFR5cGVzOjpTCiAgICAgcmV0dXJuIHgudmFsdWVBc1BlcmNlbnRhZ2UoKTsKIH0KIAotZmxvYXQg
U1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNW
R0xlbmd0aE1vZGUgbW9kZSkKK2Zsb2F0IFNWR0xlbmd0aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3Ro
KGNvbnN0IExlbmd0aCYgbGVuZ3RoLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiB7CiAgICAg
aWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRW
YWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUp
OworICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2Vy
VW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIGxlbmd0aE1vZGUpOwogICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy
biByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CkBAIC05OSw0OSArOTksNDkgQEAgZmxvYXQg
U1ZHTGVuZ3RoQ29udGV4dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNW
R0xlbmd0aE1vZGUgbW9kZSkKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplOwogICAgIGRldGVy
bWluZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7CiAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBj
YXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNl
IFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAgICByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0
aChsZW5ndGgsIHZpZXdwb3J0U2l6ZS53aWR0aCgpKTsKLSAgICBjYXNlIExlbmd0aE1vZGVIZWln
aHQ6CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVybiBmbG9h
dFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgdmlld3BvcnRTaXplLmhlaWdodCgpKTsKLSAgICBjYXNl
IExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAg
ICByZXR1cm4gZmxvYXRWYWx1ZUZvckxlbmd0aChsZW5ndGgsIHN0ZDo6c3FydCh2aWV3cG9ydFNp
emUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAyKSk7CiAgICAgfTsKICAgICByZXR1cm4gMDsK
IH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZVRv
VXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUg
ZnJvbVVuaXQpIGNvbnN0CitFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29u
dmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlw
ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKSBjb25zdAogewogICAgIC8vIElmIHRoZSBTVkdM
ZW5ndGhDb250ZXh0IGNhcnJpZXMgYSBjdXN0b20gdmlld3BvcnQsIGZvcmNlIHJlc29sdmluZyBh
Z2FpbnN0IGl0LgogICAgIGlmICghbV9vdmVycmlkZGVuVmlld3BvcnQuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIC8vIDEwMCUgPSAxMDAuMCBpbnN0ZWFkIG9mIDEuMCBmb3IgaGlzdG9yaWNhbCByZWFz
b25zLCB0aGlzIGNvdWxkIGV2ZW50dWFsbHkgYmUgY2hhbmdlZAotICAgICAgICBpZiAoZnJvbVVu
aXQgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgICAgIGlmIChsZW5ndGhUeXBlID09IFNW
R0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgICAgICB2YWx1ZSAvPSAxMDA7Ci0gICAg
ICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKHZhbHVlLCBt
b2RlKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5p
dHModmFsdWUsIGxlbmd0aE1vZGUpOwogICAgIH0KIAotICAgIHN3aXRjaCAoZnJvbVVuaXQpIHsK
LSAgICBjYXNlIExlbmd0aFR5cGVVbmtub3duOgorICAgIHN3aXRjaCAobGVuZ3RoVHlwZSkgewor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0gICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgorICAg
IGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gdmFsdWU7Ci0gICAg
Y2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQaXhlbHM6CiAgICAg
ICAgIHJldHVybiB2YWx1ZTsKLSAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgotICAgICAg
ICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEw
MCwgbW9kZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlw
ZTo6UGVyY2VudGFnZToKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdl
VG9Vc2VyVW5pdHModmFsdWUgLyAxMDAsIGxlbmd0aE1vZGUpOworICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6RW1zOgogICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbUVNU1RvVXNlclVuaXRz
KHZhbHVlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBl
OjpFeHM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tRVhTVG9Vc2VyVW5pdHModmFs
dWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUNNOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6Q2Vu
dGltZXRlcnM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyLjU0
ZjsKLSAgICBjYXNlIExlbmd0aFR5cGVNTToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok1pbGxp
bWV0ZXJzOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBjc3NQaXhlbHNQZXJJbmNoIC8gMjUuNGY7
Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpJbmNoZXM6
CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5n
dGhUeXBlUFQ6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQb2ludHM6CiAgICAgICAgIHJldHVy
biB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyA3MjsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoK
KyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBpY2FzOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBj
c3NQaXhlbHNQZXJJbmNoIC8gNjsKICAgICB9CiAKQEAgLTE0OSwzMCArMTQ5LDMwIEBAIEV4Y2Vw
dGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhm
bG9hdCB2YWx1ZSwgU1ZHTGVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZsb2F0
PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVl
LCBTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdAorRXhjZXB0
aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMo
ZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5n
dGhNb2RlKSBjb25zdAogewotICAgIHN3aXRjaCAodG9Vbml0KSB7Ci0gICAgY2FzZSBMZW5ndGhU
eXBlVW5rbm93bjoKKyAgICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0
aFR5cGU6OlVua25vd246CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRF
cnJvciB9OwotICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6Ok51bWJlcjoKICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBl
cmNlbnRhZ2U6Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9QZXJj
ZW50YWdlKHZhbHVlICogMTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAg
Y2FzZSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZh
bHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgbGVuZ3RoTW9kZSk7Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFbXM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVG
cm9tVXNlclVuaXRzVG9FTVModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBj
YXNlIFNWR0xlbmd0aFR5cGU6OkV4czoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21V
c2VyVW5pdHNUb0VYUyh2YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFg6CisgICAgY2FzZSBT
VkdMZW5ndGhUeXBlOjpQaXhlbHM6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICBjYXNlIExl
bmd0aFR5cGVDTToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzOgogICAgICAg
ICByZXR1cm4gdmFsdWUgKiAyLjU0ZiAvIGNzc1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5n
dGhUeXBlTU06CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNaWxsaW1ldGVyczoKICAgICAgICAg
cmV0dXJuIHZhbHVlICogMjUuNGYgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZUlOOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6SW5jaGVzOgogICAgICAgICByZXR1cm4g
dmFsdWUgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgIGNh
c2UgU1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOgogICAgICAgICByZXR1cm4gdmFsdWUgKiA3MiAvIGNz
c1BpeGVsc1BlckluY2g7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUEM6CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpQaWNhczoKICAgICAgICAgcmV0dXJuIHZhbHVlICogNiAvIGNzc1BpeGVsc1Blcklu
Y2g7CiAgICAgfQogCkBAIC0xODAsMTggKzE4MCwxOCBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZH
TGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZH
TAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4
dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZShmbG9hdCB2YWx1ZSwgU1ZH
TGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRl
eHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UoZmxvYXQgdmFsdWUsIFNW
R0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBGbG9hdFNpemUgdmlld3BvcnRT
aXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBzd2l0Y2ggKG1v
ZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2ggKGxlbmd0aE1vZGUp
IHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdmFsdWUg
LyB2aWV3cG9ydFNpemUud2lkdGgoKSAqIDEwMDsKLSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6
CisgICAgY2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVybiB2YWx1ZSAv
IHZpZXdwb3J0U2l6ZS5oZWlnaHQoKSAqIDEwMDsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoK
KyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFsdWUgLyAo
c3RkOjpzcXJ0KHZpZXdwb3J0U2l6ZS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSAvIDIpKSAqIDEw
MDsKICAgICB9OwogCkBAIC0xOTksMTggKzE5OSwxOCBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZH
TGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZShmbG9h
dAogICAgIHJldHVybiAwOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4
dDo6Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZH
TGVuZ3RoTW9kZSBtb2RlKSBjb25zdAorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRl
eHQ6OmNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNW
R0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKICAgICBGbG9hdFNpemUgdmlld3BvcnRT
aXplOwogICAgIGlmICghZGV0ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKSkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBzd2l0Y2ggKG1v
ZGUpIHsKLSAgICBjYXNlIExlbmd0aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2ggKGxlbmd0aE1vZGUp
IHsKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdmFsdWUg
KiB2aWV3cG9ydFNpemUud2lkdGgoKTsKLSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6CisgICAg
Y2FzZSBTVkdMZW5ndGhNb2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHZpZXdw
b3J0U2l6ZS5oZWlnaHQoKTsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNW
R0xlbmd0aE1vZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFsdWUgKiBzdGQ6OnNxcnQodmll
d3BvcnRTaXplLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIC8gMik7CiAgICAgfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgKaW5kZXggOGU5N2UyMTRiOWIzNTJhODg5MDQ1ZWMy
YTI5MmI5NWQ1ZTdhNzM3MS4uZDNjYzRmYTcwMDkyYWU1MGM0Yzc1Yzc5MjhmZjg3ZWQ2YzEwMjhk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5oCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDM1ICsyMiwxNSBAQAog
CiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNs
dWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR1VuaXRUeXBlcy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0VsZW1lbnQ7Ci1jbGFzcyBTVkdMZW5ndGhWYWx1
ZTsKIAogc3RydWN0IExlbmd0aDsKIAotZW51bSBTVkdMZW5ndGhUeXBlIHsKLSAgICBMZW5ndGhU
eXBlVW5rbm93biA9IDAsCi0gICAgTGVuZ3RoVHlwZU51bWJlciwKLSAgICBMZW5ndGhUeXBlUGVy
Y2VudGFnZSwKLSAgICBMZW5ndGhUeXBlRU1TLAotICAgIExlbmd0aFR5cGVFWFMsCi0gICAgTGVu
Z3RoVHlwZVBYLAotICAgIExlbmd0aFR5cGVDTSwKLSAgICBMZW5ndGhUeXBlTU0sCi0gICAgTGVu
Z3RoVHlwZUlOLAotICAgIExlbmd0aFR5cGVQVCwKLSAgICBMZW5ndGhUeXBlUEMKLX07Ci0KLWVu
dW0gU1ZHTGVuZ3RoTW9kZSB7Ci0gICAgTGVuZ3RoTW9kZVdpZHRoID0gMCwKLSAgICBMZW5ndGhN
b2RlSGVpZ2h0LAotICAgIExlbmd0aE1vZGVPdGhlcgotfTsKLQogY2xhc3MgU1ZHTGVuZ3RoQ29u
dGV4dCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU1ZHTGVuZ3RoQ29udGV4dChjb25zdCBTVkdF
bGVtZW50Kik7CkBAIC02NCw5ICs0NSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRmxvYXRQb2lu
dCByZXNvbHZlUG9pbnQoY29uc3QgU1ZHRWxlbWVudCosIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5
cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB4LCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgeSk7CiAg
ICAgc3RhdGljIGZsb2F0IHJlc29sdmVMZW5ndGgoY29uc3QgU1ZHRWxlbWVudCosIFNWR1VuaXRU
eXBlczo6U1ZHVW5pdFR5cGUsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CiAKLSAgICBmbG9hdCB2
YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhNb2RlID0gTGVuZ3RoTW9kZU90
aGVyKTsKLSAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxv
YXQsIFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgZnJvbVVuaXQpIGNvbnN0OwotICAgIEV4
Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0LCBTVkdMZW5n
dGhNb2RlLCBTVkdMZW5ndGhUeXBlIHRvVW5pdCkgY29uc3Q7CisgICAgZmxvYXQgdmFsdWVGb3JM
ZW5ndGgoY29uc3QgTGVuZ3RoJiwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVy
KTsKKyAgICBFeGNlcHRpb25PcjxmbG9hdD4gY29udmVydFZhbHVlVG9Vc2VyVW5pdHMoZmxvYXQs
IFNWR0xlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPGZs
b2F0PiBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0LCBTVkdMZW5ndGhUeXBlLCBTVkdM
ZW5ndGhNb2RlKSBjb25zdDsKIAogICAgIGJvb2wgZGV0ZXJtaW5lVmlld3BvcnQoRmxvYXRTaXpl
JikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCmluZGV4IGIwMTQ3ZmEyMzRm
NGQ5YTg4ZjlmYzlmMzFkNWYzODg5NzMxNjc2OTUuLjVlYjU3MDFjNjc0Njg3OTJkMDU2MmMxNWI1
MjE2YjQ5MmMwMjFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhM
aXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExpc3QuaApAQCAtMzUsNyAr
MzUsNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0IDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlMaXN0
PFNWR0xlbmd0aD4gewogICAgIHVzaW5nIEJhc2U6OkJhc2U7CiAKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFNWR0xlbmd0aExpc3Q+IGNyZWF0ZShTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBM
ZW5ndGhNb2RlT3RoZXIpCisgICAgc3RhdGljIFJlZjxTVkdMZW5ndGhMaXN0PiBjcmVhdGUoU1ZH
TGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdMZW5ndGhMaXN0KGxlbmd0aE1vZGUpKTsKICAg
ICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgU1ZH
TGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBMZW5ndGhNb2RlT3RoZXIgfTsKKyAgICBTVkdMZW5n
dGhNb2RlIG1fbGVuZ3RoTW9kZSB7IFNWR0xlbmd0aE1vZGU6Ok90aGVyIH07CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmNwcAppbmRl
eCBkZDJlZGUxNGZiNzE3YzE2YTBmYjhlNjAyYTQxYWU5ODc0YTExOGVmLi4yNTI3MWI5ZDBlMjdi
ZWJhYzJhZmM2MjY0NGYxYzI1OWU0NWUxNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGVuZ3RoVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhW
YWx1ZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMiw1OCArMjIsMzcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJTVkdMZW5ndGhWYWx1ZS5oIgogCi0jaW5jbHVkZSAiQ1NTSGVscGVyLmgi
CisjaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZl
VmFsdWUuaCIKLSNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKLSNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEhlbHBlciBmdW5jdGlvbnMK
LXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgc3RvcmVVbml0KFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZH
TGVuZ3RoVHlwZSB0eXBlKQorc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBsZW5ndGhUeXBlVG9T
dHJpbmcoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewotICAgIHJldHVybiAobW9kZSA8PCA0
KSB8IHR5cGU7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoTW9kZSBleHRyYWN0TW9kZSh1
bnNpZ25lZCB1bml0KQotewotICAgIHVuc2lnbmVkIG1vZGUgPSB1bml0ID4+IDQ7ICAgIAotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhNb2RlPihtb2RlKTsKLX0KLQotc3RhdGljIGlu
bGluZSBTVkdMZW5ndGhUeXBlIGV4dHJhY3RUeXBlKHVuc2lnbmVkIHVuaXQpCi17Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXQgJiAoKDEgPDwgNCkgLSAxKSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbGVuZ3RoVHlwZVRvU3RyaW5nKFNWR0xlbmd0
aFR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIExlbmd0aFR5cGVV
bmtub3duOgotICAgIGNhc2UgTGVuZ3RoVHlwZU51bWJlcjoKKyAgICBzd2l0Y2ggKGxlbmd0aFR5
cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVua25vd246CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiAiIjsgICAgCi0gICAgY2FzZSBMZW5ndGhU
eXBlUGVyY2VudGFnZToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U6CiAgICAg
ICAgIHJldHVybiAiJSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlRU1TOgorICAgIGNhc2UgU1ZHTGVu
Z3RoVHlwZTo6RW1zOgogICAgICAgICByZXR1cm4gImVtIjsKLSAgICBjYXNlIExlbmd0aFR5cGVF
WFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFeHM6CiAgICAgICAgIHJldHVybiAiZXgiOwot
ICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGl4ZWxzOgog
ICAgICAgICByZXR1cm4gInB4IjsKLSAgICBjYXNlIExlbmd0aFR5cGVDTToKKyAgICBjYXNlIFNW
R0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzOgogICAgICAgICByZXR1cm4gImNtIjsKLSAgICBjYXNl
IExlbmd0aFR5cGVNTToKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0ZXJzOgogICAg
ICAgICByZXR1cm4gIm1tIjsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OkluY2hlczoKICAgICAgICAgcmV0dXJuICJpbiI7Ci0gICAgY2FzZSBMZW5ndGhU
eXBlUFQ6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQb2ludHM6CiAgICAgICAgIHJldHVybiAi
cHQiOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGlj
YXM6CiAgICAgICAgIHJldHVybiAicGMiOwogICAgIH0KIApAQCAtODEsOTAgKzYwLDE4MyBAQCBz
dGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGxlbmd0aFR5cGVUb1N0cmluZyhTVkdMZW5ndGhUeXBl
IHR5cGUpCiAgICAgcmV0dXJuICIiOwogfQogCi1pbmxpbmUgU1ZHTGVuZ3RoVHlwZSBwYXJzZUxl
bmd0aFR5cGUoY29uc3QgVUNoYXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKK3N0YXRpYyBpbmxp
bmUgU1ZHTGVuZ3RoVHlwZSBwYXJzZUxlbmd0aFR5cGUoY29uc3QgVUNoYXIqIHB0ciwgY29uc3Qg
VUNoYXIqIGVuZCkKIHsKICAgICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgcmV0dXJuIExlbmd0
aFR5cGVOdW1iZXI7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CiAKICAg
ICBjb25zdCBVQ2hhciBmaXJzdENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyID09IGVuZCkK
LSAgICAgICAgcmV0dXJuIGZpcnN0Q2hhciA9PSAnJScgPyBMZW5ndGhUeXBlUGVyY2VudGFnZSA6
IExlbmd0aFR5cGVVbmtub3duOworICAgICAgICByZXR1cm4gZmlyc3RDaGFyID09ICclJyA/IFNW
R0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgOiBTVkdMZW5ndGhUeXBlOjpVbmtub3duOwogCiAgICAg
Y29uc3QgVUNoYXIgc2Vjb25kQ2hhciA9ICpwdHI7CiAKICAgICBpZiAoKytwdHIgIT0gZW5kKQot
ICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVVua25vd247CisgICAgICAgIHJldHVybiBTVkdMZW5n
dGhUeXBlOjpVbmtub3duOwogCiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnZScgJiYgc2Vjb25kQ2hh
ciA9PSAnbScpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlRU1TOworICAgICAgICByZXR1cm4g
U1ZHTGVuZ3RoVHlwZTo6RW1zOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENo
YXIgPT0gJ3gnKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUVYUzsKKyAgICAgICAgcmV0dXJu
IFNWR0xlbmd0aFR5cGU6OkV4czsKICAgICBpZiAoZmlyc3RDaGFyID09ICdwJyAmJiBzZWNvbmRD
aGFyID09ICd4JykKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVQWDsKKyAgICAgICAgcmV0dXJu
IFNWR0xlbmd0aFR5cGU6OlBpeGVsczsKICAgICBpZiAoZmlyc3RDaGFyID09ICdjJyAmJiBzZWNv
bmRDaGFyID09ICdtJykKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVDTTsKKyAgICAgICAgcmV0
dXJuIFNWR0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ20n
ICYmIHNlY29uZENoYXIgPT0gJ20nKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZU1NOworICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TWlsbGltZXRlcnM7CiAgICAgaWYgKGZpcnN0Q2hh
ciA9PSAnaScgJiYgc2Vjb25kQ2hhciA9PSAnbicpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBl
SU47CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpJbmNoZXM7CiAgICAgaWYgKGZpcnN0
Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAndCcpCi0gICAgICAgIHJldHVybiBMZW5ndGhU
eXBlUFQ7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQb2ludHM7CiAgICAgaWYgKGZp
cnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAnYycpCi0gICAgICAgIHJldHVybiBMZW5n
dGhUeXBlUEM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQaWNhczsKIAotICAgIHJl
dHVybiBMZW5ndGhUeXBlVW5rbm93bjsKKyAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6VW5rbm93
bjsKIH0KIAotU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGUgbW9k
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQotICAgIDogbV91bml0KHN0b3JlVW5pdCht
b2RlLCBMZW5ndGhUeXBlTnVtYmVyKSkKK3N0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBwcmlt
aXRpdmVUeXBlVG9MZW5ndGhUeXBlKHVuc2lnbmVkIHNob3J0IHByaW1pdGl2ZVR5cGUpCiB7Ci0g
ICAgc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2
ZVR5cGUpIHsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOgorICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UGVyY2Vu
dGFnZTsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOgorICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoVHlwZTo6RW1zOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19F
WFM6CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpFeHM7CisgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1BYOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UGl4ZWxz
OworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTToKKyAgICAgICAgcmV0dXJuIFNW
R0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19NTToKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0ZXJzOworICAgIGNh
c2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5
cGU6OkluY2hlczsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6CisgICAgICAg
IHJldHVybiBTVkdMZW5ndGhUeXBlOjpQb2ludHM7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BDOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UGljYXM7CisgICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV046CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIFNWR0xlbmd0aFR5cGU6OlVua25vd247CisgICAgfQogfQogCi1TVkdMZW5ndGhWYWx1
ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
dmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSkKLSAgICA6
IG1fdW5pdChzdG9yZVVuaXQobW9kZSwgdW5pdFR5cGUpKQorc3RhdGljIGlubGluZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGUgbGVuZ3RoVHlwZVRvUHJpbWl0aXZlVHlwZShTVkdMZW5ndGhU
eXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAgc2V0VmFsdWUodmFsdWUsIGNvbnRleHQpOworICAgIHN3
aXRjaCAobGVuZ3RoVHlwZSkgeworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjoKKyAg
ICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjsKKyAgICBjYXNlIFNW
R0xlbmd0aFR5cGU6Ok51bWJlcjoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZToKKyAgICAgICAg
cmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OkVtczoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1T
OworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RXhzOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19FWFM7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQaXhlbHM6CisgICAg
ICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOworICAgIGNhc2UgU1ZHTGVuZ3Ro
VHlwZTo6Q2VudGltZXRlcnM6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0NNOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TWlsbGltZXRlcnM6CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6SW5j
aGVzOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjsKKyAgICBjYXNl
IFNWR0xlbmd0aFR5cGU6OlBvaW50czoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFQ7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQaWNhczoKKyAgICAgICAgcmV0dXJu
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM7CisgICAgfQogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlQXNT
dHJpbmcsIFNWR0xlbmd0aE1vZGUgbW9kZSkKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1
ZShTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykK
KyAgICA6IG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQogewotICAgIG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzID0gMDsKLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQobW9kZSwgTGVuZ3RoVHlwZU51bWJl
cik7Ci0gICAgcmV0dXJuIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CisgICAgc2V0
VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6
b3BlcmF0b3I9PShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhW
YWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5n
dGhUeXBlIGxlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICA6IG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICAsIG1fbGVuZ3Ro
VHlwZShsZW5ndGhUeXBlKQorICAgICwgbV9sZW5ndGhNb2RlKGxlbmd0aE1vZGUpCiB7Ci0gICAg
cmV0dXJuIG1fdW5pdCA9PSBvdGhlci5tX3VuaXQgJiYgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMg
PT0gb3RoZXIubV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgQVNTRVJUKG1fbGVuZ3RoVHlw
ZSAhPSBTVkdMZW5ndGhUeXBlOjpVbmtub3duKTsKIH0KIAotYm9vbCBTVkdMZW5ndGhWYWx1ZTo6
b3BlcmF0b3IhPShjb25zdCBTVkdMZW5ndGhWYWx1ZSYgb3RoZXIpIGNvbnN0CitTVkdMZW5ndGhW
YWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxv
YXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhN
b2RlKQorICAgIDogbV9sZW5ndGhUeXBlKGxlbmd0aFR5cGUpCisgICAgLCBtX2xlbmd0aE1vZGUo
bGVuZ3RoTW9kZSkKIHsKLSAgICByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOworICAgIHNldFZh
bHVlKGNvbnRleHQsIHZhbHVlKTsKIH0KIAotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmlu
ZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01v
ZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQorU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmNv
bnN0cnVjdChTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0
cmluZywgU1ZHUGFyc2luZ0Vycm9yJiBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVl
c01vZGUgbmVnYXRpdmVWYWx1ZXNNb2RlKQogewotICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aCht
b2RlKTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobGVuZ3RoTW9kZSk7CiAKICAgICBpZiAo
bGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZykuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHBhcnNlRXJyb3IgPSBQYXJzaW5nQXR0cmlidXRlRmFpbGVkRXJyb3I7Ci0gICAgZWxz
ZSBpZiAobmVnYXRpdmVWYWx1ZXNNb2RlID09IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocyAmJiBsZW5n
dGgudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQorICAgIGVsc2UgaWYgKG5lZ2F0aXZlVmFs
dWVzTW9kZSA9PSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCAmJiBsZW5ndGgu
dmFsdWVJblNwZWNpZmllZFVuaXRzKCkgPCAwKQogICAgICAgICBwYXJzZUVycm9yID0gTmVnYXRp
dmVWYWx1ZUZvcmJpZGRlbkVycm9yOwogCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotU1ZHTGVu
Z3RoVHlwZSBTVkdMZW5ndGhWYWx1ZTo6dW5pdFR5cGUoKSBjb25zdAorU1ZHTGVuZ3RoVmFsdWUg
U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgdG8sIGZsb2F0IHByb2dyZXNzKQoreworICAgIGlmICgoZnJvbS5pc1pl
cm8oKSAmJiB0by5pc1plcm8oKSkKKyAgICAgICAgfHwgZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZH
TGVuZ3RoVHlwZTo6VW5rbm93bgorICAgICAgICB8fCB0by5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVu
Z3RoVHlwZTo6VW5rbm93bgorICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgZnJvbS5sZW5n
dGhUeXBlKCkgIT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSAmJiB0by5sZW5ndGhUeXBlKCkg
PT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKKyAgICAgICAgfHwgKCF0by5pc1plcm8oKSAm
JiBmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlICYmIHRvLmxl
bmd0aFR5cGUoKSAhPSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQorICAgICAgICB8fCAoIWZy
b20uaXNaZXJvKCkgJiYgIXRvLmlzWmVybygpICYmIChmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdM
ZW5ndGhUeXBlOjpFbXMgfHwgZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6RXhz
KSAmJiBmcm9tLmxlbmd0aFR5cGUoKSAhPSB0by5sZW5ndGhUeXBlKCkpKQorICAgICAgICByZXR1
cm4gdG87CisKKyAgICBpZiAoZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVy
Y2VudGFnZSB8fCB0by5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkg
eworICAgICAgICBhdXRvIGZyb21QZXJjZW50ID0gZnJvbS52YWx1ZUFzUGVyY2VudGFnZSgpICog
MTAwOworICAgICAgICBhdXRvIHRvUGVyY2VudCA9IHRvLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAx
MDA7CisgICAgICAgIHJldHVybiB7IFdlYkNvcmU6OmJsZW5kKGZyb21QZXJjZW50LCB0b1BlcmNl
bnQsIHByb2dyZXNzKSwgU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSB9OworICAgIH0KKworICAg
IGlmIChmcm9tLmxlbmd0aFR5cGUoKSA9PSB0by5sZW5ndGhUeXBlKCkgfHwgZnJvbS5pc1plcm8o
KSB8fCB0by5pc1plcm8oKSB8fCBmcm9tLmlzUmVsYXRpdmUoKSkgeworICAgICAgICBhdXRvIGZy
b21WYWx1ZSA9IGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgICAgIGF1dG8gdG9W
YWx1ZSA9IHRvLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICByZXR1cm4geyBXZWJD
b3JlOjpibGVuZChmcm9tVmFsdWUsIHRvVmFsdWUsIHByb2dyZXNzKSwgdG8uaXNaZXJvKCkgPyBm
cm9tLmxlbmd0aFR5cGUoKSA6IHRvLmxlbmd0aFR5cGUoKSB9OworICAgIH0KKworICAgIFNWR0xl
bmd0aENvbnRleHQgbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0KG51bGxwdHIpOworICAgIGF1dG8g
ZnJvbVZhbHVlSW5Vc2VyVW5pdHMgPSBub25SZWxhdGl2ZUxlbmd0aENvbnRleHQuY29udmVydFZh
bHVlVG9Vc2VyVW5pdHMoZnJvbS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSwgZnJvbS5sZW5ndGhU
eXBlKCksIGZyb20ubGVuZ3RoTW9kZSgpKTsKKyAgICBpZiAoZnJvbVZhbHVlSW5Vc2VyVW5pdHMu
aGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvIGZyb21WYWx1
ZSA9IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZy
b21WYWx1ZUluVXNlclVuaXRzLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCB0by5sZW5ndGhUeXBlKCks
IHRvLmxlbmd0aE1vZGUoKSk7CisgICAgaWYgKGZyb21WYWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKworICAgIGZsb2F0IHRvVmFsdWUgPSB0by52YWx1ZUluU3BlY2lm
aWVkVW5pdHMoKTsKKyAgICByZXR1cm4geyBXZWJDb3JlOjpibGVuZChmcm9tVmFsdWUucmVsZWFz
ZVJldHVyblZhbHVlKCksIHRvVmFsdWUsIHByb2dyZXNzKSwgdG8ubGVuZ3RoVHlwZSgpIH07Cit9
CisKK1NWR0xlbmd0aFZhbHVlIFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUo
Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBleHRyYWN0VHlw
ZShtX3VuaXQpOworICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSA9IHByaW1pdGl2ZVR5cGVU
b0xlbmd0aFR5cGUodmFsdWUucHJpbWl0aXZlVHlwZSgpKTsKKyAgICByZXR1cm4gbGVuZ3RoVHlw
ZSA9PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duID8gU1ZHTGVuZ3RoVmFsdWUoKSA6IFNWR0xlbmd0
aFZhbHVlKHZhbHVlLmZsb2F0VmFsdWUoKSwgbGVuZ3RoVHlwZSk7CiB9CiAKLVNWR0xlbmd0aE1v
ZGUgU1ZHTGVuZ3RoVmFsdWU6OnVuaXRNb2RlKCkgY29uc3QKK1JlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gU1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIGxlbmd0aCkKIHsKLSAgICByZXR1cm4gZXh0cmFjdE1vZGUobV91bml0KTsKKyAgICByZXR1
cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShsZW5ndGgudmFsdWVJblNwZWNpZmllZFVuaXRz
KCksIGxlbmd0aFR5cGVUb1ByaW1pdGl2ZVR5cGUobGVuZ3RoLmxlbmd0aFR5cGUoKSkpOworfQor
CitFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25z
dCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKK3sKKyAg
ICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IDA7CisgICAgbV9sZW5ndGhNb2RlID0gbGVuZ3Ro
TW9kZTsKKyAgICBtX2xlbmd0aFR5cGUgPSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CisgICAgcmV0
dXJuIHNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CiB9CiAKIGZsb2F0IFNWR0xlbmd0
aFZhbHVlOjp2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0KSBjb25zdApAQCAt
MTc1LDM3ICsyNDcsMzUgQEAgZmxvYXQgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlKGNvbnN0IFNWR0xl
bmd0aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0
dXJuVmFsdWUoKTsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aFZhbHVlOjp2YWx1
ZUZvckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CitTdHJp
bmcgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBj
b250ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzLCBl
eHRyYWN0TW9kZShtX3VuaXQpLCBleHRyYWN0VHlwZShtX3VuaXQpKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzKSwgbGVuZ3RoVHlwZVRvU3RyaW5nKG1fbGVuZ3RoVHlwZSkpOwogfQogCi1FeGNlcHRp
b25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4
dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlw
ZSB1bml0VHlwZSkKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVGb3JC
aW5kaW5ncyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAgIC8v
IEZJWE1FOiBTZWVtcyBsaWtlIGEgYnVnIHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBtX3Vu
aXQgZXZlbiBpZiBzZXRWYWx1ZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgotICAgIG1fdW5pdCA9IHN0
b3JlVW5pdChtb2RlLCB1bml0VHlwZSk7Ci0gICAgcmV0dXJuIHNldFZhbHVlKHZhbHVlLCBjb250
ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cywgbV9sZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUpOwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoZmxvYXQgdmFsdWUsIGNvbnN0
IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhW
YWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFs
dWUpCiB7CiAgICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3JpY2Fs
IHJlYXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgaWYgKGV4dHJh
Y3RUeXBlKG1fdW5pdCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKG1fbGVuZ3Ro
VHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICB2YWx1ZSA9IHZhbHVl
IC8gMTAwOwogCi0gICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnRleHQuY29udmVydFZhbHVl
RnJvbVVzZXJVbml0cyh2YWx1ZSwgZXh0cmFjdE1vZGUobV91bml0KSwgZXh0cmFjdFR5cGUobV91
bml0KSk7CisgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnRleHQuY29udmVydFZhbHVlRnJv
bVVzZXJVbml0cyh2YWx1ZSwgbV9sZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUpOwogICAgIGlmIChj
b252ZXJ0ZWRWYWx1ZS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZFZh
bHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNv
bnZlcnRlZFZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIHJldHVybiB7IH07CiB9Ci1m
bG9hdCBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UoKSBjb25zdAotewotICAgIC8v
IDEwMCUgPSAxMDAuMCBpbnN0ZWFkIG9mIDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0aGlz
IGNvdWxkIGV2ZW50dWFsbHkgYmUgY2hhbmdlZAotICAgIGlmIChleHRyYWN0VHlwZShtX3VuaXQp
ID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMgLyAxMDA7CiAKLSAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7CitF
eGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3Ro
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwg
U1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQoreworICAgIC8vIEZJWE1FOiBTZWVtcyBsaWtlIGEg
YnVnIHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBtX3VuaXQgZXZlbiBpZiBzZXRWYWx1ZSB0
aHJvd3MgYW4gZXhjZXB0aW9uLgorICAgIG1fbGVuZ3RoTW9kZSA9IGxlbmd0aE1vZGU7CisgICAg
bV9sZW5ndGhUeXBlID0gbGVuZ3RoVHlwZTsKKyAgICByZXR1cm4gc2V0VmFsdWUoY29udGV4dCwg
dmFsdWUpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVB
c1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTIyMSwxNzUgKzI5MSwyOSBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJp
bmcmIHN0cmluZykKICAgICBpZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCBjb252ZXJ0ZWROdW1i
ZXIsIGZhbHNlKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAK
LSAgICBhdXRvIHR5cGUgPSBwYXJzZUxlbmd0aFR5cGUocHRyLCBlbmQpOwotICAgIGlmICh0eXBl
ID09IExlbmd0aFR5cGVVbmtub3duKQorICAgIGF1dG8gbGVuZ3RoVHlwZSA9IHBhcnNlTGVuZ3Ro
VHlwZShwdHIsIGVuZCk7CisgICAgaWYgKGxlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6VW5r
bm93bikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKLSAgICBt
X3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUobV91bml0KSwgdHlwZSk7CisgICAgbV9sZW5n
dGhUeXBlID0gbGVuZ3RoVHlwZTsKICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNvbnZl
cnRlZE51bWJlcjsKICAgICByZXR1cm4geyB9OwogfQogCi1TdHJpbmcgU1ZHTGVuZ3RoVmFsdWU6
OnZhbHVlQXNTdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRl
ZE51bWJlcjo6Zml4ZWRQcmVjaXNpb24obV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpLCBsZW5ndGhU
eXBlVG9TdHJpbmcoZXh0cmFjdFR5cGUobV91bml0KSkpOwotfQotCi1FeGNlcHRpb25Pcjx2b2lk
PiBTVkdMZW5ndGhWYWx1ZTo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB0
eXBlLCBmbG9hdCB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpjb252
ZXJ0VG9TcGVjaWZpZWRVbml0cyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBTVkdM
ZW5ndGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gTGVuZ3RoVHlwZVVua25v
d24gfHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07Ci0KLSAgICBtX3VuaXQgPSBzdG9yZVVuaXQoZXh0cmFjdE1vZGUo
bV91bml0KSwgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odHlwZSkpOwotICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gdmFsdWU7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhjZXB0aW9u
T3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVk
IHNob3J0IHR5cGUsIGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgaWYg
KHR5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24gfHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0KICAgICBhdXRvIHZh
bHVlSW5Vc2VyVW5pdHMgPSB2YWx1ZUZvckJpbmRpbmdzKGNvbnRleHQpOwogICAgIGlmICh2YWx1
ZUluVXNlclVuaXRzLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gdmFsdWVJblVzZXJV
bml0cy5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKLSAgICBhdXRvIG9yaWdpbmFsVW5pdEFuZFR5cGUg
PSBtX3VuaXQ7Ci0gICAgbV91bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCksIHN0
YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHR5cGUpKTsKLSAgICBhdXRvIHJlc3VsdCA9IHNldFZh
bHVlKHZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQpOwotICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgbV91bml0ID0gb3JpZ2luYWxV
bml0QW5kVHlwZTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHsgfTsKLX0KLQotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFs
dWU6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUp
Ci17Ci0gICAgU1ZHTGVuZ3RoVHlwZSB0eXBlOwotICAgIHN3aXRjaCAodmFsdWUucHJpbWl0aXZl
VHlwZSgpKSB7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjoKLSAgICAg
ICAgdHlwZSA9IExlbmd0aFR5cGVOdW1iZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVM6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlRU1TOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgotICAgICAgICB0eXBlID0gTGVu
Z3RoVHlwZUVYUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZVBYOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ006Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhU
eXBlQ007Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19N
TToKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVNTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZUlO
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6Ci0g
ICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlUFQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QQzoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQQzsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV046Ci0g
ICAgZGVmYXVsdDoKKyAgICBhdXRvIG9yaWdpbmFsTGVuZ3RoVHlwZSA9IG1fbGVuZ3RoVHlwZTsK
KyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOworICAgIGF1dG8gcmVzdWx0ID0gc2V0VmFs
dWUoY29udGV4dCwgdmFsdWVJblVzZXJVbml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAg
aWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsK
LQotICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZp
ZWRVbml0cyh0eXBlLCB2YWx1ZS5mbG9hdFZhbHVlKCkpOwotICAgIHJldHVybiBsZW5ndGg7Ci19
CiAKLVJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZl
VmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxlbmd0aCkKLXsKLSAgICBDU1NQcmltaXRpdmVW
YWx1ZTo6VW5pdFR5cGUgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjsK
LSAgICBzd2l0Y2ggKGxlbmd0aC51bml0VHlwZSgpKSB7Ci0gICAgY2FzZSBMZW5ndGhUeXBlVW5r
bm93bjoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgotICAgICAg
ICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGVuZ3RoVHlwZUVNUzoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
RU1TOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVFWFM6Ci0gICAgICAgIGNz
c1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBMZW5ndGhUeXBlUFg6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1BYOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVDTToKLSAgICAgICAg
Y3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGVuZ3RoVHlwZU1NOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19NTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46Ci0gICAgICAg
IGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIExlbmd0aFR5cGVQVDoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUFQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgotICAgICAg
ICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfTsKLQotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxlbmd0aC52YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKSwgY3NzVHlwZSk7Ci19Ci0KLVNWR0xlbmd0aE1vZGUgU1ZHTGVu
Z3RoVmFsdWU6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKLXsKLSAgICB1c2luZyBNYXAgPSBIYXNoTWFwPFF1YWxpZmll
ZE5hbWUsIFNWR0xlbmd0aE1vZGU+OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYXA+IG1h
cCA9IFtdIHsKLSAgICAgICAgc3RydWN0IE1vZGUgewotICAgICAgICAgICAgY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZTsKLSAgICAgICAgICAgIFNWR0xlbmd0aE1vZGUgbW9kZTsKLSAgICAgICAg
fTsKLSAgICAgICAgc3RhdGljIGNvbnN0IE1vZGUgbW9kZXNbXSA9IHsKLSAgICAgICAgICAgIHsg
U1ZHTmFtZXM6OnhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFt
ZXM6OnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpj
eEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6Y3lBdHRy
LCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpkeEF0dHIsIExl
bmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6ZHlBdHRyLCBMZW5ndGhN
b2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpmeEF0dHIsIExlbmd0aE1vZGVX
aWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6ZnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0
IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9
LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9
LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6eDFBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAg
ICAgICAgICAgIHsgU1ZHTmFtZXM6OngyQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAg
ICAgICB7IFNWR05hbWVzOjp5MUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAg
IHsgU1ZHTmFtZXM6OnkyQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBT
VkdOYW1lczo6cmVmWEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdO
YW1lczo6cmVmWUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFt
ZXM6Om1hcmtlcldpZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNW
R05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAg
ICB7IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAg
ICAgICB7IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAg
ICAgICB9OwotICAgICAgICBNYXAgbWFwOwotICAgICAgICBmb3IgKGF1dG8mIG1vZGUgOiBtb2Rl
cykKLSAgICAgICAgICAgIG1hcC5hZGQobW9kZS5uYW1lLCBtb2RlLm1vZGUpOwotICAgICAgICBy
ZXR1cm4gbWFwOwotICAgIH0oKTsKLSAgICAKLSAgICBhdXRvIHJlc3VsdCA9IG1hcC5nZXQoKS5m
aW5kKGF0dHJOYW1lKTsKLSAgICBpZiAocmVzdWx0ID09IG1hcC5nZXQoKS5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuIExlbmd0aE1vZGVPdGhlcjsKLSAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAg
ICBtX2xlbmd0aFR5cGUgPSBvcmlnaW5hbExlbmd0aFR5cGU7CisgICAgcmV0dXJuIHJlc3VsdC5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBsZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5n
dGhWYWx1ZS5oCmluZGV4IDkyNjYxYjIxZTUzZTcwMGNhMWJhZmVlNTFlMWY3YzVhYzlkNmUzNDUu
LjcwZGI5Njc0MDJhOWRlOThkNGU0NDBiNGY5NmY3ODVlM2I3MzA4Y2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMZW5ndGhWYWx1ZS5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2Rl
Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsMTQxICsyMSw5MCBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNWR0xl
bmd0aENvbnRleHQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNWR1Bh
cnNpbmdFcnJvci5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBRdWFsaWZpZWRO
YW1lOworY2xhc3MgU1ZHTGVuZ3RoQ29udGV4dDsKKworZW51bSBjbGFzcyBTVkdMZW5ndGhUeXBl
IDogdWludDhfdCB7CisgICAgVW5rbm93biA9IDAsCisgICAgTnVtYmVyLAorICAgIFBlcmNlbnRh
Z2UsCisgICAgRW1zLAorICAgIEV4cywKKyAgICBQaXhlbHMsCisgICAgQ2VudGltZXRlcnMsCisg
ICAgTWlsbGltZXRlcnMsCisgICAgSW5jaGVzLAorICAgIFBvaW50cywKKyAgICBQaWNhcworfTsK
KworZW51bSBjbGFzcyBTVkdMZW5ndGhNb2RlIDogdWludDhfdCB7CisgICAgV2lkdGgsCisgICAg
SGVpZ2h0LAorICAgIE90aGVyCit9OwogCi1lbnVtIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9k
ZSB7Ci0gICAgQWxsb3dOZWdhdGl2ZUxlbmd0aHMsCi0gICAgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
CitlbnVtIGNsYXNzIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSA6IHVpbnQ4X3QgeworICAg
IEFsbG93LAorICAgIEZvcmJpZAogfTsKIAogY2xhc3MgU1ZHTGVuZ3RoVmFsdWUgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIC8vIEZJWE1FOiBPbmNlIGFsbCBT
VkdMZW5ndGhWYWx1ZSB1c2VycyB1c2UgTGVuZ3RoIGludGVybmFsbHksIHdlIG1ha2UgdGhpcyBh
IHdyYXBwZXIgZm9yIExlbmd0aC4KLSAgICBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlID0g
TGVuZ3RoTW9kZU90aGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcgPSBTdHJpbmcoKSk7
Ci0gICAgU1ZHTGVuZ3RoVmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdM
ZW5ndGhNb2RlID0gTGVuZ3RoTW9kZU90aGVyLCBTVkdMZW5ndGhUeXBlID0gTGVuZ3RoVHlwZU51
bWJlcik7CisgICAgU1ZHTGVuZ3RoVmFsdWUoU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6
Ok90aGVyLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcgPSBTdHJpbmcoKSk7CisgICAgU1ZH
TGVuZ3RoVmFsdWUoZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5ndGhUeXBlLCBT
VkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOworICAgIFNWR0xlbmd0aFZhbHVl
KGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSA9IFNWR0xlbmd0
aFR5cGU6Ok51bWJlciwgU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKIAot
ICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUoKSBjb25zdDsKLSAgICBTVkdMZW5ndGhNb2RlIHVu
aXRNb2RlKCkgY29uc3Q7CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmLCBTVkdQYXJzaW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdh
dGl2ZVZhbHVlc01vZGUgPSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkFsbG93KTsKKyAg
ICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgYmxlbmQoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20s
IGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jlc3MpOworICAgIAorICAgIHN0
YXRpYyBTVkdMZW5ndGhWYWx1ZSBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0
aXZlVmFsdWUmKTsKKyAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1p
dGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7CiAKLSAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmKSBjb25zdDsKKyAgICBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aFR5cGU7IH0KKyAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aE1vZGU7IH0KIAotICAgIHN0YXRpYyBTVkdMZW5n
dGhWYWx1ZSBjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZSwgY29uc3QgU3RyaW5nJiwgU1ZHUGFyc2lu
Z0Vycm9yJiwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlID0gQWxsb3dOZWdhdGl2ZUxlbmd0
aHMpOworICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzOyAgfQorICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3Ro
VHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlIHx8IG1fbGVuZ3RoVHlwZSA9PSBTVkdM
ZW5ndGhUeXBlOjpFbXMgfHwgbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OkV4czsgfQog
CiAgICAgZmxvYXQgdmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpIGNvbnN0OworICAgIGZs
b2F0IHZhbHVlQXNQZXJjZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGhUeXBlID09IFNW
R0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgPyBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMCA6
IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOyB9CisgICAgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVu
aXRzKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7IH0KKyAgICAKKyAg
ICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2
YWx1ZUZvckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmKSBjb25zdDsKLSAgICBFeGNl
cHRpb25Pcjx2b2lkPiBzZXRWYWx1ZShmbG9hdCwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpOwot
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBm
bG9hdCwgU1ZHTGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSk7CiAKLSAgICBmbG9hdCB2YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsg
fQogICAgIHZvaWQgc2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlKSB7IG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWU7IH0KKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRW
YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiwgZmxvYXQpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlw
ZSwgU1ZHTGVuZ3RoTW9kZSk7CiAKLSAgICBmbG9hdCB2YWx1ZUFzUGVyY2VudGFnZSgpIGNvbnN0
OwotCi0gICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiwgU1ZHTGVuZ3RoTW9kZSk7Ci0gICAg
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBz
aG9ydCwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCwgY29uc3QgU1ZHTGVuZ3Ro
Q29udGV4dCYpOwogCi0gICAgLy8gSGVscGVyIGZ1bmN0aW9ucwotICAgIGJvb2wgaXNSZWxhdGl2
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBhdXRvIHR5cGUgPSB1bml0VHlwZSgpOwotICAgICAg
ICByZXR1cm4gdHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fCB0eXBlID09IExlbmd0aFR5
cGVFTVMgfHwgdHlwZSA9PSBMZW5ndGhUeXBlRVhTOwotICAgIH0KLQotICAgIGJvb2wgaXNaZXJv
KCkgY29uc3QgCi0gICAgewotICAgICAgICByZXR1cm4gIW1fdmFsdWVJblNwZWNpZmllZFVuaXRz
OwotICAgIH0KLQotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBmcm9tQ1NTUHJpbWl0aXZlVmFs
dWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7Ci0gICAg
c3RhdGljIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgIFNWR0xlbmd0aFZhbHVlIGJsZW5kKGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBmbG9hdCBwcm9ncmVzcykgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGF1dG8gdG9UeXBlID0gdW5pdFR5cGUoKTsKLSAgICAgICAgYXV0byBmcm9tVHlwZSA9IGZy
b20udW5pdFR5cGUoKTsKLSAgICAgICAgaWYgKChmcm9tLmlzWmVybygpICYmIGlzWmVybygpKQot
ICAgICAgICAgICAgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24KLSAgICAgICAgICAg
IHx8IHRvVHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bgotICAgICAgICAgICAgfHwgKCFmcm9tLmlz
WmVybygpICYmIGZyb21UeXBlICE9IExlbmd0aFR5cGVQZXJjZW50YWdlICYmIHRvVHlwZSA9PSBM
ZW5ndGhUeXBlUGVyY2VudGFnZSkKLSAgICAgICAgICAgIHx8ICghaXNaZXJvKCkgJiYgZnJvbVR5
cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgJiYgdG9UeXBlICE9IExlbmd0aFR5cGVQZXJjZW50
YWdlKQotICAgICAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmICFpc1plcm8oKSAmJiAoZnJv
bVR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRVhTKSAmJiBm
cm9tVHlwZSAhPSB0b1R5cGUpKQotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAg
IFNWR0xlbmd0aFZhbHVlIGxlbmd0aDsKLQotICAgICAgICBpZiAoZnJvbVR5cGUgPT0gTGVuZ3Ro
VHlwZVBlcmNlbnRhZ2UgfHwgdG9UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlKSB7Ci0gICAg
ICAgICAgICBhdXRvIGZyb21QZXJjZW50ID0gZnJvbS52YWx1ZUFzUGVyY2VudGFnZSgpICogMTAw
OwotICAgICAgICAgICAgYXV0byB0b1BlcmNlbnQgPSB2YWx1ZUFzUGVyY2VudGFnZSgpICogMTAw
OwotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0
cyhMZW5ndGhUeXBlUGVyY2VudGFnZSwgV2ViQ29yZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVy
Y2VudCwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIHJldHVybiBsZW5ndGg7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZnJvbVR5cGUgPT0gdG9UeXBlIHx8IGZyb20uaXNa
ZXJvKCkgfHwgaXNaZXJvKCkgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCBmcm9tVHlw
ZSA9PSBMZW5ndGhUeXBlRVhTKSB7Ci0gICAgICAgICAgICBhdXRvIGZyb21WYWx1ZSA9IGZyb20u
dmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Ci0gICAgICAgICAgICBhdXRvIHRvVmFsdWUgPSB2YWx1
ZUluU3BlY2lmaWVkVW5pdHMoKTsKLSAgICAgICAgICAgIGlmIChpc1plcm8oKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoZnJv
bVR5cGUsIFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpKTsKLSAg
ICAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHRvVHlwZSwgV2ViQ29y
ZTo6YmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcykpOwotICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB7
IH07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgICAgICB9
Ci0KLSAgICAgICAgQVNTRVJUKCFpc1JlbGF0aXZlKCkpOwotICAgICAgICBBU1NFUlQoIWZyb20u
aXNSZWxhdGl2ZSgpKTsKLQotICAgICAgICBTVkdMZW5ndGhDb250ZXh0IG5vblJlbGF0aXZlTGVu
Z3RoQ29udGV4dChudWxscHRyKTsKLSAgICAgICAgYXV0byBmcm9tVmFsdWVJblVzZXJVbml0cyA9
IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmcm9tLnZh
bHVlSW5TcGVjaWZpZWRVbml0cygpLCBmcm9tLnVuaXRNb2RlKCksIGZyb21UeXBlKTsKLSAgICAg
ICAgaWYgKGZyb21WYWx1ZUluVXNlclVuaXRzLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAg
cmV0dXJuIHsgfTsKLQotICAgICAgICBhdXRvIGZyb21WYWx1ZSA9IG5vblJlbGF0aXZlTGVuZ3Ro
Q29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKGZyb21WYWx1ZUluVXNlclVuaXRzLnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCB1bml0TW9kZSgpLCB0b1R5cGUpOwotICAgICAgICBpZiAoZnJv
bVZhbHVlLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAg
ICBmbG9hdCB0b1ZhbHVlID0gdmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Ci0gICAgICAgIGF1dG8g
cmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModG9UeXBlLCBXZWJDb3JlOjpi
bGVuZChmcm9tVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCksIHRvVmFsdWUsIHByb2dyZXNzKSk7
Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
eyB9OwotICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0KKyAgICBFeGNlcHRpb25Pcjx2b2lk
PiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiwgU1ZHTGVu
Z3RoVHlwZSk7CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMg
eyAwIH07Ci0gICAgdW5zaWduZWQgbV91bml0OworICAgIFNWR0xlbmd0aFR5cGUgbV9sZW5ndGhU
eXBlIHsgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyIH07CisgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0
aE1vZGUgeyBTVkdMZW5ndGhNb2RlOjpPdGhlciB9OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+IHsKLSAgICBzdGF0aWMgU1ZHTGVuZ3Ro
VmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIE9wdGlvbmFs
PFNWR0xlbmd0aFZhbHVlPiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcpCi0gICAgewotICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7
Ci0gICAgICAgIGxlbmd0aC5zZXRWYWx1ZUFzU3RyaW5nKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6
Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpLmhhc0V4Y2Vw
dGlvbigpOwotICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgIH0KLSAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBsZW5ndGgpIHsgcmV0dXJuIGxlbmd0aC52
YWx1ZUFzU3RyaW5nKCk7IH0KLX07CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0xl
bmd0aFZhbHVlJiBhLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgYikKK3sKKyAgICByZXR1cm4gYS52
YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA9PSBiLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpICYmIGEu
bGVuZ3RoVHlwZSgpID09IGIubGVuZ3RoVHlwZSgpICYmIGEubGVuZ3RoTW9kZSgpID09IGIubGVu
Z3RoTW9kZSgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiBhLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgYikKK3sKKyAgICByZXR1cm4gYS52YWx1ZUlu
U3BlY2lmaWVkVW5pdHMoKSAhPSBiLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIHx8IGEubGVuZ3Ro
VHlwZSgpICE9IGIubGVuZ3RoVHlwZSgpIHx8IGEubGVuZ3RoTW9kZSgpICE9IGIubGVuZ3RoTW9k
ZSgpOworfQogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwg
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5j
cHAKaW5kZXggNjVmZTU0ZmE4MDQ2MWE5NzlkZjY2MWRhZDFmOTExZGE2MTE5ZTlmYS4uM2M0ZDM5
ZTAyNTFmMzQ4ZTc3YWNjMTFlZGU4Y2YzZGJjOTdhNGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZUVsZW1lbnQuY3BwCkBAIC01NSwxMyArNTUsMTMgQEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICBtX3gxLT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgICAgIG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwog
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgbV95MS0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95MS0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikKLSAg
ICAgICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gyLT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp5MkF0dHIpCi0gICAgICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0
dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmgKaW5kZXggNTgyNzc3YTdhZGY3YzM5YjIxYjZiNzA4ZTBlZGVm
YTRkOGJiYzAzOS4uMzZhMGJiNGMyOWI0MDcyODM5ZGI4YWVjNmYyYTNjNzc3ZjdkZmM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKQEAgLTU2LDEwICs1NiwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsOwogCiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRl
eCA3ZDdkN2MyMzY0ZjJlNGNmNWU4MjRkYmYwMGRjOGQ0NGEyODM3NjEwLi45ZmE5NWNlM2VlYjgy
MzA2ODc2YmY2ZDZiODIzMDcxYjQwYjliNzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNjQsMTMgKzY0LDEzIEBAIHZvaWQgU1ZH
TGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikKLSAgICAgICAgbV94MS0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gxLT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5MUF0dHIpCi0gICAg
ICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feTEtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
Ojp4MkF0dHIpCi0gICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBtX3kyLT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvcikpOworICAgICAgICBtX3kyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAK
ICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgKaW5k
ZXggYjBlNmViNTBkNGVhNjg4MGY2YzkxYjBhYmM1MWQzNjUxYTQ5YjIyMi4uYWVmZTY0Y2UxNDY3
Njc4NGMwZDFhOTI0Y2UzZGZlYWQ3YmFjYzM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaApAQCAtNTksMTAgKzU5LDEwIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQ
cm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUi
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4
IGY1MzQ2MjQwZjAxNjE1NTdiMmI5ZTNmNjQ5NGFhNmYyZTE1ZGNkODkuLjgzMDZmZDc2YmNhNzll
ODAxZTkzNjBmMjM5ZGE3YmU4YjlkNjdmZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5jcHAKQEAgLTc5LDEzICs3OSwxMyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgog
ICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpyZWZYQXR0cikKLSAgICAgICAgbV9yZWZYLT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yKSk7CisgICAgICAgIG1fcmVmWC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVmWUF0dHIpCi0gICAgICAgIG1fcmVm
WS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9yZWZZLT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6bWFy
a2VyV2lkdGhBdHRyKQotICAgICAgICBtX21hcmtlcldpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1fbWFya2VyV2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIpCi0g
ICAgICAgIG1fbWFya2VySGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAg
ICBtX21hcmtlckhlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogCiAgICAg
cmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKaW5kZXggMWM4NmU3NTk3OGVmZTYwMDBh
MTc1YTA0YTE4OGYwYTEyYWZiZjYyNC4uZmY3NmIwNzJiM2ViNTIzM2Q5YWFhZTFlYzEzODYwNjU1
YWYwNjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCkBAIC04OCwxMCAr
ODgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRUeXBl
LCBjb25zdCBTVkdBbmdsZVZhbHVlJik7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVy
dHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3JlZlgg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcmVmWSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fbWFya2VyV2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIjMiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJIZWln
aHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIz
IikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcmVmWCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3JlZlkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFy
a2VyV2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6
OldpZHRoLCAiMyIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX21hcmtlckhlaWdo
dCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCAiMyIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFya2VyVW5pdHMg
eyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHTWFya2VyVW5pdHNTdHJv
a2VXaWR0aCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRBbmdsZT4gbV9vcmllbnRBbmdsZSB7IFNW
R0FuaW1hdGVkQW5nbGU6OmNyZWF0ZSh0aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE9yaWVu
dFR5cGU+IG1fb3JpZW50VHlwZSB7IFNWR0FuaW1hdGVkT3JpZW50VHlwZTo6Y3JlYXRlKHRoaXMs
IFNWR01hcmtlck9yaWVudEFuZ2xlKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKaW5kZXggOGYyYTgwMmFlZTBmYmY0ODc0ZTQ0Njg0ZTJhODQ2YWJmMGZjODY3Yy4uYjdhMGYx
MWJhZmM0MDZhOGI2NmU5MWY5YzA4ZDhiY2FlMDJmMzRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
ZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAg
IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAg
ICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
IAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKaW5kZXggOTU2NDY0OWJjODNjMzQx
MmM0MDY0ZDAzMDNkODJkNTg0YjIzNzk2Zi4uYzNlNDliYWFmYTk4MWRkNTc5N2U1NTRmODk1NjRk
MmQxNGM0NjYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKQEAgLTY0LDEwICs2
NCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICItMTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCwgIjEyMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWln
aHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIx
MjAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICItMTAlIikgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiLTEwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpXaWR0aCwgIjEyMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9o
ZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgIjEyMCUiKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21hc2tV
bml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6
OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVk
RW51bWVyYXRpb24+IG1fbWFza0NvbnRlbnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246
OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0Up
IH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKaW5kZXggY2Rk
YzNhM2U4YjEzODNmMDYwZjQ5MWZkZTYzNmJjOTFlZjY0OWU4Ny4uODM4OWE3MWYxMGMwMWZmZmY2
NzBhZDFjM2I3OTM3NWJjOTRiMWVmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdHRlcm5FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCkBAIC05MywxMyArOTMsMTMgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKICAg
ICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9
PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93
aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7Cisg
ICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVn
YXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Is
IEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsK
IAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKaW5kZXggZDFhZDU5Yzhk
ZTRiZWI5OGEwMDNlOWIxYWZkZjQ2MzFhOGExYWRmYy4uMWU2NjFkN2ZkNDY1YWI5YmI3OGVhZTZj
YTllYTYxZTZkNjA3ZDE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgK
QEAgLTc1LDEwICs3NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVu
Z3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFByb3BlcnR5UmVnaXN0
cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9k
ZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdM
ZW5ndGhNb2RlOjpIZWlnaHQpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1f
cGF0dGVyblVuaXRzIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1Vu
aXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKICAgICBSZWY8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9wYXR0ZXJuQ29udGVudFVuaXRzIHsgU1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9VU0VS
U1BBQ0VPTlVTRSkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0PiBtX3BhdHRl
cm5UcmFuc2Zvcm0geyBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q6OmNyZWF0ZSh0aGlzKSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAppbmRl
eCBiMTFkODc1NDgyNjU0YWE3NTY4OTQ4OTQ5MzU2ZjE0OTZhZWMwNGM1Li5mZTFkNDk4ODA3Y2M5
MGE2YTczMjEyOTA2MzhkZmM5YmY0OWUwYTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNjYsMTcgKzY2LDE3IEBAIHZvaWQgU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9y
OwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikKLSAgICAgICAgbV9jeC0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRo
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpjeUF0dHIpCi0gICAg
ICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExl
bmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVz
OjpyQXR0cikKLSAgICAgICAgbV9yLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdh
dGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3Is
IFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBtX2Z4LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1fZngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAg
IGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZ5QXR0cikKLSAgICAgICAgbV9meS0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwg
dmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9meS0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZyQXR0cikKLSAgICAg
ICAgbV9mci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
CisgICAgICAgIG1fZnItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVn
YXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdF
cnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAppbmRleCBmMzE1ZDk0ODA4YzVkZDhjYmY0MTkyYWJh
MWZkMDc0ZTQ2NWZhMDM5Li44NGYxMTU4OGYzZTI4MWU2ZjZlMDdhNjA5ZDA4OWE5Nzg3MDhhMzll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCkBA
IC02MywxMiArNjMsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiNTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90
aGVyLCAiNTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnggeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fZnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2ZyIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsICIwJSIpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQsICI1MCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9y
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlciwg
IjUwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z4IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1fZnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNW
R0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnIg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyLCAi
MCUiKSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
ZWN0RWxlbWVudC5jcHAKaW5kZXggZWI1Mzk5ODBiNWU5MTE2YjFmMjhiMjYwZjMwOGYwMTVlYTg5
MDYxNy4uZWNhMTNmMDQ2NGU4ZDZmYTRmYWZlZjFlZWFiMTRlYWJiNTdkMWM4YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC01OCwxNyArNTgsMTcgQEAgdm9pZCBTVkdS
ZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7
CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBt
X3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0
cikKLSAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25z
dHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVM
ZW5ndGhzKSk7CisgICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZH
TGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yeS0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAg
ICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZl
VmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVp
Z2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAKICAg
ICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCmluZGV4IGZjMjQ3OTI4NmVlN2JhNDViYzc2
NjhiZWRlODNiNzVmNDY3OWNhNGUuLmM1ZjVmMmMwZTRjMDU1NWE0NmUwYjI1ZmE5MmU1M2Y2OTU4
MjU4MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCkBAIC02MSwxMiArNjEsMTIg
QEAgcHJpdmF0ZToKICAgICBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJl
bmRlcmVyKFJlbmRlclN0eWxlJiYsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwog
CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dp
ZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0
aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnkg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkg
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmNwcAppbmRleCBjNTdjZmZjNTkxYWE4N2QwNGE4NmQ1OTBlM2U2NTcwNDIwZGViOTJjLi5k
NzU3ZWFjNGU0NzI4NmQ2ZDQwMTBjOGNmOGQ1YzczOTYxMDkyNzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0yMzEsMjMgKzIzMSwyMyBAQCB2b2lkIFNWR1NWR0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAg
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChT
VkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsK
LSAgICAgICAgYXV0byBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocyk7CisgICAg
ICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6
Rm9yYmlkKTsKICAgICAgICAgaWYgKHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8fCB2YWx1ZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGRlZmluaXRlbHkgdGhlIGNv
cnJlY3QgYmVoYXZpb3IgZm9yIGEgbWlzc2luZy9yZW1vdmVkIGF0dHJpYnV0ZS4KICAgICAgICAg
ICAgIC8vIE5vdCBzdXJlIGl0J3MgY29ycmVjdCBmb3IgdGhlIGVtcHR5IHN0cmluZyBvciBmb3Ig
c29tZXRoaW5nIHRoYXQgY2FuJ3QgYmUgcGFyc2VkLgotICAgICAgICAgICAgbGVuZ3RoID0gU1ZH
TGVuZ3RoVmFsdWUoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSJfcyk7CisgICAgICAgICAgICBsZW5n
dGggPSBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiX3MpOwogICAg
ICAgICB9CiAgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChsZW5ndGgpOwogICAg
IH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBhdXRv
IGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocyk7CisgICAgICAgIGF1dG8gbGVu
Z3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCk7CiAg
ICAgICAgIGlmIChwYXJzZUVycm9yICE9IE5vRXJyb3IgfHwgdmFsdWUuaXNFbXB0eSgpKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBkZWZpbml0ZWx5IHRoZSBjb3JyZWN0IGJlaGF2
aW9yIGZvciBhIHJlbW92ZWQgYXR0cmlidXRlLgogICAgICAgICAgICAgLy8gTm90IHN1cmUgaXQn
cyBjb3JyZWN0IGZvciB0aGUgZW1wdHkgc3RyaW5nIG9yIGZvciBzb21ldGhpbmcgdGhhdCBjYW4n
dCBiZSBwYXJzZWQuCi0gICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShMZW5ndGhN
b2RlSGVpZ2h0LCAiMTAwJSJfcyk7CisgICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1
ZShTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMDAlIl9zKTsKICAgICAgICAgfQogICAgICAgICBt
X2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKGxlbmd0aCk7CiAgICAgfQpAQCAtNTc2LDE3ICs1
NzYsMTcgQEAgRmxvYXRTaXplIFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydFNpemUoKSBj
b25zdAogCiBib29sIFNWR1NWR0VsZW1lbnQ6Omhhc0ludHJpbnNpY1dpZHRoKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gd2lkdGgoKS51bml0VHlwZSgpICE9IExlbmd0aFR5cGVQZXJjZW50YWdlOwor
ICAgIHJldHVybiB3aWR0aCgpLmxlbmd0aFR5cGUoKSAhPSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50
YWdlOwogfQogCiBib29sIFNWR1NWR0VsZW1lbnQ6Omhhc0ludHJpbnNpY0hlaWdodCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGhlaWdodCgpLnVuaXRUeXBlKCkgIT0gTGVuZ3RoVHlwZVBlcmNlbnRh
Z2U7CisgICAgcmV0dXJuIGhlaWdodCgpLmxlbmd0aFR5cGUoKSAhPSBTVkdMZW5ndGhUeXBlOjpQ
ZXJjZW50YWdlOwogfQogCiBMZW5ndGggU1ZHU1ZHRWxlbWVudDo6aW50cmluc2ljV2lkdGgoKSBj
b25zdAogewotICAgIGlmICh3aWR0aCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRh
Z2UpCisgICAgaWYgKHdpZHRoKCkubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNl
bnRhZ2UpCiAgICAgICAgIHJldHVybiBMZW5ndGgoMCwgRml4ZWQpOwogCiAgICAgU1ZHTGVuZ3Ro
Q29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOwpAQCAtNTk1LDcgKzU5NSw3IEBAIExlbmd0aCBT
VkdTVkdFbGVtZW50OjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0CiAKIExlbmd0aCBTVkdTVkdFbGVt
ZW50OjppbnRyaW5zaWNIZWlnaHQoKSBjb25zdAogewotICAgIGlmIChoZWlnaHQoKS51bml0VHlw
ZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQorICAgIGlmIChoZWlnaHQoKS5sZW5ndGhUeXBl
KCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAgICAgICAgcmV0dXJuIExlbmd0aCgw
LCBGaXhlZCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAppbmRleCA5ZWFjZDgwOTFkYzExOTYxYTk2OTAxOTk3
NjNmYzIwMjVkMjU3OGMwLi5kNDZiNDI4OGZkODJlNDZjNjVmMjZiMWVlYTA3ZDJiZjEwNDA2ZWNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKQEAgLTE2NCwxMCArMTY0LDEwIEBAIHBy
aXZhdGU6CiAgICAgUmVmPFNWR1BvaW50PiBtX2N1cnJlbnRUcmFuc2xhdGUgeyBTVkdQb2ludDo6
Y3JlYXRlKCkgfTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsg
KnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSJfcykgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJfcykgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSJfcykgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMDAlIl9zKSB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAppbmRleCAxODIwYjNjY2QyZTUyNmM5MjE0MzFmNGU0N2Y2MTFjNTkyM2ZmMmE0Li5kNTk4OTFl
Mzc4NzRkMzNhM2E5MGI1OGI5NGViYmM5N2ExMzQ0ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgU1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tCiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAgICAg
ICAgIG1fbGVuZ3RoQWRqdXN0LT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHTGVuZ3RoQWRqdXN0VHlw
ZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp0ZXh0
TGVuZ3RoQXR0cikKLSAgICAgICAgbV90ZXh0TGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9y
LCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV90ZXh0TGVuZ3RoLT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpPdGhl
ciwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlk
KSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwg
dmFsdWUpOwogCkBAIC0xOTcsOSArMTk3LDkgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAKIFNW
R0FuaW1hdGVkTGVuZ3RoJiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRl
ZCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFNWR0xlbmd0aFZhbHVlPiBkZWZhdWx0
VGV4dExlbmd0aChMZW5ndGhNb2RlT3RoZXIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
VkdMZW5ndGhWYWx1ZT4gZGVmYXVsdFRleHRMZW5ndGgoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwog
ICAgIGlmIChtX3RleHRMZW5ndGgtPmJhc2VWYWwoKS0+dmFsdWUoKSA9PSBkZWZhdWx0VGV4dExl
bmd0aCkKLSAgICAgICAgbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCkubmV3VmFsdWVT
cGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7
CisgICAgICAgIG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpID0geyBnZXRDb21wdXRl
ZFRleHRMZW5ndGgoKSwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyIH07CiAgICAgcmV0dXJuIG1fdGV4
dExlbmd0aDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250
ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5o
CmluZGV4IDU4YTdkMzc3MTQ4N2JlZDNlNjcwOTMwYjk1YzZmZmE4YjU2MWI1YzguLmRiMGZlZjIz
ZjE2NjAyZTRlM2Y3OWZiMmI4Y2NjNTJlNTJlOTI5ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKQEAgLTEwNyw5ICsxMDcsOSBAQCBwcm90ZWN0ZWQ6CiBw
cml2YXRlOgogICAgIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KIAotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV90ZXh0TGVuZ3RoIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3RleHRMZW5ndGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uPiBtX2xlbmd0aEFkanVzdCB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0
aGlzLCBTVkdMZW5ndGhBZGp1c3RTcGFjaW5nKSB9OwotICAgIFNWR0xlbmd0aFZhbHVlIG1fc3Bl
Y2lmaWVkVGV4dExlbmd0aCB7IExlbmd0aE1vZGVPdGhlciB9OworICAgIFNWR0xlbmd0aFZhbHVl
IG1fc3BlY2lmaWVkVGV4dExlbmd0aCB7IFNWR0xlbmd0aE1vZGU6Ok90aGVyIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCmluZGV4IDc2ZmJiYTc5MjZmY2QyMDE5MGVmZTJmN2MxNWViZjdiZDE3OGYyODcuLmQ5
ZmUxZjQ3NGRkNmMwZjdjNmYzNjQ0ZWM1YmViNWU4NzBhZjRjMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU1ZHVGV4
dFBhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwog
CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikKLSAgICAgICAgbV9z
dGFydE9mZnNldC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3N0YXJ0T2Zm
c2V0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09
IFNWR05hbWVzOjptZXRob2RBdHRyKSB7CiAgICAgICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBw
cm9wZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPjo6
ZnJvbVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAppbmRleCA1Njc3ZjViZWIyMzdmYzM4MmI0
YzBkMmViYmE4ZGJhMmU0YTlkMjg1Li43OGYwN2YwYTBhZGI0NDNiYzQxZGJjMTQ1YmY0MDRmNDQx
N2JiMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCkBAIC0xNDQs
NyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBj
b25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5
IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fc3RhcnRPZmZzZXQgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fc3RhcnRPZmZzZXQgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKSB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBtX21ldGhvZCB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0
aGlzLCBTVkdUZXh0UGF0aE1ldGhvZEFsaWduKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1l
cmF0aW9uPiBtX3NwYWNpbmcgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywg
U1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QpIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKaW5kZXggMGU3MTM0YzEzODM1N2M2Y2RiM2RiNTdj
MWQ2MjQyZjMxMzE3Zjk3Ny4uMzc5YzVhNjY5OTM3MGVkZTU2NGZmM2JmMTc2YTRiODI4NDM5YjZl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5o
CkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lz
dHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0
eVJlZ2lzdHJ5OyB9CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7
ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV94IHsgU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aExpc3Q+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dD4gbV9keCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVX
aWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX2R5IHsgU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0PiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keCB7
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRo
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1fZHkgeyBTVkdBbmltYXRlZExl
bmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiAgICAgUmVm
PFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV9yb3RhdGUgeyBTVkdBbmltYXRlZE51bWJlckxpc3Q6
OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmlu
ZGV4IDlhNzI5ODQyZWQyZDliNjY2OTkxMDBlYjc1ZGQzMThiNTgyYWQ5ZTcuLmFkOTIzODQxMzVm
YTI4ZGQ1Mzg5ZTg3ODk2NDRlZjk1YjdlN2Y4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAKQEAgLTgwLDEzICs4MCwxMyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAgICAg
U1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
KyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lk
dGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAg
ICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0
aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6
aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBG
b3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAK
ICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAppbmRleCAxZjUyYmMxZGNmMGQyMTkyMzA1
YTY1YWY4MDViZTZkMzFkMDcwY2ZiLi5hYjU5Y2QzYzkxNjMyZTY0YWI2ODM4ZTc0YTg3NTk1YzM3
MGZiODI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKQEAgLTk2LDEwICs5NiwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZURlcGVuZGVudFNoYWRvd1RyZWVzKCk7CiAK
ICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogCiAgICAgYm9vbCBtX2hh
dmVGaXJlZExvYWRFdmVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3NoYWRvd1RyZWVOZWVkc1Vw
ZGF0ZSB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAppbmRleCBkMzI2Nzhj
MWNkMGUzZTBkMjMyMzgwZGZiMDI0ZTMzMjlhNzY0YjkzLi45OWIyYWE5MTMxNjNkOWUwZGQ4YzM3
M2Y0NjdmZGQ5NjQ0ZmJhOGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCkBAIC0x
MjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1
dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxj
TW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0
IGZpbmFsCiAgICAgewotICAgICAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBwcm9wZXJ0
eShvd25lciktPmJhc2VWYWwoKS0+dmFsdWUoKS51bml0TW9kZSgpOworICAgICAgICBTVkdMZW5n
dGhNb2RlIGxlbmd0aE1vZGUgPSBwcm9wZXJ0eShvd25lciktPmJhc2VWYWwoKS0+dmFsdWUoKS5s
ZW5ndGhNb2RlKCk7CiAgICAgICAgIHJldHVybiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpj
cmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCkBA
IC0xNDYsNyArMTQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
U1ZHQXR0cmlidXRlQW5pbWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0
aXZlKSBjb25zdCBmaW5hbAogICAgIHsKLSAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3Ro
TGlzdEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmlt
YXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9k
ZVdpZHRoKTsKKyAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpj
cmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOwog
ICAgIH0KIAogICAgIHZvaWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVy
LCBTVkdBdHRyaWJ1dGVBbmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVy
dHlEZXNjcmlwdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmE4MmM2MThk
NmJiZTQ1NzY3NDBjYTY4NTAzZTE4NDJlYjljZmNlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0
cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNWR0VsZW1lbnQ7Ci0KLXN0
cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24geyAgICAgICAgICAgIAotICAgIC8v
IEVtcHR5IHZhbHVlCi0gICAgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uKCkKLSAgICAg
ICAgOiBtX2VsZW1lbnQobnVsbHB0cikKLSAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUobnVsbHB0
cikKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gRGVsZXRlZCB2YWx1ZQotICAgIFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCi0gICAg
ICAgIDogbV9lbGVtZW50KHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHRWxlbWVudCo+KC0xKSkKLSAgICB7
Ci0gICAgfQotCi0gICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9lbGVtZW50ID09IHJlaW50ZXJwcmV0X2Nhc3Q8U1ZHRWxlbWVu
dCo+KC0xKTsKLSAgICB9Ci0KLSAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24oU1ZH
RWxlbWVudCogZWxlbWVudCwgY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSkKLSAgICAg
ICAgOiBtX2VsZW1lbnQoZWxlbWVudCkKLSAgICAgICAgLCBtX2F0dHJpYnV0ZU5hbWUoYXR0cmli
dXRlTmFtZS5pbXBsKCkpCi0gICAgewotICAgICAgICBBU1NFUlQobV9lbGVtZW50KTsKLSAgICAg
ICAgQVNTRVJUKG1fYXR0cmlidXRlTmFtZSk7Ci0gICAgfQotCi0gICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiYgb3RoZXIpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gbV9lbGVtZW50ID09IG90aGVyLm1fZWxlbWVudCAmJiBtX2F0dHJp
YnV0ZU5hbWUgPT0gb3RoZXIubV9hdHRyaWJ1dGVOYW1lOwotICAgIH0KLQotICAgIFNWR0VsZW1l
bnQqIG1fZWxlbWVudDsKLSAgICBBdG9tU3RyaW5nSW1wbCogbV9hdHRyaWJ1dGVOYW1lOwotfTsK
LQotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2ggewotICAgIHN0YXRp
YyB1bnNpZ25lZCBoYXNoKGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiYga2V5
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxzaXplb2Yo
U1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uKT4oJmtleSk7Ci0gICAgfQotCi0gICAgc3Rh
dGljIGJvb2wgZXF1YWwoY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uJiBhLCBj
b25zdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24mIGIpCi0gICAgewotICAgICAgICBy
ZXR1cm4gYSA9PSBiOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBh
cmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKLX07Ci0KLXN0cnVjdCBTVkdBbmltYXRlZFByb3Bl
cnR5RGVzY3JpcHRpb25IYXNoVHJhaXRzIDogV1RGOjpTaW1wbGVDbGFzc0hhc2hUcmFpdHM8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uPiB7IH07Ci0gCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRp
b25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCmluZGV4IDkyMzNhZTky
Zjk1MjIyMWRiZTkwMzkwZDVmOGE0NWQwYjUzNjQzYWIuLjYxYTFkMDM2Y2ZkYTUyYmE0ZWE4Yjcx
ZTUxYmIyYzdiMTdhZGJjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1w
bC5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTVkdMZW5ndGhDb250ZXh0
IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCB0b0l0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTVkdMZW5ndGhUeXBl
IHVuaXRUeXBlID0gKGkgPCBmcm9tSXRlbXMuc2l6ZSgpICYmIHByb2dyZXNzIDwgMC41ID8gZnJv
bUl0ZW1zIDogdG9JdGVtcylbaV0tPnZhbHVlKCkudW5pdFR5cGUoKTsKKyAgICAgICAgICAgIFNW
R0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSA9IChpIDwgZnJvbUl0ZW1zLnNpemUoKSAmJiBwcm9ncmVz
cyA8IDAuNSA/IGZyb21JdGVtcyA6IHRvSXRlbXMpW2ldLT52YWx1ZSgpLmxlbmd0aFR5cGUoKTsK
IAogICAgICAgICAgICAgZmxvYXQgZnJvbSA9IGkgPCBmcm9tSXRlbXMuc2l6ZSgpID8gZnJvbUl0
ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQpIDogMDsKICAgICAgICAgICAgIGZs
b2F0IHRvID0gdG9JdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKQEAgLTc3
LDcgKzc3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgZmxvYXQgdmFsdWUgPSBhbmltYXRlZEl0
ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogCiAgICAgICAgICAgICB2YWx1
ZSA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCB0bywgdG9BdEVu
ZE9mRHVyYXRpb24sIHZhbHVlKTsKLSAgICAgICAgICAgIGFuaW1hdGVkSXRlbXNbaV0tPnZhbHVl
KCkuc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgdmFsdWUsIGxlbmd0aE1vZGUsIHVuaXRUeXBlKTsK
KyAgICAgICAgICAgIGFuaW1hdGVkSXRlbXNbaV0tPnZhbHVlKCkuc2V0VmFsdWUobGVuZ3RoQ29u
dGV4dCwgdmFsdWUsIGxlbmd0aFR5cGUsIGxlbmd0aE1vZGUpOwogICAgICAgICB9CiAgICAgfQog
CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBmcm9tSXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiBmcm9tVmFsdWUgPSBmcm9tSXRlbXNbaV0tPnZhbHVlKCk7CiAgICAgICAgICAgICBT
VkdMZW5ndGhWYWx1ZSYgdG9WYWx1ZSA9IHRvSXRlbXNbaV0tPnZhbHVlKCk7Ci0gICAgICAgICAg
ICB0b1ZhbHVlLnNldFZhbHVlKHRvVmFsdWUudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tVmFs
dWUudmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQpOworICAgICAgICAgICAgdG9W
YWx1ZS5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCB0b1ZhbHVlLnZhbHVlKGxlbmd0aENvbnRleHQp
ICsgZnJvbVZhbHVlLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKICAgICAgICAgfQogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25B
ZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgKaW5kZXggMjhjNTEyYTA5
YTc0OWRiMjViZDczZGFjYmJhZDZkNDg5ZGI3YTM1Mi4uY2VlMTVlNGM2YTEzNjRhYjE2NTA5Njdk
NzhkZGZiNTZmNzNkODE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbklt
cGwuaApAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFuaW1hdGUoU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50
LCBTVkdMZW5ndGhWYWx1ZSYgYW5pbWF0ZWQpCiAgICAgewogICAgICAgICBTVkdMZW5ndGhDb250
ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIFNWR0xlbmd0aFR5cGUg
dW5pdFR5cGUgPSBwcm9ncmVzcyA8IDAuNSA/IG1fZnJvbS51bml0VHlwZSgpIDogbV90by51bml0
VHlwZSgpOworICAgICAgICBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUgPSBwcm9ncmVzcyA8IDAu
NSA/IG1fZnJvbS5sZW5ndGhUeXBlKCkgOiBtX3RvLmxlbmd0aFR5cGUoKTsKIAogICAgICAgICBm
bG9hdCBmcm9tID0gKG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1h
dGVkIDogbV9mcm9tKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAgICAgICAgZmxvYXQgdG8gPSBt
X3RvLnZhbHVlKGxlbmd0aENvbnRleHQpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgZmxvYXQgdmFsdWUgPSBhbmltYXRlZC52YWx1ZShsZW5ndGhDb250ZXh0KTsKIAogICAg
ICAgICB2YWx1ZSA9IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCB0
bywgdG9BdEVuZE9mRHVyYXRpb24sIHZhbHVlKTsKLSAgICAgICAgYW5pbWF0ZWQgPSB7IGxlbmd0
aENvbnRleHQsIHZhbHVlLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBlIH07CisgICAgICAgIGFuaW1h
dGVkID0geyBsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwgbV9sZW5ndGhNb2RlIH07
CiAgICAgfQogCiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1l
bnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykg
Y29uc3Qgb3ZlcnJpZGUKQEAgLTIwMCw3ICsyMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRk
RnJvbUFuZFRvVmFsdWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7
Ci0gICAgICAgIG1fdG8uc2V0VmFsdWUobV90by52YWx1ZShsZW5ndGhDb250ZXh0KSArIG1fZnJv
bS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CisgICAgICAgIG1fdG8uc2V0
VmFsdWUobGVuZ3RoQ29udGV4dCwgbV90by52YWx1ZShsZW5ndGhDb250ZXh0KSArIG1fZnJvbS52
YWx1ZShsZW5ndGhDb250ZXh0KSk7CiAgICAgfQogCiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0
aE1vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1
ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgKaW5kZXggZmQzZGM5NjBmZmE3ZDMxMjkwMTM3
ZDQ1MmNkZTFhMjg3OWE3ZWRiZC4uNjI3Njc4NDk5NDgxNTY5NWUxN2NkYjMwOWU1ODQ1OWY2YmU4
OGJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQ
cm9wZXJ0eUFuaW1hdG9ySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVz
L1NWR1ZhbHVlUHJvcGVydHlBbmltYXRvckltcGwuaApAQCAtMzksMTMgKzM5LDEzIEBAIGNsYXNz
IFNWR0xlbmd0aEFuaW1hdG9yIGZpbmFsIDogcHVibGljIFNWR1ZhbHVlUHJvcGVydHlBbmltYXRv
cjxTVkdMZW5ndGgsIFNWR0FuCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0
eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBp
c0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gbWFr
ZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0
eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBM
ZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmlt
YXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlOjpPdGhlcik7
CiAgICAgfQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgU3RyaW5nIGJhc2VWYWx1ZSA9IGNvbXB1dGVDU1NQcm9wZXJ0
eVZhbHVlKHRhcmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxvY2Fs
TmFtZSgpKSk7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIHZhbHVlKExlbmd0aE1vZGVPdGhlcik7
CisgICAgICAgIFNWR0xlbmd0aFZhbHVlIHZhbHVlKFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAg
ICAgICAgaWYgKCF2YWx1ZS5zZXRWYWx1ZUFzU3RyaW5nKGJhc2VWYWx1ZSkuaGFzRXhjZXB0aW9u
KCkpCiAgICAgICAgICAgICBtX3Byb3BlcnR5LT5zZXRWYWx1ZSh2YWx1ZSk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxp
c3RBbmltYXRvckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKaW5kZXggYWU5NGUyOWVkNGI4NjEzYjk5Y2Q5NzQ4
NmVkMGIwNjI4MjZjMDJkOC4uMTU5OGY1NjZiMjljNDEzOGRjMjRkOWJmODM4MDlmZjU5NGFjNmQ1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9w
ZXJ0eUxpc3RBbmltYXRvckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIFNWR0xlbmd0aExpc3RBbmltYXRvciBmaW5hbCA6IHB1YmxpYyBTVkdWYWx1ZVByb3BlcnR5
TGlzdEFuaW1hdG9yPFNWR0xlbmd0CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9w
ZXJ0eSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9v
bCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4g
bWFrZVVuaXF1ZTxTVkdMZW5ndGhMaXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUo
cHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRp
dGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVu
Z3RoTGlzdEFuaW1hdG9yPihhdHRyaWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0
aW9uTW9kZSwgY2FsY01vZGUsIGlzQWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1v
ZGU6Ok90aGVyKTsKICAgICB9CiAKICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQpIG92ZXJyaWRlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378682</attachid>
            <date>2019-09-12 15:28:10 -0700</date>
            <delta_ts>2019-09-12 16:17:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190912152809.patch</filename>
            <type>text/plain</type>
            <size>131454</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOS0xMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xlbmd0
aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0ZWFk
IG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLCBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgaGFk
IG9uZSB1bnNpZ25lZCB0byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhUeXBlLgor
ICAgICAgICBJdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCA0IGJpdHMg
b2YgdGhpcyB1bnNpZ25lZCB0byB0aGUKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSB3aGlsZSBpdCBs
ZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0aFR5cGUuCisKKyAgICAgICAgVGhpcyB3aWxsIG5v
dCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9kZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUgbWFkZSBv
ZgorICAgICAgICBzaXplIHVpbnRfOC4KKworICAgICAgICBBbHNvIGluIHRoaXMgcGF0Y2g6CisK
KyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIGlzIG1hZGUgZW51bSBjbGFz
cy4KKworICAgICAgICAtLSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoKSBpcyBtb3ZlZCB0byBTVkdM
ZW5ndGhWYWx1ZS5jcHAgc28gd2UgZG8gbm90CisgICAgICAgICAgIG5lZWQgdG8gaW5jbHVkZSBT
VkdMZW5ndGhDb250ZXh0LmggaW4gU1ZHTGVuZ3RoVmFsdWUuaC4KKworICAgICAgICAtLSBTVkdM
ZW5ndGhUeXBlIGFuZCBTVkdMZW5ndGhNb2RlIGFyZSBtb3ZlZCB0byBTVkdMZW5ndGhWYWx1ZS5o
LiBJbnN0ZWFkCisgICAgICAgICAgIG9mIGhhdmluZyBTVkdMZW5ndGhWYWx1ZS5oIGluY2x1ZGVz
IFNWR0xlbmd0aENvbnR0ZXh0LmgsIHRoZSBvcHBvc2l0ZQorICAgICAgICAgICB3aWxsIGhhcHBl
bi4KKworICAgICAgICAtLSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpcyBkZWxl
dGVkLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgICAgd2l0aCB0aGUgU1ZH
IHRlYXIgb2ZmIG9iamVjdHMgcmVtb3ZhbC4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdBbmdsZVZhbHVlPiBhbmQgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Cisg
ICAgICAgICAgIGFyZSBkZWxldGVkLiBUaGV5IHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCB3aXRo
IFNWR0FuaW1hdGVkVHlwZSByZW1vdmFsLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFZhbHVlOjps
ZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBpcyBkZWxldGVkLiBJdAorICAg
ICAgICAgICB3YXMgb25seSBjYWxsZWQgZnJvbSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhW
YWx1ZT4uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRM
YXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2Vy
bmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJhZGlhbEdy
YWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojppbml0aWFsVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHQW5n
bGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OnVuaXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1Vz
ZXJVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252
ZXJ0VmFsdWVGcm9tVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0
aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBlcmNl
bnRhZ2VUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQu
aDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3Zn
L1NWR0xlbmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlbmd0aFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhU
eXBlVG9QcmltaXRpdmVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpT
VkdMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpibGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6c3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0VHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dW5pdE1vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OnZhbHVl
QXNQZXJjZW50YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0
aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoVmFsdWU6OmlzWmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5n
dGhWYWx1ZTo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhW
YWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVu
Z3RoVmFsdWU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6aW5pdGlhbFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0
aFZhbHVlPjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFzSW50
cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFz
SW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6
OmludHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6
OmludHJpbnNpY0hlaWdodCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlv
bkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5jdGlv
bjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRp
dmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uTGVu
Z3RoRnVuY3Rpb246OmFuaW1hdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1
ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorCiAyMDE5LTA5LTEyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLVFJdIERyb3AgVGVzdFJ1bm5lci5zZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkX0RFUFJFQ0FURUQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5ODE3
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDYgQEAKIAkJMDg3NTU4QzYxM0I0QTU3RDAwRjQ5
MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NTU4QzQxM0I0QTU3RDAwRjQ5MzA3IC8q
IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQ
YWludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODg1MDY4MDExREEwNDVCMDAxODJC
OTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwODhBMEUwNjEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGRDEyNkVGMURCMDA5
NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4
RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlU
cmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwODhDMkY3QTEyMzkwMDgxMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEMyRjc2MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovOyB9OwogCQkwODk1
ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OTU4MjU0MEU4NTdBN0UwMEY4MkM4MyAvKiBJ
bWFnZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01NTM2LDcgKzU1MzUsNiBAQAogCQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyog
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50SW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludFBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4OEEwREZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdB
bmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eVRyYWl0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhDMkY3NTEyMzkwMDgwMDAzRDY1Q0Ug
LyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDk2LDcgKzE2
MDk0LDYgQEAKIAkJCQk1NUVFNTM1ODIyM0IyOUY5MDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFjY2Vzc29ySW1wbC5oICovLAogCQkJCTU1RUU1MzVBMjIzQjI5RkIwMEZCQTk0NCAvKiBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCAqLywKIAkJCQk1NUVFNTM1NjIyM0IyOUY3MDBG
QkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oICovLAotCQkJCTA4OEEw
REZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAq
LywKIAkJCQk1NUVFNTM1QzIyM0IyQTBEMDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUlt
cGwuaCAqLywKIAkJCQk3MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QuaCAqLywKIAkJCQk1NUJFMDI1RTIyM0IyOUM0MDAzMkYwOEEgLyogU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBY2Nlc3Nvci5oICovLApAQCAtMjU1NzksMTAgKzI1NTc2LDEwIEBACiAJ
CQkJQzIzNEE5QUUyMUU5MkMxQTAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlv
bnMuaCAqLywKIAkJCQkxQzg0MEI5QjIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmNw
cCAqLywKIAkJCQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmggKi8s
Ci0JCQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJl
bmNlcy5jcHAgKi8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tU
ZXh0dXJlUmVmZXJlbmNlcy5oICovLAogCQkJCTUyNEJENDdFMjMyNzdFMTUwMDhGNTZDMSAvKiBX
SExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwICovLAogCQkJCTUyNEJENDgwMjMyNzdFMTYwMDhG
NTZDMSAvKiBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCAqLywKKwkJCQkxQzI4MUM2RDIyQjg3
Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLywKKwkJCQkx
QzI4MUM2RTIyQjg3Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgg
Ki8sCiAJCQkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmgg
Ki8sCiAJCQkJMUM4NkNBNEIyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lv
bnMuY3BwICovLAogCQkJCTFDODZDQTRDMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVE
aW1lbnNpb25zLmggKi8sCkBAIC0zMTc4Myw3ICszMTc4MCw2IEBACiAJCQkJMjREOTEyQjgxM0NB
OUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVQYWdl
OwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgU3R5bGVk
RWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3Mg
Vmlld3BvcnRTdHlsZVJlc29sdmVyOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1
LDcgKzI4NSw3IEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94IGJsZW5kRnVuYyhjb25zdCAKIAog
c3RhdGljIGlubGluZSBTVkdMZW5ndGhWYWx1ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gdG8uYmxlbmQoZnJv
bSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgIHJldHVybiBTVkdMZW5n
dGhWYWx1ZTo6YmxlbmQoZnJvbSwgdG8sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3Mp
KTsKIH0KIAogc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGJsZW5kRnVuYyhj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZh
bHVlPiYgZnJvbSwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgdG8sIGRvdWJsZSBwcm9n
cmVzcykKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhW
YWx1ZT4gYmxlCiAgICAgfQogICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gcmVzdWx0KHJlc3Vs
dExlbmd0aCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRMZW5ndGg7ICsraSkK
LSAgICAgICAgcmVzdWx0W2ldID0gdG9baSAlIHRvTGVuZ3RoXS5ibGVuZChmcm9tW2kgJSBmcm9t
TGVuZ3RoXSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgICAgICByZXN1
bHRbaV0gPSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoZnJvbVtpICUgZnJvbUxlbmd0aF0sIHRvW2kg
JSB0b0xlbmd0aF0sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgg
KzgyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlck1pZFJlc291
cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJr
ZXJFbmRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIE1hc2tUeXBl
IGluaXRpYWxNYXNrVHlwZSgpIHsgcmV0dXJuIE1hc2tUeXBlOjpMdW1pbmFuY2U7IH0KLSAgICBz
dGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpOwotICAgIHN0
YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsS2VybmluZygpOworICAgIHN0YXRpYyBTVkdMZW5n
dGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkgeyByZXR1cm4gU1ZHTGVuZ3RoVmFs
dWUoMCwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKTsgfQorICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBpbml0aWFsS2VybmluZygpIHsgcmV0dXJuIFNWR0xlbmd0aFZhbHVlKDAsIFNWR0xlbmd0aFR5
cGU6Ok51bWJlcik7IH0KIAogICAgIC8vIFNWRyBDU1MgUHJvcGVydHkgc2V0dGVycwogICAgIHZv
aWQgc2V0QWxpZ25tZW50QmFzZWxpbmUoQWxpZ25tZW50QmFzZWxpbmUgdmFsKSB7IG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odmFsKTsgfQpAQCAtMjU2LDIwICsyNTYsNiBAQCBwcml2YXRlOgogICAgIERhdGFSZWY8
U3R5bGVSZXNvdXJjZURhdGE+IG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogfTsKIAotaW5s
aW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsQmFzZWxpbmVTaGlmdFZh
bHVlKCkKLXsKLSAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsK
LX0KLQotaW5saW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsS2Vybmlu
ZygpCi17Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgIGxlbmd0aC5uZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOwotICAgIHJldHVybiBsZW5ndGg7Ci19
Ci0KIGlubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDeChjb25zdCBMZW5ndGgmIGxlbmd0
aCkKIHsKICAgICBpZiAoIShtX2xheW91dERhdGEtPmN4ID09IGxlbmd0aCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAJKHJl
dmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
RWxsaXBzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDggKzc5LDggQEAgdm9pZCBSZW5kZXJT
VkdFbGxpcHNlOjpjYWxjdWxhdGVSYWRpaUFuZAogewogICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dCgmZ3JhcGhpY3NFbGVtZW50KCkpOwogICAgIG1fY2VudGVyID0gRmxvYXRQb2lu
dCgKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxl
KCkuY3goKSwgTGVuZ3RoTW9kZVdpZHRoKSwKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZv
ckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3koKSwgTGVuZ3RoTW9kZUhlaWdodCkpOworICAg
ICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5jeCgp
LCBTVkdMZW5ndGhNb2RlOjpXaWR0aCksCisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN5KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpOwog
ICAgIGlmIChpczxTVkdDaXJjbGVFbGVtZW50PihncmFwaGljc0VsZW1lbnQoKSkpIHsKICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2
Z1N0eWxlKCkucigpKTsKICAgICAgICAgbV9yYWRpaSA9IEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1
cyk7CkBAIC04OSw4ICs4OSw4IEBAIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFk
aWlBbmQKIAogICAgIEFTU0VSVChpczxTVkdFbGxpcHNlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50
KCkpKTsKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKAotICAgICAgICBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpLAot
ICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5y
eSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwKKyAg
ICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnko
KSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAkocmV2aXNpb24gMjQ5
ODE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0
ZVNoYXBlRnJvbUVsZW1lCiAgICAgbV91c2VQYXRoRmFsbGJhY2sgPSBmYWxzZTsKIAogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgmcmVjdEVsZW1lbnQoKSk7Ci0gICAgRmxvYXRT
aXplIGJvdW5kaW5nQm94U2l6ZShsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCku
d2lkdGgoKSwgTGVuZ3RoTW9kZVdpZHRoKSwgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChz
dHlsZSgpLmhlaWdodCgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgRmxvYXRTaXplIGJvdW5k
aW5nQm94U2l6ZShsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkud2lkdGgoKSwg
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgpLCBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuaGVpZ2h0KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpOwogCiAgICAgLy8gRWxlbWVudCBp
cyBpbnZhbGlkIGlmIGVpdGhlciBkaW1lbnNpb24gaXMgbmVnYXRpdmUuCiAgICAgaWYgKGJvdW5k
aW5nQm94U2l6ZS53aWR0aCgpIDwgMCB8fCBib3VuZGluZ0JveFNpemUuaGVpZ2h0KCkgPCAwKQpA
QCAtNzQsOCArNzQsOCBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0ZVNoYXBlRnJvbUVsZW1l
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgp
LngoKSwgTGVuZ3RoTW9kZVdpZHRoKSwKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxl
bmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkueSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSksCisgICAgbV9m
aWxsQm91bmRpbmdCb3ggPSBGbG9hdFJlY3QoRmxvYXRQb2ludChsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS54KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwK
KyAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCku
eSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKSwKICAgICAgICAgYm91bmRpbmdCb3hTaXplKTsK
IAogICAgIC8vIFRvIGRlY2lkZSBpZiB0aGUgc3Ryb2tlIGNvbnRhaW5zIGEgcG9pbnQgd2UgY3Jl
YXRlIHR3byByZWN0cyB3aGljaCByZXByZXNlbnQgdGhlIGlubmVyIGFuZApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAJKHJldmlzaW9uIDI0OTgx
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxl
bWVudChjb25zdCAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVsZW1lbnQp
OwogICAgIGZsb2F0IHIgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0
eWxlKCkucigpKTsKICAgICBpZiAociA+IDApIHsKLSAgICAgICAgZmxvYXQgY3ggPSBsZW5ndGhD
b250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3goKSwgTGVuZ3RoTW9kZVdp
ZHRoKTsKLSAgICAgICAgZmxvYXQgY3kgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnN2Z1N0eWxlKCkuY3koKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgICAgIGZsb2F0IGN4
ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN4KCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICAgICAgZmxvYXQgY3kgPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3koKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
KTsKICAgICAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChjeCAtIHIsIGN5IC0gciwgciAq
IDIsIHIgKiAyKSk7CiAgICAgfQogICAgIHJldHVybiBwYXRoOwpAQCAtNjcsMTcgKzY3LDE3IEBA
IHN0YXRpYyBQYXRoIHBhdGhGcm9tRWxsaXBzZUVsZW1lbnQoY29uc3QKIAogICAgIGF1dG8mIHN0
eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250
ZXh0KCZlbGVtZW50KTsKLSAgICBmbG9hdCByeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpOworICAgIGZsb2F0IHJ4
ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ4KCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKTsKICAgICBpZiAocnggPD0gMCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGZsb2F0IHJ5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5z
dmdTdHlsZSgpLnJ5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgIGZsb2F0IHJ5ID0gbGVuZ3Ro
Q29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ5KCksIFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCk7CiAgICAgaWYgKHJ5IDw9IDApCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBQYXRoIHBhdGg7Ci0gICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnN2Z1N0eWxlKCkuY3goKSwgTGVuZ3RoTW9kZVdpZHRoKTsKLSAgICBmbG9hdCBjeSA9
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBMZW5n
dGhNb2RlSGVpZ2h0KTsKKyAgICBmbG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUuc3ZnU3R5bGUoKS5jeCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7CisgICAgZmxv
YXQgY3kgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3ko
KSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0
KGN4IC0gcngsIGN5IC0gcnksIHJ4ICogMiwgcnkgKiAyKSk7CiAgICAgcmV0dXJuIHBhdGg7CiB9
CkBAIC0xMzgsMTkgKzEzOCwxOSBAQCBzdGF0aWMgUGF0aCBwYXRoRnJvbVJlY3RFbGVtZW50KGNv
bnN0IFNWCiAKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIFNWR0xl
bmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgmZWxlbWVudCk7Ci0gICAgZmxvYXQgd2lkdGggPSBs
ZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLndpZHRoKCksIExlbmd0aE1vZGVXaWR0
aCk7CisgICAgZmxvYXQgd2lkdGggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
LndpZHRoKCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKICAgICBpZiAod2lkdGggPD0gMCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGZsb2F0IGhlaWdodCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuaGVpZ2h0KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgIGZsb2F0
IGhlaWdodCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuaGVpZ2h0KCksIFNW
R0xlbmd0aE1vZGU6OkhlaWdodCk7CiAgICAgaWYgKGhlaWdodCA8PSAwKQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIGZsb2F0IHggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkueCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAg
IGZsb2F0IHkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
eSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsKLSAgICBmbG9hdCByeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAg
IGZsb2F0IHJ5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LnJ5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgIGZsb2F0IHggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkueCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7
CisgICAgZmxvYXQgeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5
bGUoKS55KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCk7CisgICAgZmxvYXQgcnggPSBsZW5ndGhD
b250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgpOworICAgIGZsb2F0IHJ5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChz
dHlsZS5zdmdTdHlsZSgpLnJ5KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCk7CiAgICAgYm9vbCBo
YXNSeCA9IHJ4ID4gMDsKICAgICBib29sIGhhc1J5ID0gcnkgPiAwOwogICAgIGlmIChoYXNSeCB8
fCBoYXNSeSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lQmFzZWxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcAkocmV2aXNpb24gMjQ5ODE3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFz
ZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGZsb2F0IFNWR1RleHRM
YXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3UKIHsKICAgICBpZiAoc3R5bGUuYmFzZWxpbmVTaGlm
dCgpID09IEJhc2VsaW5lU2hpZnQ6Okxlbmd0aCkgewogICAgICAgICBhdXRvIGJhc2VsaW5lU2hp
ZnRWYWx1ZUxlbmd0aCA9IHN0eWxlLmJhc2VsaW5lU2hpZnRWYWx1ZSgpOwotICAgICAgICBpZiAo
YmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRh
Z2UpCisgICAgICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgubGVuZ3RoVHlwZSgpID09
IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVT
aGlmdFZhbHVlTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7
CiAKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRleHQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2lu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lU3BhY2luZy5jcHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGZsb2F0IFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5n
OjpjYWxjdWwKIHsKICAgICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBhdXRvIGtlcm5pbmdMZW5n
dGggPSBzdHlsZS0+a2VybmluZygpOwotICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKGtlcm5pbmdMZW5ndGgubGVuZ3RoVHlw
ZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJu
aW5nTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxl
bWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmli
dXRlcy5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAgc3RydWN0
IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyA6IEdyYWRpZQogICAgIExpbmVhckdyYWRpZW50QXR0
cmlidXRlcygpCiAgICAgICAgIDogbV94MSgpCiAgICAgICAgICwgbV95MSgpCi0gICAgICAgICwg
bV94MihMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKKyAgICAgICAgLCBtX3gyKFNWR0xlbmd0aE1v
ZGU6OldpZHRoLCAiMTAwJSIpCiAgICAgICAgICwgbV95MigpCiAgICAgICAgICwgbV94MVNldChm
YWxzZSkKICAgICAgICAgLCBtX3kxU2V0KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw5ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdy
YWRpZW50QXR0cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGll
bnRBdHRyaWJ1dGVzKCkKLSAgICAgICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0g
ICAgICAgICwgbV9jeShMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQotICAgICAgICAsIG1fcihMZW5n
dGhNb2RlV2lkdGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
ICI1MCUiKQorICAgICAgICAsIG1fY3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAg
ICAgICAsIG1fcihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCiAgICAgICAgICwgbV9jeFNl
dChmYWxzZSkKICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxz
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaAkocmV2aXNpb24gMjQ5ODE3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMTAgKzU2LDQgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdB
bmdsZVZhbHVlPiB7Ci0gICAgc3RhdGljIFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyBy
ZXR1cm4gU1ZHQW5nbGVWYWx1ZSgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBTVkdBbmdsZVZhbHVlJiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMSArNTQsMTEgQEAgdm9pZCBTVkdDaXJjbGVFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIG1fY3gt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQot
ICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N5LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBwYXJzZUVy
cm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAgcmVwb3J0
QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw5ICs1NSw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjQsOSArNjQsOSBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwog
CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+IG1f
Y2xpZW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgU1ZHRWxs
aXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VF
cnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAg
ICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3gtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Oldp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmN5QXR0cikKLSAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcngtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAg
bV9yeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1
ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEwIEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xl
bmd0aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0OTgxNykK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY28KICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgbV9wcmlt
aXRpdmVVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+
KHByb3BlcnR5VmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAg
ICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBh
cnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDEw
IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2ZpbHRlclVuaXRzIHsg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4gbV9wcmltaXRpdmVVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0
aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoLCAiLTEwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
Ii0xMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMjAlIikgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMjAlIikgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lv
biAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAg
ICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAgICBtX3Jlc3VsdC0+c2V0QmFzZVZhbEludGVybmFs
KHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMjQ5ODE3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNw
ZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRo
ZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIw
JSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjAlIikgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBt
X3Jlc3VsdCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmkKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJv
ciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAg
IG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdo
dC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJv
cihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsMTAgKzU4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb24K
ICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAg
bV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3Ro
TmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQp
KTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2
YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksMTAgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkg
ZmluYWw7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbyB7
IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZH
SW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5o
CShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKICNpbmNs
dWRlICJTVkdWYWx1ZVByb3BlcnR5LmgiCiAKQEAgLTM4LDE3ICszOSwxNyBAQCBjbGFzcyBTVkdM
ZW5ndGggOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0CiBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZCBk
ZWNsYXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5l
cmF0aW9uCiAgICAgZW51bSB7Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5n
dGhUeXBlVW5rbm93biwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSID0gTGVuZ3RoVHlw
ZU51bWJlciwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQ
ZXJjZW50YWdlLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBlRU1TLAot
ICAgICAgICBTVkdfTEVOR1RIVFlQRV9FWFMgPSBMZW5ndGhUeXBlRVhTLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9QWCA9IExlbmd0aFR5cGVQWCwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00g
PSBMZW5ndGhUeXBlQ00sCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX01NID0gTGVuZ3RoVHlwZU1N
LAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKLSAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfUFQgPSBMZW5ndGhUeXBlUFQsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BD
ID0gTGVuZ3RoVHlwZVBDCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgICA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpVbmtub3duKSwKKyAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfTlVNQkVSICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0
aFR5cGU6Ok51bWJlciksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSwKKyAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfRU1TICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xl
bmd0aFR5cGU6OkVtcyksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpFeHMpLAorICAgICAgICBTVkdfTEVO
R1RIVFlQRV9QWCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlw
ZTo6UGl4ZWxzKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzKSwKKyAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfTU0gICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0
aFR5cGU6Ok1pbGxpbWV0ZXJzKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfSU4gICAgICAgICAg
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkluY2hlcyksCisgICAgICAg
IFNWR19MRU5HVEhUWVBFX1BUICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdM
ZW5ndGhUeXBlOjpQb2ludHMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QQyAgICAgICAgICAg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UGljYXMpCiAgICAgfTsKIAog
ICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoKQpAQCAtNzksOSArODAsOSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVlKTsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSgpCisgICAgdW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUoKSAgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLnVuaXRUeXBlKCk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5sZW5ndGhUeXBlKCkp
OwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRpbmdzKCkKQEAg
LTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAK
LSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVlLCBTVkdMZW5ndGhD
b250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3Zh
bHVlLnNldFZhbHVlKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0sIHZhbHVl
KTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIApAQCAtMTM1LDEyICsxMzYsMTIgQEAgcHVibGljOgogICAgICAg
ICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9k
aWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVl
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7
Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICAKKyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNWR19MRU5HVEhUWVBF
X1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgICAgIG1fdmFsdWUg
PSB7IHZhbHVlSW5TcGVjaWZpZWRVbml0cywgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odW5p
dFR5cGUpLCBtX3ZhbHVlLmxlbmd0aE1vZGUoKSB9OwogICAgICAgICBjb21taXRDaGFuZ2UoKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQg
c2hvcnQgdW5pdFR5cGUpCkBAIC0xNDgsMTAgKzE0OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmlj
YXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUuY29u
dmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0
RWxlbWVudCgpIH0pOworICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfVU5L
Tk9XTiB8fCB1bml0VHlwZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKFNWR0xlbmd0aENvbnRleHQgeyBjb250
ZXh0RWxlbWVudCgpIH0sIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXRUeXBlKSk7CiAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICAKKwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQu
Y3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTg1LDEw
ICs4NSwxMCBAQCBmbG9hdCBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlTGVuZ3RoKGNvCiAgICAg
cmV0dXJuIHgudmFsdWVBc1BlcmNlbnRhZ2UoKTsKIH0KIAotZmxvYXQgU1ZHTGVuZ3RoQ29udGV4
dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9k
ZSkKK2Zsb2F0IFNWR0xlbmd0aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYg
bGVuZ3RoLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1Bl
cmNlbnQoKSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50
YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZh
bHVlKCkgLyAxMDAsIGxlbmd0aE1vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CkBAIC05OSw0OSArOTksNDkgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4
dDo6dmFsdWVGb3JMZW5ndGgoYwogICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgZGV0
ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKTsKIAotICAgIHN3aXRjaCAobW9kZSkgewotICAg
IGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAgIHN3aXRjaCAobGVuZ3RoTW9kZSkgeworICAgIGNh
c2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aCwgdmlld3BvcnRTaXplLndpZHRoKCkpOwotICAgIGNhc2UgTGVuZ3RoTW9kZUhl
aWdodDoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OkhlaWdodDoKICAgICAgICAgcmV0dXJuIGZs
b2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwotICAgIGNh
c2UgTGVuZ3RoTW9kZU90aGVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6T3RoZXI6CiAgICAg
ICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgc3RkOjpzcXJ0KHZpZXdwb3J0
U2l6ZS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSAvIDIpKTsKICAgICB9OwogICAgIHJldHVybiAw
OwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVl
VG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlw
ZSBmcm9tVW5pdCkgY29uc3QKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhU
eXBlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIFNW
R0xlbmd0aENvbnRleHQgY2FycmllcyBhIGN1c3RvbSB2aWV3cG9ydCwgZm9yY2UgcmVzb2x2aW5n
IGFnYWluc3QgaXQuCiAgICAgaWYgKCFtX292ZXJyaWRkZW5WaWV3cG9ydC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3JpY2FsIHJl
YXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgICAgIGlmIChmcm9t
VW5pdCA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgaWYgKGxlbmd0aFR5cGUgPT0g
U1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAgICAgICAgICAgIHZhbHVlIC89IDEwMDsKLSAg
ICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUs
IG1vZGUpOworICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJV
bml0cyh2YWx1ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCi0gICAgc3dpdGNoIChmcm9tVW5pdCkg
ewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CisgICAgc3dpdGNoIChsZW5ndGhUeXBlKSB7
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBpeGVsczoKICAg
ICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6Ci0gICAg
ICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKHZhbHVlIC8g
MTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRh
Z2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEwMCwgbGVuZ3RoTW9kZSk7CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpFbXM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tRU1TVG9Vc2VyVW5p
dHModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6OkV4czoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21FWFNUb1VzZXJVbml0cyh2
YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpD
ZW50aW1ldGVyczoKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDIu
NTRmOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TWls
bGltZXRlcnM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyNS40
ZjsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkluY2hl
czoKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExl
bmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBvaW50czoKICAgICAgICAgcmV0
dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDcyOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBD
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGljYXM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAq
IGNzc1BpeGVsc1BlckluY2ggLyA2OwogICAgIH0KIApAQCAtMTQ5LDMwICsxNDksMzAgQEAgRXhj
ZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbgogICAgIHJldHVybiAwOwogfQog
Ci1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVz
ZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHRv
VW5pdCkgY29uc3QKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0
VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHRvVW5pdCkg
ewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CisgICAgc3dpdGNoIChsZW5ndGhUeXBlKSB7
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgotICAgICAgICByZXR1cm4gY29udmVydFZhbHVl
RnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgbW9kZSk7Ci0gICAgY2FzZSBM
ZW5ndGhUeXBlRU1TOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZToKKyAgICAg
ICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UodmFsdWUgKiAx
MDAsIGxlbmd0aE1vZGUpOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RW1zOgogICAgICAgICBy
ZXR1cm4gY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TKHZhbHVlKTsKLSAgICBjYXNlIExl
bmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFeHM6CiAgICAgICAgIHJldHVy
biBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFModmFsdWUpOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZVBYOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGl4ZWxzOgogICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpD
ZW50aW1ldGVyczoKICAgICAgICAgcmV0dXJuIHZhbHVlICogMi41NGYgLyBjc3NQaXhlbHNQZXJJ
bmNoOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TWls
bGltZXRlcnM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIDI1LjRmIC8gY3NzUGl4ZWxzUGVySW5j
aDsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkluY2hl
czoKICAgICAgICAgcmV0dXJuIHZhbHVlIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExl
bmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBvaW50czoKICAgICAgICAgcmV0
dXJuIHZhbHVlICogNzIgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBD
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGljYXM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAq
IDYgLyBjc3NQaXhlbHNQZXJJbmNoOwogICAgIH0KIApAQCAtMTgwLDE4ICsxODAsMTggQEAgRXhj
ZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbgogICAgIHJldHVybiAwOwogfQog
Ci1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVz
ZXJVbml0c1RvUGVyY2VudGFnZShmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25z
dAorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21V
c2VyVW5pdHNUb1BlcmNlbnRhZ2UoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9k
ZSkgY29uc3QKIHsKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJt
aW5lVmlld3BvcnQodmlld3BvcnRTaXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0
aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0
aE1vZGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdmFsdWUgLyB2aWV3cG9ydFNpemUud2lkdGgo
KSAqIDEwMDsKLSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhN
b2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVybiB2YWx1ZSAvIHZpZXdwb3J0U2l6ZS5oZWlnaHQo
KSAqIDEwMDsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1v
ZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFsdWUgLyAoc3RkOjpzcXJ0KHZpZXdwb3J0U2l6
ZS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSAvIDIpKSAqIDEwMDsKICAgICB9OwogCkBAIC0xOTks
MTggKzE5OSwxOCBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29uCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5n
dGhNb2RlIG1vZGUpIGNvbnN0CitFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6
Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVu
Z3RoTW9kZSBsZW5ndGhNb2RlKSBjb25zdAogewogICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7
CiAgICAgaWYgKCFkZXRlcm1pbmVWaWV3cG9ydCh2aWV3cG9ydFNpemUpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKIAotICAgIHN3aXRjaCAobW9kZSkg
ewotICAgIGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAgIHN3aXRjaCAobGVuZ3RoTW9kZSkgewor
ICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHZp
ZXdwb3J0U2l6ZS53aWR0aCgpOwotICAgIGNhc2UgTGVuZ3RoTW9kZUhlaWdodDoKKyAgICBjYXNl
IFNWR0xlbmd0aE1vZGU6OkhlaWdodDoKICAgICAgICAgcmV0dXJuIHZhbHVlICogdmlld3BvcnRT
aXplLmhlaWdodCgpOwotICAgIGNhc2UgTGVuZ3RoTW9kZU90aGVyOgorICAgIGNhc2UgU1ZHTGVu
Z3RoTW9kZTo6T3RoZXI6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6c3FydCh2aWV3cG9y
dFNpemUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAyKTsKICAgICB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMzUgKzIy
LDE1IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR0xl
bmd0aFZhbHVlOwogCiBzdHJ1Y3QgTGVuZ3RoOwogCi1lbnVtIFNWR0xlbmd0aFR5cGUgewotICAg
IExlbmd0aFR5cGVVbmtub3duID0gMCwKLSAgICBMZW5ndGhUeXBlTnVtYmVyLAotICAgIExlbmd0
aFR5cGVQZXJjZW50YWdlLAotICAgIExlbmd0aFR5cGVFTVMsCi0gICAgTGVuZ3RoVHlwZUVYUywK
LSAgICBMZW5ndGhUeXBlUFgsCi0gICAgTGVuZ3RoVHlwZUNNLAotICAgIExlbmd0aFR5cGVNTSwK
LSAgICBMZW5ndGhUeXBlSU4sCi0gICAgTGVuZ3RoVHlwZVBULAotICAgIExlbmd0aFR5cGVQQwot
fTsKLQotZW51bSBTVkdMZW5ndGhNb2RlIHsKLSAgICBMZW5ndGhNb2RlV2lkdGggPSAwLAotICAg
IExlbmd0aE1vZGVIZWlnaHQsCi0gICAgTGVuZ3RoTW9kZU90aGVyCi19OwotCiBjbGFzcyBTVkdM
ZW5ndGhDb250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTVkdMZW5ndGhDb250ZXh0KGNv
bnN0IFNWR0VsZW1lbnQqKTsKQEAgLTY0LDkgKzQ1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBG
bG9hdFBvaW50IHJlc29sdmVQb2ludChjb25zdCBTVkdFbGVtZW50KiwgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgsIGNvbnN0IFNWR0xlbmd0aFZhbHVl
JiB5KTsKICAgICBzdGF0aWMgZmxvYXQgcmVzb2x2ZUxlbmd0aChjb25zdCBTVkdFbGVtZW50Kiwg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIAotICAg
IGZsb2F0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIFNWR0xlbmd0aE1vZGUgPSBMZW5n
dGhNb2RlT3RoZXIpOwotICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVUb1VzZXJV
bml0cyhmbG9hdCwgU1ZHTGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSBmcm9tVW5pdCkgY29uc3Q7
Ci0gICAgRXhjZXB0aW9uT3I8ZmxvYXQ+IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQs
IFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdDsKKyAgICBmbG9hdCB2
YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9k
ZTo6T3RoZXIpOworICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVUb1VzZXJVbml0
cyhmbG9hdCwgU1ZHTGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSkgY29uc3Q7CisgICAgRXhjZXB0
aW9uT3I8ZmxvYXQ+IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aFR5
cGUsIFNWR0xlbmd0aE1vZGUpIGNvbnN0OwogCiAgICAgYm9vbCBkZXRlcm1pbmVWaWV3cG9ydChG
bG9hdFNpemUmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCShy
ZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJs
aWMgU1ZHVmFsdWVQcm8KICAgICB1c2luZyBCYXNlOjpCYXNlOwogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTVkdMZW5ndGhMaXN0PiBjcmVhdGUoU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0g
TGVuZ3RoTW9kZU90aGVyKQorICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRlKFNW
R0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoTGlzdChsZW5ndGhNb2RlKSk7CiAg
ICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFNW
R0xlbmd0aE1vZGUgbV9sZW5ndGhNb2RlIHsgTGVuZ3RoTW9kZU90aGVyIH07CisgICAgU1ZHTGVu
Z3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBTVkdMZW5ndGhNb2RlOjpPdGhlciB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUu
Y3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNTggKzIyLDM3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKIAotI2luY2x1ZGUg
IkNTU0hlbHBlci5oIgorI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBIZWxw
ZXIgZnVuY3Rpb25zCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHN0b3JlVW5pdChTVkdMZW5ndGhN
b2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciog
bGVuZ3RoVHlwZVRvU3RyaW5nKFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSkKIHsKLSAgICByZXR1
cm4gKG1vZGUgPDwgNCkgfCB0eXBlOwotfQotCi1zdGF0aWMgaW5saW5lIFNWR0xlbmd0aE1vZGUg
ZXh0cmFjdE1vZGUodW5zaWduZWQgdW5pdCkKLXsKLSAgICB1bnNpZ25lZCBtb2RlID0gdW5pdCA+
PiA0OyAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoTW9kZT4obW9kZSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBleHRyYWN0VHlwZSh1bnNpZ25lZCB1bml0
KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih1bml0ICYgKCgxIDw8
IDQpIC0gMSkpOwotfQotCi1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGxlbmd0aFR5cGVUb1N0
cmluZyhTVkdMZW5ndGhUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlVW5rbm93bjoKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgc3dp
dGNoIChsZW5ndGhUeXBlKSB7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgorICAg
IGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gIiI7ICAgIAotICAg
IGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQZXJj
ZW50YWdlOgogICAgICAgICByZXR1cm4gIiUiOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAg
ICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVtczoKICAgICAgICAgcmV0dXJuICJlbSI7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlRVhTOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RXhzOgogICAgICAgICBy
ZXR1cm4gImV4IjsKLSAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6OlBpeGVsczoKICAgICAgICAgcmV0dXJuICJweCI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDZW50aW1ldGVyczoKICAgICAgICAgcmV0dXJuICJj
bSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNaWxs
aW1ldGVyczoKICAgICAgICAgcmV0dXJuICJtbSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpJbmNoZXM6CiAgICAgICAgIHJldHVybiAiaW4iOwotICAg
IGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOgogICAg
ICAgICByZXR1cm4gInB0IjsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OlBpY2FzOgogICAgICAgICByZXR1cm4gInBjIjsKICAgICB9CiAKQEAgLTgxLDkw
ICs2MCwxODMgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBsZW5ndGhUeXBlVG9TdAogICAg
IHJldHVybiAiIjsKIH0KIAotaW5saW5lIFNWR0xlbmd0aFR5cGUgcGFyc2VMZW5ndGhUeXBlKGNv
bnN0IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQpCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0
aFR5cGUgcGFyc2VMZW5ndGhUeXBlKGNvbnN0IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQp
CiB7CiAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlTnVtYmVy
OworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOwogCiAgICAgY29uc3QgVUNo
YXIgZmlyc3RDaGFyID0gKnB0cjsKIAogICAgIGlmICgrK3B0ciA9PSBlbmQpCi0gICAgICAgIHJl
dHVybiBmaXJzdENoYXIgPT0gJyUnID8gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgOiBMZW5ndGhUeXBl
VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hhciA9PSAnJScgPyBTVkdMZW5ndGhUeXBl
OjpQZXJjZW50YWdlIDogU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjsKIAogICAgIGNvbnN0IFVDaGFy
IHNlY29uZENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyICE9IGVuZCkKLSAgICAgICAgcmV0
dXJuIExlbmd0aFR5cGVVbmtub3duOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6VW5r
bm93bjsKIAogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENoYXIgPT0gJ20nKQot
ICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUVNUzsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5
cGU6OkVtczsKICAgICBpZiAoZmlyc3RDaGFyID09ICdlJyAmJiBzZWNvbmRDaGFyID09ICd4JykK
LSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVFWFM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhU
eXBlOjpFeHM7CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAneCcp
Ci0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlUFg7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhU
eXBlOjpQaXhlbHM7CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnYycgJiYgc2Vjb25kQ2hhciA9PSAn
bScpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlQ007CisgICAgICAgIHJldHVybiBTVkdMZW5n
dGhUeXBlOjpDZW50aW1ldGVyczsKICAgICBpZiAoZmlyc3RDaGFyID09ICdtJyAmJiBzZWNvbmRD
aGFyID09ICdtJykKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVNTTsKKyAgICAgICAgcmV0dXJu
IFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0ZXJzOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2knICYm
IHNlY29uZENoYXIgPT0gJ24nKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUlOOworICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6SW5jaGVzOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ3An
ICYmIHNlY29uZENoYXIgPT0gJ3QnKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBUOworICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOwogICAgIGlmIChmaXJzdENoYXIgPT0g
J3AnICYmIHNlY29uZENoYXIgPT0gJ2MnKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBDOwor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UGljYXM7CiAKLSAgICByZXR1cm4gTGVuZ3Ro
VHlwZVVua25vd247CisgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlVua25vd247CiB9CiAKLVNW
R0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0
cmluZyYgdmFsdWVBc1N0cmluZykKLSAgICA6IG1fdW5pdChzdG9yZVVuaXQobW9kZSwgTGVuZ3Ro
VHlwZU51bWJlcikpCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0aFR5cGUgcHJpbWl0aXZlVHlwZVRv
TGVuZ3RoVHlwZSh1bnNpZ25lZCBzaG9ydCBwcmltaXRpdmVUeXBlKQogewotICAgIHNldFZhbHVl
QXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CisgICAgc3dpdGNoIChwcmltaXRpdmVUeXBlKSB7Cisg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjoKKyAgICAgICAgcmV0dXJuIFNW
R0xlbmd0aFR5cGU6Ok51bWJlcjsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVS
Q0VOVEFHRToKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7CisgICAg
Y2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0
aFR5cGU6OkVtczsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgorICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6RXhzOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWDoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBpeGVsczsKKyAgICBjYXNl
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ006CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBl
OjpDZW50aW1ldGVyczsKKyAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU06CisgICAg
ICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpNaWxsaW1ldGVyczsKKyAgICBjYXNlIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSU46CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpJbmNoZXM7
CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOgorICAgICAgICByZXR1cm4gU1ZH
TGVuZ3RoVHlwZTo6UG9pbnRzOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzoK
KyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBpY2FzOworICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VTktOT1dOOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTVkdM
ZW5ndGhUeXBlOjpVbmtub3duOworICAgIH0KIH0KIAotU1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0
aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkdM
ZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUpCi0gICAgOiBtX3VuaXQoc3Rv
cmVVbml0KG1vZGUsIHVuaXRUeXBlKSkKK3N0YXRpYyBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlIGxlbmd0aFR5cGVUb1ByaW1pdGl2ZVR5cGUoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhU
eXBlKQogewotICAgIHNldFZhbHVlKHZhbHVlLCBjb250ZXh0KTsKKyAgICBzd2l0Y2ggKGxlbmd0
aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlVua25vd246CisgICAgICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV047CisgICAgY2FzZSBTVkdMZW5ndGhUeXBl
OjpOdW1iZXI6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsK
KyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U6CisgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpF
bXM6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsKKyAgICBjYXNl
IFNWR0xlbmd0aFR5cGU6OkV4czoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfRVhTOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGl4ZWxzOgorICAgICAgICByZXR1cm4g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkNlbnRp
bWV0ZXJzOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19DTTsKKyAgICBj
YXNlIFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0ZXJzOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19NTTsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkluY2hlczoKKyAgICAg
ICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU47CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpQb2ludHM6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOwor
ICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGljYXM6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1BDOworICAgIH0KIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHTGVuZ3Ro
VmFsdWU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nLCBTVkdM
ZW5ndGhNb2RlIG1vZGUpCitTVkdMZW5ndGhWYWx1ZTo6U1ZHTGVuZ3RoVmFsdWUoU1ZHTGVuZ3Ro
TW9kZSBsZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcpCisgICAgOiBtX2xl
bmd0aE1vZGUobGVuZ3RoTW9kZSkKIHsKLSAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IDA7
Ci0gICAgbV91bml0ID0gc3RvcmVVbml0KG1vZGUsIExlbmd0aFR5cGVOdW1iZXIpOwotICAgIHJl
dHVybiBzZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcpOworICAgIHNldFZhbHVlQXNTdHJp
bmcodmFsdWVBc1N0cmluZyk7CiB9CiAKLWJvb2wgU1ZHTGVuZ3RoVmFsdWU6Om9wZXJhdG9yPT0o
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG90aGVyKSBjb25zdAorU1ZHTGVuZ3RoVmFsdWU6OlNWR0xl
bmd0aFZhbHVlKGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cywgU1ZHTGVuZ3RoVHlwZSBsZW5n
dGhUeXBlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCisgICAgOiBtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0cyh2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCisgICAgLCBtX2xlbmd0aFR5cGUobGVuZ3Ro
VHlwZSkKKyAgICAsIG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQogewotICAgIHJldHVybiBtX3Vu
aXQgPT0gb3RoZXIubV91bml0ICYmIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID09IG90aGVyLm1f
dmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgIEFTU0VSVChtX2xlbmd0aFR5cGUgIT0gU1ZHTGVu
Z3RoVHlwZTo6VW5rbm93bik7CiB9CiAKLWJvb2wgU1ZHTGVuZ3RoVmFsdWU6Om9wZXJhdG9yIT0o
Y29uc3QgU1ZHTGVuZ3RoVmFsdWUmIG90aGVyKSBjb25zdAorU1ZHTGVuZ3RoVmFsdWU6OlNWR0xl
bmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBT
VkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkKKyAgICA6
IG1fbGVuZ3RoVHlwZShsZW5ndGhUeXBlKQorICAgICwgbV9sZW5ndGhNb2RlKGxlbmd0aE1vZGUp
CiB7Ci0gICAgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsKKyAgICBzZXRWYWx1ZShjb250ZXh0
LCB2YWx1ZSk7CiB9CiAKLVNWR0xlbmd0aFZhbHVlIFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
U1ZHTGVuZ3RoTW9kZSBtb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcsIFNWR1BhcnNp
bmdFcnJvciYgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIG5lZ2F0aXZl
VmFsdWVzTW9kZSkKK1NWR0xlbmd0aFZhbHVlIFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZSBsZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcsIFNWR1Bh
cnNpbmdFcnJvciYgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIG5lZ2F0
aXZlVmFsdWVzTW9kZSkKIHsKLSAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGgobW9kZSk7CisgICAg
U1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoKGxlbmd0aE1vZGUpOwogCiAgICAgaWYgKGxlbmd0aC5zZXRW
YWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcpLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBwYXJz
ZUVycm9yID0gUGFyc2luZ0F0dHJpYnV0ZUZhaWxlZEVycm9yOwotICAgIGVsc2UgaWYgKG5lZ2F0
aXZlVmFsdWVzTW9kZSA9PSBGb3JiaWROZWdhdGl2ZUxlbmd0aHMgJiYgbGVuZ3RoLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpIDwgMCkKKyAgICBlbHNlIGlmIChuZWdhdGl2ZVZhbHVlc01vZGUgPT0g
U1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQgJiYgbGVuZ3RoLnZhbHVlSW5TcGVj
aWZpZWRVbml0cygpIDwgMCkKICAgICAgICAgcGFyc2VFcnJvciA9IE5lZ2F0aXZlVmFsdWVGb3Ji
aWRkZW5FcnJvcjsKIAogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLVNWR0xlbmd0aFR5cGUgU1ZH
TGVuZ3RoVmFsdWU6OnVuaXRUeXBlKCkgY29uc3QKK1NWR0xlbmd0aFZhbHVlIFNWR0xlbmd0aFZh
bHVlOjpibGVuZChjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbSwgY29uc3QgU1ZHTGVuZ3RoVmFs
dWUmIHRvLCBmbG9hdCBwcm9ncmVzcykKK3sKKyAgICBpZiAoKGZyb20uaXNaZXJvKCkgJiYgdG8u
aXNaZXJvKCkpCisgICAgICAgIHx8IGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6
OlVua25vd24KKyAgICAgICAgfHwgdG8ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlVu
a25vd24KKyAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmIGZyb20ubGVuZ3RoVHlwZSgpICE9
IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgJiYgdG8ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0
aFR5cGU6OlBlcmNlbnRhZ2UpCisgICAgICAgIHx8ICghdG8uaXNaZXJvKCkgJiYgZnJvbS5sZW5n
dGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSAmJiB0by5sZW5ndGhUeXBlKCkg
IT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKKyAgICAgICAgfHwgKCFmcm9tLmlzWmVybygp
ICYmICF0by5pc1plcm8oKSAmJiAoZnJvbS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6
RW1zIHx8IGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OkV4cykgJiYgZnJvbS5s
ZW5ndGhUeXBlKCkgIT0gdG8ubGVuZ3RoVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRvOworCisg
ICAgaWYgKGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgfHwg
dG8ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpIHsKKyAgICAgICAg
YXV0byBmcm9tUGVyY2VudCA9IGZyb20udmFsdWVBc1BlcmNlbnRhZ2UoKSAqIDEwMDsKKyAgICAg
ICAgYXV0byB0b1BlcmNlbnQgPSB0by52YWx1ZUFzUGVyY2VudGFnZSgpICogMTAwOworICAgICAg
ICByZXR1cm4geyBXZWJDb3JlOjpibGVuZChmcm9tUGVyY2VudCwgdG9QZXJjZW50LCBwcm9ncmVz
cyksIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgfTsKKyAgICB9CisKKyAgICBpZiAoZnJvbS5s
ZW5ndGhUeXBlKCkgPT0gdG8ubGVuZ3RoVHlwZSgpIHx8IGZyb20uaXNaZXJvKCkgfHwgdG8uaXNa
ZXJvKCkgfHwgZnJvbS5pc1JlbGF0aXZlKCkpIHsKKyAgICAgICAgYXV0byBmcm9tVmFsdWUgPSBm
cm9tLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgICAgICBhdXRvIHRvVmFsdWUgPSB0by52
YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKKyAgICAgICAgcmV0dXJuIHsgV2ViQ29yZTo6YmxlbmQo
ZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcyksIHRvLmlzWmVybygpID8gZnJvbS5sZW5ndGhU
eXBlKCkgOiB0by5sZW5ndGhUeXBlKCkgfTsKKyAgICB9CisKKyAgICBTVkdMZW5ndGhDb250ZXh0
IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dChudWxscHRyKTsKKyAgICBhdXRvIGZyb21WYWx1ZUlu
VXNlclVuaXRzID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVu
aXRzKGZyb20udmFsdWVJblNwZWNpZmllZFVuaXRzKCksIGZyb20ubGVuZ3RoVHlwZSgpLCBmcm9t
Lmxlbmd0aE1vZGUoKSk7CisgICAgaWYgKGZyb21WYWx1ZUluVXNlclVuaXRzLmhhc0V4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byBmcm9tVmFsdWUgPSBub25SZWxh
dGl2ZUxlbmd0aENvbnRleHQuY29udmVydFZhbHVlRnJvbVVzZXJVbml0cyhmcm9tVmFsdWVJblVz
ZXJVbml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgdG8ubGVuZ3RoVHlwZSgpLCB0by5sZW5ndGhN
b2RlKCkpOworICAgIGlmIChmcm9tVmFsdWUuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBmbG9hdCB0b1ZhbHVlID0gdG8udmFsdWVJblNwZWNpZmllZFVuaXRzKCk7
CisgICAgcmV0dXJuIHsgV2ViQ29yZTo6YmxlbmQoZnJvbVZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCB0b1ZhbHVlLCBwcm9ncmVzcyksIHRvLmxlbmd0aFR5cGUoKSB9OworfQorCitTVkdMZW5n
dGhWYWx1ZSBTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IENTU1By
aW1pdGl2ZVZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gZXh0cmFjdFR5cGUobV91bml0KTsK
KyAgICBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUgPSBwcmltaXRpdmVUeXBlVG9MZW5ndGhUeXBl
KHZhbHVlLnByaW1pdGl2ZVR5cGUoKSk7CisgICAgcmV0dXJuIGxlbmd0aFR5cGUgPT0gU1ZHTGVu
Z3RoVHlwZTo6VW5rbm93biA/IFNWR0xlbmd0aFZhbHVlKCkgOiBTVkdMZW5ndGhWYWx1ZSh2YWx1
ZS5mbG9hdFZhbHVlKCksIGxlbmd0aFR5cGUpOwogfQogCi1TVkdMZW5ndGhNb2RlIFNWR0xlbmd0
aFZhbHVlOjp1bml0TW9kZSgpIGNvbnN0CitSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IFNWR0xlbmd0
aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBsZW5ndGgp
CiB7Ci0gICAgcmV0dXJuIGV4dHJhY3RNb2RlKG1fdW5pdCk7CisgICAgcmV0dXJuIENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUobGVuZ3RoLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpLCBsZW5ndGhU
eXBlVG9QcmltaXRpdmVUeXBlKGxlbmd0aC5sZW5ndGhUeXBlKCkpKTsKK30KKworRXhjZXB0aW9u
T3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZUFzU3RyaW5nLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCit7CisgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSAwOworICAgIG1fbGVuZ3RoTW9kZSA9IGxlbmd0aE1vZGU7CisgICAg
bV9sZW5ndGhUeXBlID0gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOworICAgIHJldHVybiBzZXRWYWx1
ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcpOwogfQogCiBmbG9hdCBTVkdMZW5ndGhWYWx1ZTo6dmFs
dWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkgY29uc3QKQEAgLTE3NSwzNyArMjQ3
LDM1IEBAIGZsb2F0IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZShjb25zdCBTVkdMZW4KICAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4g
U1ZHTGVuZ3RoVmFsdWU6OnZhbHVlRm9yQmluZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYg
Y29udGV4dCkgY29uc3QKK1N0cmluZyBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1N0cmluZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGNvbnRleHQuY29udmVydFZhbHVlVG9Vc2VyVW5pdHMobV92YWx1
ZUluU3BlY2lmaWVkVW5pdHMsIGV4dHJhY3RNb2RlKG1fdW5pdCksIGV4dHJhY3RUeXBlKG1fdW5p
dCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4ZWRQcmVjaXNp
b24obV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpLCBsZW5ndGhUeXBlVG9TdHJpbmcobV9sZW5ndGhU
eXBlKSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZShj
b25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9k
ZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlKQorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xl
bmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRl
eHQpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFNlZW1zIGxpa2UgYSBidWcgdGhhdCB3ZSBjaGFu
Z2UgdGhlIHZhbHVlIG9mIG1fdW5pdCBldmVuIGlmIHNldFZhbHVlIHRocm93cyBhbiBleGNlcHRp
b24uCi0gICAgbV91bml0ID0gc3RvcmVVbml0KG1vZGUsIHVuaXRUeXBlKTsKLSAgICByZXR1cm4g
c2V0VmFsdWUodmFsdWUsIGNvbnRleHQpOworICAgIHJldHVybiBjb250ZXh0LmNvbnZlcnRWYWx1
ZVRvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzLCBtX2xlbmd0aFR5cGUsIG1fbGVu
Z3RoTW9kZSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1
ZShmbG9hdCB2YWx1ZSwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkKK0V4Y2VwdGlv
bk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0
JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSkKIHsKICAgICAvLyAxMDAlID0gMTAwLjAgaW5zdGVhZCBv
ZiAxLjAgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcyBjb3VsZCBldmVudHVhbGx5IGJlIGNo
YW5nZWQKLSAgICBpZiAoZXh0cmFjdFR5cGUobV91bml0KSA9PSBMZW5ndGhUeXBlUGVyY2VudGFn
ZSkKKyAgICBpZiAobV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAg
ICAgICAgIHZhbHVlID0gdmFsdWUgLyAxMDA7CiAKLSAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0g
Y29udGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKHZhbHVlLCBleHRyYWN0TW9kZShtX3Vu
aXQpLCBleHRyYWN0VHlwZShtX3VuaXQpKTsKKyAgICBhdXRvIGNvbnZlcnRlZFZhbHVlID0gY29u
dGV4dC5jb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzKHZhbHVlLCBtX2xlbmd0aFR5cGUsIG1fbGVu
Z3RoTW9kZSk7CiAgICAgaWYgKGNvbnZlcnRlZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm4gY29udmVydGVkVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwogICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gY29udmVydGVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7CiAg
ICAgcmV0dXJuIHsgfTsKIH0KLWZsb2F0IFNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzUGVyY2VudGFn
ZSgpIGNvbnN0Ci17Ci0gICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0
b3JpY2FsIHJlYXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgaWYg
KGV4dHJhY3RUeXBlKG1fdW5pdCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCi0gICAgICAgIHJl
dHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMDsKIAotICAgIHJldHVybiBtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0czsKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRW
YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVu
Z3RoVHlwZSBsZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCit7CisgICAgLy8g
RklYTUU6IFNlZW1zIGxpa2UgYSBidWcgdGhhdCB3ZSBjaGFuZ2UgdGhlIHZhbHVlIG9mIG1fdW5p
dCBldmVuIGlmIHNldFZhbHVlIHRocm93cyBhbiBleGNlcHRpb24uCisgICAgbV9sZW5ndGhNb2Rl
ID0gbGVuZ3RoTW9kZTsKKyAgICBtX2xlbmd0aFR5cGUgPSBsZW5ndGhUeXBlOworICAgIHJldHVy
biBzZXRWYWx1ZShjb250ZXh0LCB2YWx1ZSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xl
bmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQpAQCAtMjIx
LDE3NSArMjkxLDI5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWwK
ICAgICBpZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCBjb252ZXJ0ZWROdW1iZXIsIGZhbHNlKSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKLSAgICBhdXRvIHR5
cGUgPSBwYXJzZUxlbmd0aFR5cGUocHRyLCBlbmQpOwotICAgIGlmICh0eXBlID09IExlbmd0aFR5
cGVVbmtub3duKQorICAgIGF1dG8gbGVuZ3RoVHlwZSA9IHBhcnNlTGVuZ3RoVHlwZShwdHIsIGVu
ZCk7CisgICAgaWYgKGxlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bikKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CiAKLSAgICBtX3VuaXQgPSBzdG9y
ZVVuaXQoZXh0cmFjdE1vZGUobV91bml0KSwgdHlwZSk7CisgICAgbV9sZW5ndGhUeXBlID0gbGVu
Z3RoVHlwZTsKICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGNvbnZlcnRlZE51bWJlcjsK
ICAgICByZXR1cm4geyB9OwogfQogCi1TdHJpbmcgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlQXNTdHJp
bmcoKSBjb25zdAotewotICAgIHJldHVybiBtYWtlU3RyaW5nKEZvcm1hdHRlZE51bWJlcjo6Zml4
ZWRQcmVjaXNpb24obV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpLCBsZW5ndGhUeXBlVG9TdHJpbmco
ZXh0cmFjdFR5cGUobV91bml0KSkpOwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhW
YWx1ZTo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB0eXBlLCBmbG9hdCB2
YWx1ZSkKLXsKLSAgICBpZiAodHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93biB8fCB0eXBlID4gTGVu
Z3RoVHlwZVBDKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Ig
fTsKLQotICAgIG1fdW5pdCA9IHN0b3JlVW5pdChleHRyYWN0TW9kZShtX3VuaXQpLCBzdGF0aWNf
Y2FzdDxTVkdMZW5ndGhUeXBlPih0eXBlKSk7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMg
PSB2YWx1ZTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5n
dGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgY29u
c3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0
aFZhbHVlOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBj
b250ZXh0LCBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gTGVu
Z3RoVHlwZVVua25vd24gfHwgdHlwZSA+IExlbmd0aFR5cGVQQykKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07Ci0KICAgICBhdXRvIHZhbHVlSW5Vc2VyVW5p
dHMgPSB2YWx1ZUZvckJpbmRpbmdzKGNvbnRleHQpOwogICAgIGlmICh2YWx1ZUluVXNlclVuaXRz
Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gdmFsdWVJblVzZXJVbml0cy5yZWxlYXNl
RXhjZXB0aW9uKCk7CiAKLSAgICBhdXRvIG9yaWdpbmFsVW5pdEFuZFR5cGUgPSBtX3VuaXQ7Ci0g
ICAgbV91bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCksIHN0YXRpY19jYXN0PFNW
R0xlbmd0aFR5cGU+KHR5cGUpKTsKLSAgICBhdXRvIHJlc3VsdCA9IHNldFZhbHVlKHZhbHVlSW5V
c2VyVW5pdHMucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQpOwotICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKLSAgICAgICAgbV91bml0ID0gb3JpZ2luYWxVbml0QW5kVHlwZTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHsgfTsKLX0KLQotU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3RoVmFsdWU6OmZyb21DU1NQ
cmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFsdWUpCi17Ci0gICAgU1ZH
TGVuZ3RoVHlwZSB0eXBlOwotICAgIHN3aXRjaCAodmFsdWUucHJpbWl0aXZlVHlwZSgpKSB7Ci0g
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjoKLSAgICAgICAgdHlwZSA9IExl
bmd0aFR5cGVOdW1iZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QRVJDRU5UQUdFOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM6Ci0g
ICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlRU1TOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZUVYUzsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOgotICAg
ICAgICB0eXBlID0gTGVuZ3RoVHlwZVBYOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfQ006Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlQ007Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTToKLSAgICAgICAg
dHlwZSA9IExlbmd0aFR5cGVNTTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0lOOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZUlOOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ6Ci0gICAgICAgIHR5cGUg
PSBMZW5ndGhUeXBlUFQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQzoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQQzsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV046Ci0gICAgZGVmYXVsdDoK
KyAgICBhdXRvIG9yaWdpbmFsTGVuZ3RoVHlwZSA9IG1fbGVuZ3RoVHlwZTsKKyAgICBtX2xlbmd0
aFR5cGUgPSBsZW5ndGhUeXBlOworICAgIGF1dG8gcmVzdWx0ID0gc2V0VmFsdWUoY29udGV4dCwg
dmFsdWVJblVzZXJVbml0cy5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgaWYgKCFyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgfTsKIAotICAgIFNWR0xl
bmd0aFZhbHVlIGxlbmd0aDsKLSAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0eXBl
LCB2YWx1ZS5mbG9hdFZhbHVlKCkpOwotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KLVJlZjxDU1NQ
cmltaXRpdmVWYWx1ZT4gU1ZHTGVuZ3RoVmFsdWU6OnRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIGxlbmd0aCkKLXsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGUgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5LTk9XTjsKLSAgICBzd2l0Y2gg
KGxlbmd0aC51bml0VHlwZSgpKSB7Ci0gICAgY2FzZSBMZW5ndGhUeXBlVW5rbm93bjoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTnVtYmVyOgotICAgICAgICBjc3NUeXBlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TGVuZ3RoVHlwZVBlcmNlbnRhZ2U6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0U7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVN
UzoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVFWFM6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0VYUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhU
eXBlUFg6Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVDTToKLSAgICAgICAgY3NzVHlwZSA9IENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZU1NOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTTsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46Ci0gICAgICAgIGNzc1R5cGUgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0
aFR5cGVQVDoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBDOgotICAgICAgICBjc3NUeXBlID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsKLSAgICAgICAgYnJlYWs7Ci0gICAgfTsKLQotICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxlbmd0aC52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKSwgY3NzVHlwZSk7Ci19Ci0KLVNWR0xlbmd0aE1vZGUgU1ZHTGVuZ3RoVmFsdWU6Omxl
bmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKLXsKLSAgICB1c2luZyBNYXAgPSBIYXNoTWFwPFF1YWxpZmllZE5hbWUsIFNWR0xl
bmd0aE1vZGU+OwotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxNYXA+IG1hcCA9IFtdIHsKLSAg
ICAgICAgc3RydWN0IE1vZGUgewotICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZTsKLSAgICAgICAgICAgIFNWR0xlbmd0aE1vZGUgbW9kZTsKLSAgICAgICAgfTsKLSAgICAgICAg
c3RhdGljIGNvbnN0IE1vZGUgbW9kZXNbXSA9IHsKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnhB
dHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnlBdHRyLCBM
ZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpjeEF0dHIsIExlbmd0
aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6Y3lBdHRyLCBMZW5ndGhNb2Rl
SGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjpkeEF0dHIsIExlbmd0aE1vZGVXaWR0
aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6ZHlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0s
Ci0gICAgICAgICAgICB7IFNWR05hbWVzOjpmeEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAg
ICAgICAgICAgeyBTVkdOYW1lczo6ZnlBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAg
ICAgICB7IFNWR05hbWVzOjp3aWR0aEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAg
ICAgeyBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAg
ICAgeyBTVkdOYW1lczo6eDFBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsg
U1ZHTmFtZXM6OngyQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05h
bWVzOjp5MUF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6
OnkyQXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6cmVm
WEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6cmVmWUF0
dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6Om1hcmtlcldp
ZHRoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjptYXJr
ZXJIZWlnaHRBdHRyLCBMZW5ndGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVz
Ojp0ZXh0TGVuZ3RoQXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05h
bWVzOjpzdGFydE9mZnNldEF0dHIsIExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICB9OwotICAg
ICAgICBNYXAgbWFwOwotICAgICAgICBmb3IgKGF1dG8mIG1vZGUgOiBtb2RlcykKLSAgICAgICAg
ICAgIG1hcC5hZGQobW9kZS5uYW1lLCBtb2RlLm1vZGUpOwotICAgICAgICByZXR1cm4gbWFwOwot
ICAgIH0oKTsKLSAgICAKLSAgICBhdXRvIHJlc3VsdCA9IG1hcC5nZXQoKS5maW5kKGF0dHJOYW1l
KTsKLSAgICBpZiAocmVzdWx0ID09IG1hcC5nZXQoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIExl
bmd0aE1vZGVPdGhlcjsKLSAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKyAgICBtX2xlbmd0aFR5
cGUgPSBvcmlnaW5hbExlbmd0aFR5cGU7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0
aW9uKCk7CiB9CiAKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiBsZW5ndGgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFs
dWUuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZh
bHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCwxNDEgKzIxLDkwIEBACiAKICNwcmFn
bWEgb25jZQogCi0jaW5jbHVkZSAiQW5pbWF0aW9uVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU1ZH
TGVuZ3RoQ29udGV4dC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiU1ZH
UGFyc2luZ0Vycm9yLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKLWNsYXNzIFF1YWxpZmll
ZE5hbWU7CitjbGFzcyBTVkdMZW5ndGhDb250ZXh0OwogCi1lbnVtIFNWR0xlbmd0aE5lZ2F0aXZl
VmFsdWVzTW9kZSB7Ci0gICAgQWxsb3dOZWdhdGl2ZUxlbmd0aHMsCi0gICAgRm9yYmlkTmVnYXRp
dmVMZW5ndGhzCitlbnVtIGNsYXNzIFNWR0xlbmd0aFR5cGUgOiB1aW50OF90IHsKKyAgICBVbmtu
b3duID0gMCwKKyAgICBOdW1iZXIsCisgICAgUGVyY2VudGFnZSwKKyAgICBFbXMsCisgICAgRXhz
LAorICAgIFBpeGVscywKKyAgICBDZW50aW1ldGVycywKKyAgICBNaWxsaW1ldGVycywKKyAgICBJ
bmNoZXMsCisgICAgUG9pbnRzLAorICAgIFBpY2FzCit9OworCitlbnVtIGNsYXNzIFNWR0xlbmd0
aE1vZGUgOiB1aW50OF90IHsKKyAgICBXaWR0aCwKKyAgICBIZWlnaHQsCisgICAgT3RoZXIKK307
CisKK2VudW0gY2xhc3MgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIDogdWludDhfdCB7Cisg
ICAgQWxsb3csCisgICAgRm9yYmlkCiB9OwogCiBjbGFzcyBTVkdMZW5ndGhWYWx1ZSB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IE9uY2UgYWxs
IFNWR0xlbmd0aFZhbHVlIHVzZXJzIHVzZSBMZW5ndGggaW50ZXJuYWxseSwgd2UgbWFrZSB0aGlz
IGEgd3JhcHBlciBmb3IgTGVuZ3RoLgotICAgIFNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGUg
PSBMZW5ndGhNb2RlT3RoZXIsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZyA9IFN0cmluZygp
KTsKLSAgICBTVkdMZW5ndGhWYWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JiwgZmxvYXQsIFNW
R0xlbmd0aE1vZGUgPSBMZW5ndGhNb2RlT3RoZXIsIFNWR0xlbmd0aFR5cGUgPSBMZW5ndGhUeXBl
TnVtYmVyKTsKKyAgICBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9k
ZTo6T3RoZXIsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZyA9IFN0cmluZygpKTsKKyAgICBT
VkdMZW5ndGhWYWx1ZShmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMsIFNWR0xlbmd0aFR5cGUs
IFNWR0xlbmd0aE1vZGUgPSBTVkdMZW5ndGhNb2RlOjpPdGhlcik7CisgICAgU1ZHTGVuZ3RoVmFs
dWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhUeXBlID0gU1ZHTGVu
Z3RoVHlwZTo6TnVtYmVyLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwog
Ci0gICAgU1ZHTGVuZ3RoVHlwZSB1bml0VHlwZSgpIGNvbnN0OwotICAgIFNWR0xlbmd0aE1vZGUg
dW5pdE1vZGUoKSBjb25zdDsKKyAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgY29uc3RydWN0KFNW
R0xlbmd0aE1vZGUsIGNvbnN0IFN0cmluZyYsIFNWR1BhcnNpbmdFcnJvciYsIFNWR0xlbmd0aE5l
Z2F0aXZlVmFsdWVzTW9kZSA9IFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6QWxsb3cpOwor
ICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBibGVuZChjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJv
bSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHRvLCBmbG9hdCBwcm9ncmVzcyk7CisgICAgCisgICAg
c3RhdGljIFNWR0xlbmd0aFZhbHVlIGZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmlt
aXRpdmVWYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHRvQ1NTUHJp
bWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIAotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTVkdMZW5ndGhWYWx1ZSYpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTVkdMZW5ndGhWYWx1ZSYpIGNvbnN0OworICAgIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoVHlwZTsgfQorICAgIFNWR0xlbmd0aE1vZGUgbGVuZ3Ro
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoTW9kZTsgfQogCi0gICAgc3RhdGljIFNWR0xl
bmd0aFZhbHVlIGNvbnN0cnVjdChTVkdMZW5ndGhNb2RlLCBjb25zdCBTdHJpbmcmLCBTVkdQYXJz
aW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUgPSBBbGxvd05lZ2F0aXZlTGVu
Z3Rocyk7CisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHM7ICB9CisgICAgYm9vbCBpc1JlbGF0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UgfHwgbV9sZW5ndGhUeXBlID09IFNW
R0xlbmd0aFR5cGU6OkVtcyB8fCBtX2xlbmd0aFR5cGUgPT0gU1ZHTGVuZ3RoVHlwZTo6RXhzOyB9
CiAKICAgICBmbG9hdCB2YWx1ZShjb25zdCBTVkdMZW5ndGhDb250ZXh0JikgY29uc3Q7CisgICAg
ZmxvYXQgdmFsdWVBc1BlcmNlbnRhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aFR5cGUgPT0g
U1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSA/IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIC8gMTAw
IDogbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7IH0KKyAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsgfQorICAgIAor
ICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8ZmxvYXQ+
IHZhbHVlRm9yQmluZGluZ3MoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpIGNvbnN0OwotICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGZsb2F0LCBjb25zdCBTVkdMZW5ndGhDb250ZXh0Jik7
Ci0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYs
IGZsb2F0LCBTVkdMZW5ndGhNb2RlLCBTVkdMZW5ndGhUeXBlKTsKIAotICAgIGZsb2F0IHZhbHVl
SW5TcGVjaWZpZWRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
OyB9CiAgICAgdm9pZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxvYXQgdmFsdWUpIHsgbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsgfQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCk7CisgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhU
eXBlLCBTVkdMZW5ndGhNb2RlKTsKIAotICAgIGZsb2F0IHZhbHVlQXNQZXJjZW50YWdlKCkgY29u
c3Q7Ci0KLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmLCBTVkdMZW5ndGhNb2RlKTsKLSAg
ICAKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVk
IHNob3J0LCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0LCBjb25zdCBTVkdMZW5n
dGhDb250ZXh0Jik7CiAKLSAgICAvLyBIZWxwZXIgZnVuY3Rpb25zCi0gICAgYm9vbCBpc1JlbGF0
aXZlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gdHlwZSA9IHVuaXRUeXBlKCk7Ci0gICAg
ICAgIHJldHVybiB0eXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlIHx8IHR5cGUgPT0gTGVuZ3Ro
VHlwZUVNUyB8fCB0eXBlID09IExlbmd0aFR5cGVFWFM7Ci0gICAgfQotCi0gICAgYm9vbCBpc1pl
cm8oKSBjb25zdCAKLSAgICB7Ci0gICAgICAgIHJldHVybiAhbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHM7Ci0gICAgfQotCi0gICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGZyb21DU1NQcmltaXRpdmVW
YWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYpOwotICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IHRvQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKLSAg
ICBzdGF0aWMgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgU1ZHTGVuZ3RoVmFsdWUgYmxlbmQoY29u
c3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGZsb2F0IHByb2dyZXNzKSBjb25zdAotICAgIHsKLSAg
ICAgICAgYXV0byB0b1R5cGUgPSB1bml0VHlwZSgpOwotICAgICAgICBhdXRvIGZyb21UeXBlID0g
ZnJvbS51bml0VHlwZSgpOwotICAgICAgICBpZiAoKGZyb20uaXNaZXJvKCkgJiYgaXNaZXJvKCkp
Ci0gICAgICAgICAgICB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bgotICAgICAgICAg
ICAgfHwgdG9UeXBlID09IExlbmd0aFR5cGVVbmtub3duCi0gICAgICAgICAgICB8fCAoIWZyb20u
aXNaZXJvKCkgJiYgZnJvbVR5cGUgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgJiYgdG9UeXBlID09
IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICAgICAgfHwgKCFpc1plcm8oKSAmJiBmcm9t
VHlwZSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSAmJiB0b1R5cGUgIT0gTGVuZ3RoVHlwZVBlcmNl
bnRhZ2UpCi0gICAgICAgICAgICB8fCAoIWZyb20uaXNaZXJvKCkgJiYgIWlzWmVybygpICYmIChm
cm9tVHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IGZyb21UeXBlID09IExlbmd0aFR5cGVFWFMpICYm
IGZyb21UeXBlICE9IHRvVHlwZSkpCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAgICAg
ICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotCi0gICAgICAgIGlmIChmcm9tVHlwZSA9PSBMZW5n
dGhUeXBlUGVyY2VudGFnZSB8fCB0b1R5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsKLSAg
ICAgICAgICAgIGF1dG8gZnJvbVBlcmNlbnQgPSBmcm9tLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAx
MDA7Ci0gICAgICAgICAgICBhdXRvIHRvUGVyY2VudCA9IHZhbHVlQXNQZXJjZW50YWdlKCkgKiAx
MDA7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVu
aXRzKExlbmd0aFR5cGVQZXJjZW50YWdlLCBXZWJDb3JlOjpibGVuZChmcm9tUGVyY2VudCwgdG9Q
ZXJjZW50LCBwcm9ncmVzcykpOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24o
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICAgICAgcmV0dXJuIGxlbmd0
aDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmcm9tVHlwZSA9PSB0b1R5cGUgfHwgZnJvbS5p
c1plcm8oKSB8fCBpc1plcm8oKSB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRU1TIHx8IGZyb21U
eXBlID09IExlbmd0aFR5cGVFWFMpIHsKLSAgICAgICAgICAgIGF1dG8gZnJvbVZhbHVlID0gZnJv
bS52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKLSAgICAgICAgICAgIGF1dG8gdG9WYWx1ZSA9IHZh
bHVlSW5TcGVjaWZpZWRVbml0cygpOwotICAgICAgICAgICAgaWYgKGlzWmVybygpKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhm
cm9tVHlwZSwgV2ViQ29yZTo6YmxlbmQoZnJvbVZhbHVlLCB0b1ZhbHVlLCBwcm9ncmVzcykpOwot
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGF1dG8gcmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModG9UeXBlLCBXZWJD
b3JlOjpibGVuZChmcm9tVmFsdWUsIHRvVmFsdWUsIHByb2dyZXNzKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgICAg
IH0KLQotICAgICAgICBBU1NFUlQoIWlzUmVsYXRpdmUoKSk7Ci0gICAgICAgIEFTU0VSVCghZnJv
bS5pc1JlbGF0aXZlKCkpOwotCi0gICAgICAgIFNWR0xlbmd0aENvbnRleHQgbm9uUmVsYXRpdmVM
ZW5ndGhDb250ZXh0KG51bGxwdHIpOwotICAgICAgICBhdXRvIGZyb21WYWx1ZUluVXNlclVuaXRz
ID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKGZyb20u
dmFsdWVJblNwZWNpZmllZFVuaXRzKCksIGZyb20udW5pdE1vZGUoKSwgZnJvbVR5cGUpOwotICAg
ICAgICBpZiAoZnJvbVZhbHVlSW5Vc2VyVW5pdHMuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgICAgIGF1dG8gZnJvbVZhbHVlID0gbm9uUmVsYXRpdmVMZW5n
dGhDb250ZXh0LmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZnJvbVZhbHVlSW5Vc2VyVW5pdHMu
cmVsZWFzZVJldHVyblZhbHVlKCksIHVuaXRNb2RlKCksIHRvVHlwZSk7Ci0gICAgICAgIGlmIChm
cm9tVmFsdWUuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotCi0gICAg
ICAgIGZsb2F0IHRvVmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKTsKLSAgICAgICAgYXV0
byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyh0b1R5cGUsIFdlYkNvcmU6
OmJsZW5kKGZyb21WYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgdG9WYWx1ZSwgcHJvZ3Jlc3Mp
KTsKLSAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHJldHVy
biB7IH07Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQorICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBTVkdM
ZW5ndGhUeXBlKTsKIAogcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX3VuaXQ7CisgICAgU1ZHTGVuZ3RoVHlwZSBtX2xlbmd0
aFR5cGUgeyBTVkdMZW5ndGhUeXBlOjpOdW1iZXIgfTsKKyAgICBTVkdMZW5ndGhNb2RlIG1fbGVu
Z3RoTW9kZSB7IFNWR0xlbmd0aE1vZGU6Ok90aGVyIH07CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVj
dCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhWYWx1ZT4gewotICAgIHN0YXRpYyBTVkdMZW5n
dGhWYWx1ZSBpbml0aWFsVmFsdWUoKSB7IHJldHVybiB7IH07IH0KLSAgICBzdGF0aWMgT3B0aW9u
YWw8U1ZHTGVuZ3RoVmFsdWU+IHBhcnNlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBj
b25zdCBTdHJpbmcmIHN0cmluZykKLSAgICB7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIGxlbmd0
aDsKLSAgICAgICAgbGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcoc3RyaW5nLCBTVkdMZW5ndGhWYWx1
ZTo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkuaGFzRXhj
ZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgfQotICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGxlbmd0aCkgeyByZXR1cm4gbGVuZ3Ro
LnZhbHVlQXNTdHJpbmcoKTsgfQotfTsKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBiKQoreworICAgIHJldHVybiBh
LnZhbHVlSW5TcGVjaWZpZWRVbml0cygpID09IGIudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgJiYg
YS5sZW5ndGhUeXBlKCkgPT0gYi5sZW5ndGhUeXBlKCkgJiYgYS5sZW5ndGhNb2RlKCkgPT0gYi5s
ZW5ndGhNb2RlKCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmIGEsIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBiKQoreworICAgIHJldHVybiBhLnZhbHVl
SW5TcGVjaWZpZWRVbml0cygpICE9IGIudmFsdWVJblNwZWNpZmllZFVuaXRzKCkgfHwgYS5sZW5n
dGhUeXBlKCkgIT0gYi5sZW5ndGhUeXBlKCkgfHwgYS5sZW5ndGhNb2RlKCkgIT0gYi5sZW5ndGhN
b2RlKCk7Cit9CiAKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
RWxlbWVudC5jcHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwxMyBAQCB2b2lkIFNW
R0xpbmVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBh
cnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngxQXR0cikK
LSAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gxLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5MUF0dHIpCi0gICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feTEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjp4MkF0dHIpCi0gICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKKyAgICAgICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTJBdHRyKQotICAgICAgICBtX3kyLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVp
Z2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3kyLT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VF
cnJvciwgbmFtZSwgdmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
aAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1NiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsOwogCiAgICAgUHJvcGVydHlSZWdp
c3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdp
ZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MSB7IFNWR0FuaW1hdGVkTGVu
Z3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdM
ZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCwxMyArNjQsMTMgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OnBhcnNlQXR0cgogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0g
Tm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIG1f
eDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94MS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTFBdHRy
KQotICAgICAgICBtX3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3kx
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhN
b2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBT
VkdOYW1lczo6eDJBdHRyKQotICAgICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1feDItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikKLSAgICAgICAgbV95Mi0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUs
IHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwxMCArNTksMTAgQEAg
cHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feDIgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Oldp
ZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kyIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFy
a2VyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDEzICs3OSwxMyBAQCB2b2lk
IFNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgU1ZHUGFyc2luZ0Vycm9y
IHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJlZlhB
dHRyKQotICAgICAgICBtX3JlZlgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAg
bV9yZWZYLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1l
ID09IFNWR05hbWVzOjpyZWZZQXR0cikKLSAgICAgICAgbV9yZWZZLT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX3JlZlktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIpCi0gICAg
ICAgIG1fbWFya2VyV2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9t
YXJrZXJXaWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0cikKLSAgICAgICAgbV9tYXJrZXJIZWln
aHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fbWFya2VySGVpZ2h0LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJz
aW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDEwICs4OCwxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5cGUsIGNvbnN0
IFNWR0FuZ2xlVmFsdWUmKTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lz
dHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcmVmWCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yZWZZIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJr
ZXJXaWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRo
LCAiMyIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX21hcmtlckhlaWdodCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjMiKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yZWZYIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fcmVmWSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJXaWR0
aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
ICIzIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VySGVpZ2h0IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIzIikg
fTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tYXJrZXJVbml0cyB7IFNWR0Fu
aW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdNYXJrZXJVbml0c1N0cm9rZVdpZHRo
KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEFuZ2xlPiBtX29yaWVudEFuZ2xlIHsgU1ZHQW5pbWF0
ZWRBbmdsZTo6Y3JlYXRlKHRoaXMpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkT3JpZW50VHlwZT4g
bV9vcmllbnRUeXBlIHsgU1ZHQW5pbWF0ZWRPcmllbnRUeXBlOjpjcmVhdGUodGhpcywgU1ZHTWFy
a2VyT3JpZW50QW5nbGUpIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyLDEzICs4MiwxMyBAQCB2b2lkIFNWR01hc2tFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3Ig
PSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBt
X3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1v
ZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikK
LSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3Ip
KTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKLSAgICAgICAgbV9oZWlnaHQt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3Io
cGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0Vs
ZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEwICs2NCwxMCBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoLCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQsICItMTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEyMCUiKSB9
OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgsICItMTAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVp
Z2h0LCAiLTEwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEyMCUi
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEyMCUiKSB9OwogICAg
IFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21hc2tVbml0cyB7IFNWR0FuaW1hdGVkRW51
bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNU
Qk9VTkRJTkdCT1gpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbWFza0Nv
bnRlbnRVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0
VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05MywxMyArOTMsMTMgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
YwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChu
YW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAg
ZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVy
cm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAg
ICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMp
KTsKKyAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5n
dGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNl
VmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJp
ZCkpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUs
IHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgJKHJl
dmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
aGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3Ro
TW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJlZjxTVkdBbmltYXRl
ZEVudW1lcmF0aW9uPiBtX3BhdHRlcm5Vbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1gp
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fcGF0dGVybkNvbnRlbnRVbml0
cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdVbml0VHlwZXM6OlNW
R19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkVHJhbnNm
b3JtTGlzdD4gbV9wYXR0ZXJuVHJhbnNmb3JtIHsgU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0Ojpj
cmVhdGUodGhpcykgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTcg
KzY2LDE3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHIKICAgICBT
VkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBT
VkdOYW1lczo6Y3hBdHRyKQotICAgICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1fY3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN5QXR0cikKLSAgICAgICAgbV9jeS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJBdHRyKQotICAgICAgICBtX3It
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVP
dGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAg
ICBtX3ItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xl
bmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1
ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpmeEF0dHIp
Ci0gICAgICAgIG1fZngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9meC0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6ZnlBdHRyKQotICAgICAgICBtX2Z5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwor
ICAgICAgICBtX2Z5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6ZnJBdHRyKQotICAgICAgICBtX2ZyLT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBw
YXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9mci0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3Ro
ZXIsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJp
ZCkpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUs
IHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVu
dEVsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MywxMiArNjMsMTIgQEAg
cHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
SGVpZ2h0LCAiNTAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fciB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyLCAiNTAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
ZnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2ZyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIsICIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX2N4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpXaWR0aCwgIjUwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2N5IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICI1
MCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlciwgIjUwJSIpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1f
ZnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fZnIgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVyLCAiMCUiKSB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxNyArNTgsMTcgQEAgdm9pZCBTVkdSZWN0RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29ucwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9y
ID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAg
bV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZh
bHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIp
Ci0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6cnhBdHRyKQotICAgICAgICBtX3J4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3Ro
VmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJz
ZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ5QXR0cikKLSAgICAgICAgbV9yeS0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUs
IHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3J5LT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZv
cmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAg
ICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVu
Z3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVp
Z2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3Ji
aWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1l
LCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCShyZXZpc2lv
biAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsMTIgKzYxLDEyIEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5k
ZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0
eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0
aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9Owot
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUo
dGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzMSwyMyArMjMxLDIzIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwog
ICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikgewot
ICAgICAgICBhdXRvIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKTsKKyAgICAg
ICAgYXV0byBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpG
b3JiaWQpOwogICAgICAgICBpZiAocGFyc2VFcnJvciAhPSBOb0Vycm9yIHx8IHZhbHVlLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgZGVmaW5pdGVseSB0aGUgY29y
cmVjdCBiZWhhdmlvciBmb3IgYSBtaXNzaW5nL3JlbW92ZWQgYXR0cmlidXRlLgogICAgICAgICAg
ICAgLy8gTm90IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0aGUgZW1wdHkgc3RyaW5nIG9yIGZvciBz
b21ldGhpbmcgdGhhdCBjYW4ndCBiZSBwYXJzZWQuCi0gICAgICAgICAgICBsZW5ndGggPSBTVkdM
ZW5ndGhWYWx1ZShMZW5ndGhNb2RlV2lkdGgsICIxMDAlIl9zKTsKKyAgICAgICAgICAgIGxlbmd0
aCA9IFNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSJfcyk7CiAgICAg
ICAgIH0KICAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKGxlbmd0aCk7CiAgICAg
fSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGF1dG8g
bGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKTsKKyAgICAgICAgYXV0byBsZW5n
dGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKTsKICAg
ICAgICAgaWYgKHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8fCB2YWx1ZS5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgYmVoYXZp
b3IgZm9yIGEgcmVtb3ZlZCBhdHRyaWJ1dGUuCiAgICAgICAgICAgICAvLyBOb3Qgc3VyZSBpdCdz
IGNvcnJlY3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcgb3IgZm9yIHNvbWV0aGluZyB0aGF0IGNhbid0
IGJlIHBhcnNlZC4KLSAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVlKExlbmd0aE1v
ZGVIZWlnaHQsICIxMDAlIl9zKTsKKyAgICAgICAgICAgIGxlbmd0aCA9IFNWR0xlbmd0aFZhbHVl
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjEwMCUiX3MpOwogICAgICAgICB9CiAgICAgICAgIG1f
aGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwobGVuZ3RoKTsKICAgICB9CkBAIC01NzYsMTcgKzU3
NiwxNyBAQCBGbG9hdFNpemUgU1ZHU1ZHRWxlbWVudDo6Y3VycmVudFZpZXdwb3J0CiAKIGJvb2wg
U1ZHU1ZHRWxlbWVudDo6aGFzSW50cmluc2ljV2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiB3
aWR0aCgpLnVuaXRUeXBlKCkgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgcmV0dXJuIHdp
ZHRoKCkubGVuZ3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7CiB9CiAKIGJv
b2wgU1ZHU1ZHRWxlbWVudDo6aGFzSW50cmluc2ljSGVpZ2h0KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gaGVpZ2h0KCkudW5pdFR5cGUoKSAhPSBMZW5ndGhUeXBlUGVyY2VudGFnZTsKKyAgICByZXR1
cm4gaGVpZ2h0KCkubGVuZ3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2U7CiB9
CiAKIExlbmd0aCBTVkdTVkdFbGVtZW50OjppbnRyaW5zaWNXaWR0aCgpIGNvbnN0CiB7Ci0gICAg
aWYgKHdpZHRoKCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICBpZiAo
d2lkdGgoKS5sZW5ndGhUeXBlKCkgPT0gU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAgICAg
ICAgcmV0dXJuIExlbmd0aCgwLCBGaXhlZCk7CiAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0
aENvbnRleHQodGhpcyk7CkBAIC01OTUsNyArNTk1LDcgQEAgTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6
OmludHJpbnNpY1dpZHRoKCkgYwogCiBMZW5ndGggU1ZHU1ZHRWxlbWVudDo6aW50cmluc2ljSGVp
Z2h0KCkgY29uc3QKIHsKLSAgICBpZiAoaGVpZ2h0KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBl
UGVyY2VudGFnZSkKKyAgICBpZiAoaGVpZ2h0KCkubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5
cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiBMZW5ndGgoMCwgRml4ZWQpOwogCiAgICAg
U1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMTAgKzE2NCwxMCBAQCBwcml2
YXRlOgogICAgIFJlZjxTVkdQb2ludD4gbV9jdXJyZW50VHJhbnNsYXRlIHsgU1ZHUG9pbnQ6OmNy
ZWF0ZSgpIH07CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0
aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhl
aWdodCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiX3MpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEwMCUiX3MpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0
ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiX3MpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMTAwJSJfcykgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQg
U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnUKICAgICAgICAgaWYgKHByb3BlcnR5
VmFsdWUgPiAwKQogICAgICAgICAgICAgbV9sZW5ndGhBZGp1c3QtPnNldEJhc2VWYWxJbnRlcm5h
bDxTVkdMZW5ndGhBZGp1c3RUeXBlPihwcm9wZXJ0eVZhbHVlKTsKICAgICB9IGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQotICAgICAgICBtX3RleHRMZW5ndGgtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVPdGhl
ciwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBt
X3RleHRMZW5ndGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRp
dmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJv
cihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKQEAgLTE5Nyw5ICsxOTcsOSBAQCB2b2lkIFNW
R1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlCiAKIFNWR0FuaW1hdGVkTGVuZ3RoJiBT
VkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCiB7Ci0gICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFNWR0xlbmd0aFZhbHVlPiBkZWZhdWx0VGV4dExlbmd0aChMZW5ndGhN
b2RlT3RoZXIpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTVkdMZW5ndGhWYWx1ZT4gZGVm
YXVsdFRleHRMZW5ndGgoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgIGlmIChtX3RleHRMZW5n
dGgtPmJhc2VWYWwoKS0+dmFsdWUoKSA9PSBkZWZhdWx0VGV4dExlbmd0aCkKLSAgICAgICAgbV90
ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCkubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5n
dGhUeXBlTnVtYmVyLCBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSk7CisgICAgICAgIG1fdGV4dExl
bmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpID0geyBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSwgU1ZH
TGVuZ3RoVHlwZTo6TnVtYmVyIH07CiAgICAgcmV0dXJuIG1fdGV4dExlbmd0aDsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkocmV2aXNpb24g
MjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsOSArMTA3LDkgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAg
ICBib29sIGlzVGV4dENvbnRlbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fdGV4dExlbmd0aCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZU90aGVyKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV90ZXh0TGVuZ3RoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdM
ZW5ndGhNb2RlOjpPdGhlcikgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9s
ZW5ndGhBZGp1c3QgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoQWRqdXN0U3BhY2luZykgfTsKLSAgICBTVkdMZW5ndGhWYWx1ZSBtX3NwZWNpZmllZFRleHRM
ZW5ndGggeyBMZW5ndGhNb2RlT3RoZXIgfTsKKyAgICBTVkdMZW5ndGhWYWx1ZSBtX3NwZWNpZmll
ZFRleHRMZW5ndGggeyBTVkdMZW5ndGhNb2RlOjpPdGhlciB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU1ZHVGV4dFBh
dGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSgKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJv
ciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRy
KQotICAgICAgICBtX3N0YXJ0T2Zmc2V0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1fc3RhcnRPZmZzZXQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6Om1ldGhvZEF0dHIpIHsKICAgICAgICAgU1ZHVGV4dFBh
dGhNZXRob2RUeXBlIHByb3BlcnR5VmFsdWUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUZXh0UGF0
aE1ldGhvZFR5cGU+Ojpmcm9tU3RyaW5nKHZhbHVlKTsKICAgICAgICAgaWYgKHByb3BlcnR5VmFs
dWUgPiAwKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkocmV2
aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHNl
bGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFByb3BlcnR5UmVn
aXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fc3RhcnRPZmZzZXQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fc3RhcnRPZmZz
ZXQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Ok90aGVy
KSB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21ldGhvZCB7IFNWR0FuaW1h
dGVkRW51bWVyYXRpb246OmNyZWF0ZSh0aGlzLCBTVkdUZXh0UGF0aE1ldGhvZEFsaWduKSB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX3NwYWNpbmcgeyBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVGV4dFBhdGhTcGFjaW5nRXhhY3QpIH07CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5o
CShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMCArNTcsMTAgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBTVkdQcm9wZXJ0eVJlZ2lzdHJ5JiBwcm9wZXJ0eVJlZ2lzdHJ5KCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9wcm9wZXJ0eVJlZ2lzdHJ5OyB9CiAKICAgICBQcm9wZXJ0eVJl
Z2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoTGlzdD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feSB7IFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlz
dDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0PiBtX2R5IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3ggeyBT
VkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkg
fTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3kgeyBTVkdBbmltYXRlZExlbmd0
aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keCB7IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aExpc3Q+IG1fZHkgeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkTnVtYmVyTGlzdD4gbV9yb3Rh
dGUgeyBTVkdBbmltYXRlZE51bWJlckxpc3Q6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwx
MyArODAsMTMgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdAogICAg
IFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAgIGlmIChuYW1lID09
IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBh
cnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQotICAgICAgICBtX3dp
ZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAg
ICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdh
dGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwg
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZh
bHVlLCBwYXJzZUVycm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwog
CiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVl
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05NiwxMCArOTYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludmFsaWRhdGVEZXBlbmRlbnRT
aGFkb3dUcmVlcygpOwogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkg
eyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsK
IAogICAgIGJvb2wgbV9oYXZlRmlyZWRMb2FkRXZlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9z
aGFkb3dUcmVlTmVlZHNVcGRhdGUgeyB0cnVlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFjY2Vz
c29ySW1wbC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVy
dGllcy9TVkdBbmltYXRlZFByb3BlcnR5QWNjZXNzb3JJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNWR0F0dHJp
YnV0ZUFuaW1hdG9yPiBjcmVhdGVBbmltYXRvcihPd25lclR5cGUmIG93bmVyLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENh
bGNNb2RlIGNhbGNNb2RlLCBib29sIGlzQWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkgY29u
c3QgZmluYWwKICAgICB7Ci0gICAgICAgIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IHByb3Bl
cnR5KG93bmVyKS0+YmFzZVZhbCgpLT52YWx1ZSgpLnVuaXRNb2RlKCk7CisgICAgICAgIFNWR0xl
bmd0aE1vZGUgbGVuZ3RoTW9kZSA9IHByb3BlcnR5KG93bmVyKS0+YmFzZVZhbCgpLT52YWx1ZSgp
Lmxlbmd0aE1vZGUoKTsKICAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6
OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBsZW5ndGhNb2RlKTsKICAgICB9CiAK
QEAgLTE0Niw3ICsxNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3JlYXRlQW5pbWF0b3IoT3duZXJUeXBlJiBvd25lciwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRp
b25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRk
aXRpdmUpIGNvbnN0IGZpbmFsCiAgICAgewotICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRMZW5n
dGhMaXN0QW5pbWF0b3I6OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhN
b2RlV2lkdGgpOworICAgICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0QW5pbWF0b3I6
OmNyZWF0ZShhdHRyaWJ1dGVOYW1lLCBwcm9wZXJ0eShvd25lciksIGFuaW1hdGlvbk1vZGUsIGNh
bGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7
CiAgICAgfQogCiAgICAgdm9pZCBhcHBlbmRBbmltYXRlZEluc3RhbmNlKE93bmVyVHlwZSYgb3du
ZXIsIFNWR0F0dHJpYnV0ZUFuaW1hdG9yJiBhbmltYXRvcikgY29uc3QgZmluYWwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1h
dGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaAkobm9u
ZXhpc3RlbnQpCkBAIC0xLDgzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
LSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBTVkdFbGVtZW50OwotCi1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0
aW9uIHsgICAgICAgICAgICAKLSAgICAvLyBFbXB0eSB2YWx1ZQotICAgIFNWR0FuaW1hdGVkUHJv
cGVydHlEZXNjcmlwdGlvbigpCi0gICAgICAgIDogbV9lbGVtZW50KG51bGxwdHIpCi0gICAgICAg
ICwgbV9hdHRyaWJ1dGVOYW1lKG51bGxwdHIpCi0gICAgewotICAgIH0KLQotICAgIC8vIERlbGV0
ZWQgdmFsdWUKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24oV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fZWxlbWVudChyZWludGVycHJldF9jYXN0
PFNWR0VsZW1lbnQqPigtMSkpCi0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudCA9PSBy
ZWludGVycHJldF9jYXN0PFNWR0VsZW1lbnQqPigtMSk7Ci0gICAgfQotCi0gICAgU1ZHQW5pbWF0
ZWRQcm9wZXJ0eURlc2NyaXB0aW9uKFNWR0VsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJp
bmcmIGF0dHJpYnV0ZU5hbWUpCi0gICAgICAgIDogbV9lbGVtZW50KGVsZW1lbnQpCi0gICAgICAg
ICwgbV9hdHRyaWJ1dGVOYW1lKGF0dHJpYnV0ZU5hbWUuaW1wbCgpKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKG1fZWxlbWVudCk7Ci0gICAgICAgIEFTU0VSVChtX2F0dHJpYnV0ZU5hbWUpOwotICAg
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24mIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZWxlbWVudCA9PSBv
dGhlci5tX2VsZW1lbnQgJiYgbV9hdHRyaWJ1dGVOYW1lID09IG90aGVyLm1fYXR0cmlidXRlTmFt
ZTsKLSAgICB9Ci0KLSAgICBTVkdFbGVtZW50KiBtX2VsZW1lbnQ7Ci0gICAgQXRvbVN0cmluZ0lt
cGwqIG1fYXR0cmlidXRlTmFtZTsKLX07Ci0KLXN0cnVjdCBTVkdBbmltYXRlZFByb3BlcnR5RGVz
Y3JpcHRpb25IYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBTVkdBbmltYXRl
ZFByb3BlcnR5RGVzY3JpcHRpb24mIGtleSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmdI
YXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbik+
KCZrZXkpOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFNWR0FuaW1hdGVk
UHJvcGVydHlEZXNjcmlwdGlvbiYgYSwgY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0
aW9uJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEgPT0gYjsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19Owot
Ci1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaFRyYWl0cyA6IFdURjo6
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzPFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbj4geyB9
OwotIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlvbkltcGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2
ZUxpc3RGdW5jdGlvbkltcGwuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogCiAgICAgICAgIFNWR0xlbmd0
aENvbnRleHQgbGVuZ3RoQ29udGV4dCh0YXJnZXRFbGVtZW50KTsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHRvSXRlbXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFNWR0xl
bmd0aFR5cGUgdW5pdFR5cGUgPSAoaSA8IGZyb21JdGVtcy5zaXplKCkgJiYgcHJvZ3Jlc3MgPCAw
LjUgPyBmcm9tSXRlbXMgOiB0b0l0ZW1zKVtpXS0+dmFsdWUoKS51bml0VHlwZSgpOworICAgICAg
ICAgICAgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlID0gKGkgPCBmcm9tSXRlbXMuc2l6ZSgpICYm
IHByb2dyZXNzIDwgMC41ID8gZnJvbUl0ZW1zIDogdG9JdGVtcylbaV0tPnZhbHVlKCkubGVuZ3Ro
VHlwZSgpOwogCiAgICAgICAgICAgICBmbG9hdCBmcm9tID0gaSA8IGZyb21JdGVtcy5zaXplKCkg
PyBmcm9tSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwogICAgICAg
ICAgICAgZmxvYXQgdG8gPSB0b0l0ZW1zW2ldLT52YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQp
OwpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmbG9hdCB2YWx1ZSA9IGFu
aW1hdGVkSXRlbXNbaV0tPnZhbHVlKCkudmFsdWUobGVuZ3RoQ29udGV4dCk7CiAKICAgICAgICAg
ICAgIHZhbHVlID0gQmFzZTo6YW5pbWF0ZShwcm9ncmVzcywgcmVwZWF0Q291bnQsIGZyb20sIHRv
LCB0b0F0RW5kT2ZEdXJhdGlvbiwgdmFsdWUpOwotICAgICAgICAgICAgYW5pbWF0ZWRJdGVtc1tp
XS0+dmFsdWUoKS5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoTW9kZSwgdW5p
dFR5cGUpOworICAgICAgICAgICAgYW5pbWF0ZWRJdGVtc1tpXS0+dmFsdWUoKS5zZXRWYWx1ZShs
ZW5ndGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwgbGVuZ3RoTW9kZSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGZyb21JdGVtcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIGZyb21WYWx1ZSA9IGZyb21JdGVtc1tpXS0+dmFsdWUoKTsKICAgICAg
ICAgICAgIFNWR0xlbmd0aFZhbHVlJiB0b1ZhbHVlID0gdG9JdGVtc1tpXS0+dmFsdWUoKTsKLSAg
ICAgICAgICAgIHRvVmFsdWUuc2V0VmFsdWUodG9WYWx1ZS52YWx1ZShsZW5ndGhDb250ZXh0KSAr
IGZyb21WYWx1ZS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CisgICAgICAg
ICAgICB0b1ZhbHVlLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIHRvVmFsdWUudmFsdWUobGVuZ3Ro
Q29udGV4dCkgKyBmcm9tVmFsdWUudmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgICAgICB9CiAg
ICAgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGlv
bkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVuY3Rpb25JbXBsLmgJ
KHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0Fu
aW1hdGlvbkFkZGl0aXZlVmFsdWVGdW5jdGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTc3
LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFuaW1hdGUoU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCwgZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdMZW5ndGhW
YWx1ZSYgYW5pbWF0ZWQpCiAgICAgewogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQodGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSBw
cm9ncmVzcyA8IDAuNSA/IG1fZnJvbS51bml0VHlwZSgpIDogbV90by51bml0VHlwZSgpOworICAg
ICAgICBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUgPSBwcm9ncmVzcyA8IDAuNSA/IG1fZnJvbS5s
ZW5ndGhUeXBlKCkgOiBtX3RvLmxlbmd0aFR5cGUoKTsKIAogICAgICAgICBmbG9hdCBmcm9tID0g
KG1fYW5pbWF0aW9uTW9kZSA9PSBBbmltYXRpb25Nb2RlOjpUbyA/IGFuaW1hdGVkIDogbV9mcm9t
KS52YWx1ZShsZW5ndGhDb250ZXh0KTsKICAgICAgICAgZmxvYXQgdG8gPSBtX3RvLnZhbHVlKGxl
bmd0aENvbnRleHQpOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQg
dmFsdWUgPSBhbmltYXRlZC52YWx1ZShsZW5ndGhDb250ZXh0KTsKIAogICAgICAgICB2YWx1ZSA9
IEJhc2U6OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCB0bywgdG9BdEVuZE9m
RHVyYXRpb24sIHZhbHVlKTsKLSAgICAgICAgYW5pbWF0ZWQgPSB7IGxlbmd0aENvbnRleHQsIHZh
bHVlLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBlIH07CisgICAgICAgIGFuaW1hdGVkID0geyBsZW5n
dGhDb250ZXh0LCB2YWx1ZSwgbGVuZ3RoVHlwZSwgbV9sZW5ndGhNb2RlIH07CiAgICAgfQogCiAg
ICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0ZURpc3RhbmNlKFNWR0VsZW1lbnQqIHRhcmdldEVs
ZW1lbnQsIGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5nJiB0bykgY29uc3Qgb3ZlcnJp
ZGUKQEAgLTIwMCw3ICsyMDAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkRnJvbUFuZFRvVmFs
dWVzKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBT
VkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQodGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIG1f
dG8uc2V0VmFsdWUobV90by52YWx1ZShsZW5ndGhDb250ZXh0KSArIG1fZnJvbS52YWx1ZShsZW5n
dGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCk7CisgICAgICAgIG1fdG8uc2V0VmFsdWUobGVuZ3Ro
Q29udGV4dCwgbV90by52YWx1ZShsZW5ndGhDb250ZXh0KSArIG1fZnJvbS52YWx1ZShsZW5ndGhD
b250ZXh0KSk7CiAgICAgfQogCiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFs
dWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5QW5pbWF0b3JJbXBsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDEzICszOSwxMyBAQCBjbGFzcyBTVkdMZW5ndGhBbmltYXRvciBmaW5h
bCA6IHB1YmxpYyBTCiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3Vt
dWxhdGVkLCBib29sIGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1
ZTxTVkdMZW5ndGhBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFu
aW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBMZW5ndGhN
b2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhBbmltYXRvcj4o
YXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9wZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2Rl
LCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZlLCBTVkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAg
fQogCiAgICAgdm9pZCBzdGFydChTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgU3RyaW5nIGJhc2VWYWx1ZSA9IGNvbXB1dGVDU1NQcm9wZXJ0eVZhbHVl
KHRhcmdldEVsZW1lbnQsIGNzc1Byb3BlcnR5SUQobV9hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgp
KSk7Ci0gICAgICAgIFNWR0xlbmd0aFZhbHVlIHZhbHVlKExlbmd0aE1vZGVPdGhlcik7CisgICAg
ICAgIFNWR0xlbmd0aFZhbHVlIHZhbHVlKFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICAgICAg
aWYgKCF2YWx1ZS5zZXRWYWx1ZUFzU3RyaW5nKGJhc2VWYWx1ZSkuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgICAgICBtX3Byb3BlcnR5LT5zZXRWYWx1ZSh2YWx1ZSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvcklt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1
ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdWYWx1ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3RBbmlt
YXRvciBmaW5hbCA6IHB1YmwKIHB1YmxpYzoKICAgICBzdGF0aWMgYXV0byBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgUmVmPFNWR1Byb3BlcnR5PiYmIHByb3BlcnR5
LCBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUsIENhbGNNb2RlIGNhbGNNb2RlLCBib29sIGlz
QWNjdW11bGF0ZWQsIGJvb2wgaXNBZGRpdGl2ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBtYWtl
VW5pcXVlPFNWR0xlbmd0aExpc3RBbmltYXRvcj4oYXR0cmlidXRlTmFtZSwgV1RGTW92ZShwcm9w
ZXJ0eSksIGFuaW1hdGlvbk1vZGUsIGNhbGNNb2RlLCBpc0FjY3VtdWxhdGVkLCBpc0FkZGl0aXZl
LCBMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhM
aXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZTo6
T3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3RhcnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkgb3ZlcnJpZGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378687</attachid>
            <date>2019-09-12 16:17:14 -0700</date>
            <delta_ts>2019-09-12 17:40:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201663-20190912161714.patch</filename>
            <type>text/plain</type>
            <size>131551</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4NiBAQAorMjAxOS0wOS0xMiAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAgIFNWR0xlbmd0
aFZhbHVlIHNob3VsZCB1c2UgdHdvIGVudW1zIGZvciAndHlwZScgYW5kICdtb2RlJyBpbnN0ZWFk
IG9mIG9uZSB1bnNpZ25lZCBmb3IgJ3VuaXRzJworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
RnJhc2VyLCBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgU1ZHTGVuZ3RoVmFsdWUgaGFk
IG9uZSB1bnNpZ25lZCB0byBzdG9yZSBTVkdMZW5ndGhNb2RlIGFuZCBTVkdMZW5ndGhUeXBlLgor
ICAgICAgICBJdCB1c2VkIHRvIGFsbG9jYXRlIHRoZSBsZWFzdCBzaWduaWZpY2FudCA0IGJpdHMg
b2YgdGhpcyB1bnNpZ25lZCB0byB0aGUKKyAgICAgICAgU1ZHTGVuZ3RoTW9kZSB3aGlsZSBpdCBs
ZWF2ZXMgdGhlIHJlc3QgZm9yIFNWR0xlbmd0aFR5cGUuCisKKyAgICAgICAgVGhpcyB3aWxsIG5v
dCBiZSBuZWVkZWQgaWYgU1ZHTGVuZ3RoTW9kZSBhbmQgU1ZHTGVuZ3RoVHlwZSBhcmUgbWFkZSBv
ZgorICAgICAgICBzaXplIHVpbnRfOC4KKworICAgICAgICBBbHNvIGluIHRoaXMgcGF0Y2g6CisK
KyAgICAgICAgLS0gU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlIGlzIG1hZGUgZW51bSBjbGFz
cy4KKworICAgICAgICAtLSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoKSBpcyBtb3ZlZCB0byBTVkdM
ZW5ndGhWYWx1ZS5jcHAgc28gd2UgZG8gbm90CisgICAgICAgICAgIG5lZWQgdG8gaW5jbHVkZSBT
VkdMZW5ndGhDb250ZXh0LmggaW4gU1ZHTGVuZ3RoVmFsdWUuaC4KKworICAgICAgICAtLSBTVkdM
ZW5ndGhUeXBlIGFuZCBTVkdMZW5ndGhNb2RlIGFyZSBtb3ZlZCB0byBTVkdMZW5ndGhWYWx1ZS5o
LiBJbnN0ZWFkCisgICAgICAgICAgIG9mIGhhdmluZyBTVkdMZW5ndGhWYWx1ZS5oIGluY2x1ZGVz
IFNWR0xlbmd0aENvbnR0ZXh0LmgsIHRoZSBvcHBvc2l0ZQorICAgICAgICAgICB3aWxsIGhhcHBl
bi4KKworICAgICAgICAtLSBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpcyBkZWxl
dGVkLiBJdCBzaG91bGQgaGF2ZSBiZWVuIGRlbGV0ZWQKKyAgICAgICAgICAgd2l0aCB0aGUgU1ZH
IHRlYXIgb2ZmIG9iamVjdHMgcmVtb3ZhbC4KKworICAgICAgICAtLSBTVkdQcm9wZXJ0eVRyYWl0
czxTVkdBbmdsZVZhbHVlPiBhbmQgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Cisg
ICAgICAgICAgIGFyZSBkZWxldGVkLiBUaGV5IHNob3VsZCBoYXZlIGJlZW4gZGVsZXRlZCB3aXRo
IFNWR0FuaW1hdGVkVHlwZSByZW1vdmFsLgorCisgICAgICAgIC0tIFNWR0xlbmd0aFZhbHVlOjps
ZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoKSBpcyBkZWxldGVkLiBJdAorICAg
ICAgICAgICB3YXMgb25seSBjYWxsZWQgZnJvbSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGhW
YWx1ZT4uCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFkaWlBbmRDZW50ZXIpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdS
ZWN0Ojp1cGRhdGVTaGFwZUZyb21FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NW
R1BhdGhEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhdGhGcm9tQ2lyY2xlRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpwYXRoRnJvbUVsbGlwc2VFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OnBhdGhGcm9tUmVjdEVsZW1lbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRM
YXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3VsYXRlQmFzZWxpbmVTaGlmdCBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdUZXh0TGF5b3V0RW5naW5lU3BhY2luZzo6Y2FsY3VsYXRlQ1NTS2Vy
bmluZ0FuZFNwYWNpbmcpOgorICAgICAgICAqIHN2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVhckdyYWRpZW50QXR0cmlidXRlczo6TGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvUmFkaWFsR3JhZGllbnRBdHRyaWJ1dGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXM6OlJhZGlhbEdy
YWRpZW50QXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0FuZ2xlVmFsdWUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+Ojppbml0aWFsVmFs
dWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlUcmFpdHM8U1ZHQW5n
bGVWYWx1ZT46OnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHQ3Vyc29yRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBz
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICog
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAq
IHN2Zy9TVkdJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdMZW5ndGg6OnVuaXRUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aDo6c2V0VmFsdWVGb3JCaW5kaW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMZW5ndGg6Om5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TGVuZ3RoOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OnVuaXRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojp2YWx1ZUZvckxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0VmFsdWVUb1Vz
ZXJVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhDb250ZXh0Ojpjb252
ZXJ0VmFsdWVGcm9tVXNlclVuaXRzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0
aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVBlcmNl
bnRhZ2VUb1VzZXJVbml0cyBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aENvbnRleHQu
aDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0xlbmd0aExpc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aExpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogc3Zn
L1NWR0xlbmd0aFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aFR5cGVUb1N0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUxlbmd0aFR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6cHJpbWl0aXZlVHlwZVRvTGVuZ3RoVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpsZW5ndGhU
eXBlVG9QcmltaXRpdmVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpT
VkdMZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpibGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6ZnJvbUNTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp2YWx1ZUZvckJpbmRpbmdzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6c3RvcmVVbml0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RNb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RUeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aFZhbHVlOjp1bml0VHlwZSBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhWYWx1ZTo6dW5pdE1vZGUg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OnZhbHVl
QXNQZXJjZW50YWdlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0
aFZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aFR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHTGVuZ3RoVmFsdWU6OmlzWmVybyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5n
dGhWYWx1ZTo6aXNSZWxhdGl2ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5ndGhW
YWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGVu
Z3RoVmFsdWU6OnZhbHVlSW5TcGVjaWZpZWRVbml0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGVuZ3RoVmFsdWU6OmJsZW5kIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aFZhbHVlPjo6aW5pdGlhbFZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0
aFZhbHVlPjo6cGFyc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHUHJvcGVydHlU
cmFpdHM8U1ZHTGVuZ3RoVmFsdWU+Ojp0b1N0cmluZyk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcv
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5F
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50
Lmg6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAg
ICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NW
R1JlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFzSW50
cmluc2ljV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6aGFz
SW50cmluc2ljSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6
OmludHJpbnNpY1dpZHRoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6
OmludHJpbnNpY0hlaWdodCBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQYXRoRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9w
cm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaDoKKyAgICAgICAgKiBz
dmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZUxpc3RGdW5jdGlv
bkltcGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkxlbmd0aExpc3RGdW5jdGlv
bjo6YW5pbWF0ZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRp
dmVWYWx1ZUZ1bmN0aW9uSW1wbC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0aW9uTGVu
Z3RoRnVuY3Rpb246OmFuaW1hdGUpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVl
UHJvcGVydHlBbmltYXRvckltcGwuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdWYWx1
ZVByb3BlcnR5TGlzdEFuaW1hdG9ySW1wbC5oOgorCiAyMDE5LTA5LTEyICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLVFJdIERyb3AgVGVzdFJ1bm5lci5zZXRQ
cml2YXRlQnJvd3NpbmdFbmFibGVkX0RFUFJFQ0FURUQoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjQ5ODE3
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDYgQEAKIAkJMDg3NTU4QzYxM0I0QTU3RDAwRjQ5
MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg3NTU4QzQxM0I0QTU3RDAwRjQ5MzA3IC8q
IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA4ODUwNjdGMTFEQTA0NUIwMDE4MkI5OCAvKiBQ
YWludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA4ODUwNjdEMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwODg1MDY4MDExREEwNDVCMDAxODJC
OTggLyogUGFpbnRQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDg4NTA2N0UxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50UGhhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwODhBMEUwNjEyNkVG
MURCMDA5NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODhBMERGRDEyNkVGMURCMDA5
NzhGN0EgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDg4QTBFMEMxMjZFRjFEQjAwOTc4
RjdBIC8qIFNWR1Byb3BlcnR5VHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODhBMEUwMzEyNkVGMURCMDA5NzhGN0EgLyogU1ZHUHJvcGVydHlU
cmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwODhDMkY3QTEyMzkwMDgxMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OEMyRjc2MTIz
OTAwODAwMDNENjVDRSAvKiBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcy5oICovOyB9OwogCQkwODk1
ODI1NjBFODU3QTdFMDBGODJDODMgLyogSW1hZ2VMb2FkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OTU4MjU0MEU4NTdBN0UwMEY4MkM4MyAvKiBJ
bWFnZUxvYWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01NTM2LDcgKzU1MzUsNiBAQAogCQkwODc1NThDNDEzQjRBNTdEMDBGNDkzMDcgLyog
U3Vycm9nYXRlUGFpckF3YXJlVGV4dEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwODg1MDY3RDExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhaW50SW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwODg1MDY3RTExREEwNDVCMDAxODJCOTggLyogUGFpbnRQaGFz
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWludFBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4OEEwREZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdB
bmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA4OEEwRTAzMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdQcm9wZXJ0eVRyYWl0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdQcm9wZXJ0eVRyYWl0cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODhDMkY3NTEyMzkwMDgwMDAzRDY1Q0Ug
LyogU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHVGV4dExheW91dEF0dHJpYnV0ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwODhDMkY3NjEyMzkwMDgwMDAzRDY1Q0UgLyogU1ZHVGV4dExheW91dEF0
dHJpYnV0ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVGV4dExheW91
dEF0dHJpYnV0ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDk2LDcgKzE2
MDk0LDYgQEAKIAkJCQk1NUVFNTM1ODIyM0IyOUY5MDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUFjY2Vzc29ySW1wbC5oICovLAogCQkJCTU1RUU1MzVBMjIzQjI5RkIwMEZCQTk0NCAvKiBT
VkdBbmltYXRlZFByb3BlcnR5QW5pbWF0b3IuaCAqLywKIAkJCQk1NUVFNTM1NjIyM0IyOUY3MDBG
QkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oICovLAotCQkJCTA4OEEw
REZEMTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCAq
LywKIAkJCQk1NUVFNTM1QzIyM0IyQTBEMDBGQkE5NDQgLyogU1ZHQW5pbWF0ZWRQcm9wZXJ0eUlt
cGwuaCAqLywKIAkJCQk3MjY2RjAyQTIyNDMxNDlCMDA4MzM5NzUgLyogU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eUxpc3QuaCAqLywKIAkJCQk1NUJFMDI1RTIyM0IyOUM0MDAzMkYwOEEgLyogU1ZHQW5pbWF0
ZWRQcm9wZXJ0eVBhaXJBY2Nlc3Nvci5oICovLApAQCAtMjU1NzksMTAgKzI1NTc2LDEwIEBACiAJ
CQkJQzIzNEE5QUUyMUU5MkMxQTAwM0M5ODREIC8qIFdITFNMQ2hlY2tEdXBsaWNhdGVGdW5jdGlv
bnMuaCAqLywKIAkJCQkxQzg0MEI5QjIxRUM0MDA5MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmNw
cCAqLywKIAkJCQkxQzg0MEI5NzIxRUM0MDA3MDBEMDUwMEQgLyogV0hMU0xDaGVja2VyLmggKi8s
Ci0JCQkJMUMyODFDNkQyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tUZXh0dXJlUmVmZXJl
bmNlcy5jcHAgKi8sCi0JCQkJMUMyODFDNkUyMkI4N0I5ODAwNjkxQzAwIC8qIFdITFNMQ2hlY2tU
ZXh0dXJlUmVmZXJlbmNlcy5oICovLAogCQkJCTUyNEJENDdFMjMyNzdFMTUwMDhGNTZDMSAvKiBX
SExTTENoZWNrUmVmZXJlbmNlVHlwZXMuY3BwICovLAogCQkJCTUyNEJENDgwMjMyNzdFMTYwMDhG
NTZDMSAvKiBXSExTTENoZWNrUmVmZXJlbmNlVHlwZXMuaCAqLywKKwkJCQkxQzI4MUM2RDIyQjg3
Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmNwcCAqLywKKwkJCQkx
QzI4MUM2RTIyQjg3Qjk4MDA2OTFDMDAgLyogV0hMU0xDaGVja1RleHR1cmVSZWZlcmVuY2VzLmgg
Ki8sCiAJCQkJNTIyQkFCOTYyMkU2QTM2MjAwQzU0Q0U5IC8qIFdITFNMQ29kZUxvY2F0aW9uLmgg
Ki8sCiAJCQkJMUM4NkNBNEIyMkFBMTlGRjAwMUJGOTYxIC8qIFdITFNMQ29tcHV0ZURpbWVuc2lv
bnMuY3BwICovLAogCQkJCTFDODZDQTRDMjJBQTE5RkYwMDFCRjk2MSAvKiBXSExTTENvbXB1dGVE
aW1lbnNpb25zLmggKi8sCkBAIC0zMTc4Myw3ICszMTc4MCw2IEBACiAJCQkJMjREOTEyQjgxM0NB
OUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjIyMjc5N0EwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAotCQkJCTA4OEEwRTA2MTI2RUYxREIwMDk3OEY3QSAvKiBTVkdBbmlt
YXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3OTkwMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQjIyMjc5OTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBjbGFzcyBTdHlsZVJ1bGVQYWdl
OwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgU3R5bGVk
RWxlbWVudDsKK2NsYXNzIFNWR0VsZW1lbnQ7CiBjbGFzcyBTVkdTVkdFbGVtZW50OwogY2xhc3Mg
Vmlld3BvcnRTdHlsZVJlc29sdmVyOwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0
eUFuaW1hdGlvbi5jcHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg1
LDcgKzI4NSw3IEBAIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94IGJsZW5kRnVuYyhjb25zdCAKIAog
c3RhdGljIGlubGluZSBTVkdMZW5ndGhWYWx1ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBmcm9tLCBjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICByZXR1cm4gdG8uYmxlbmQoZnJv
bSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgIHJldHVybiBTVkdMZW5n
dGhWYWx1ZTo6YmxlbmQoZnJvbSwgdG8sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3Mp
KTsKIH0KIAogc3RhdGljIGlubGluZSBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+IGJsZW5kRnVuYyhj
b25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZh
bHVlPiYgZnJvbSwgY29uc3QgVmVjdG9yPFNWR0xlbmd0aFZhbHVlPiYgdG8sIGRvdWJsZSBwcm9n
cmVzcykKQEAgLTMwNSw3ICszMDUsNyBAQCBzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhW
YWx1ZT4gYmxlCiAgICAgfQogICAgIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gcmVzdWx0KHJlc3Vs
dExlbmd0aCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRMZW5ndGg7ICsraSkK
LSAgICAgICAgcmVzdWx0W2ldID0gdG9baSAlIHRvTGVuZ3RoXS5ibGVuZChmcm9tW2kgJSBmcm9t
TGVuZ3RoXSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChwcm9ncmVzcykpOworICAgICAgICByZXN1
bHRbaV0gPSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoZnJvbVtpICUgZnJvbUxlbmd0aF0sIHRvW2kg
JSB0b0xlbmd0aF0sIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQocHJvZ3Jlc3MpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZH
UmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU1ZHUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDgg
KzgyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgaW5pdGlhbE1hcmtlck1pZFJlc291
cmNlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIGluaXRpYWxNYXJr
ZXJFbmRSZXNvdXJjZSgpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgc3RhdGljIE1hc2tUeXBl
IGluaXRpYWxNYXNrVHlwZSgpIHsgcmV0dXJuIE1hc2tUeXBlOjpMdW1pbmFuY2U7IH0KLSAgICBz
dGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpOwotICAgIHN0
YXRpYyBTVkdMZW5ndGhWYWx1ZSBpbml0aWFsS2VybmluZygpOworICAgIHN0YXRpYyBTVkdMZW5n
dGhWYWx1ZSBpbml0aWFsQmFzZWxpbmVTaGlmdFZhbHVlKCkgeyByZXR1cm4gU1ZHTGVuZ3RoVmFs
dWUoMCwgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyKTsgfQorICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1
ZSBpbml0aWFsS2VybmluZygpIHsgcmV0dXJuIFNWR0xlbmd0aFZhbHVlKDAsIFNWR0xlbmd0aFR5
cGU6Ok51bWJlcik7IH0KIAogICAgIC8vIFNWRyBDU1MgUHJvcGVydHkgc2V0dGVycwogICAgIHZv
aWQgc2V0QWxpZ25tZW50QmFzZWxpbmUoQWxpZ25tZW50QmFzZWxpbmUgdmFsKSB7IG1fbm9uSW5o
ZXJpdGVkRmxhZ3MuZmxhZ0JpdHMuYWxpZ25tZW50QmFzZWxpbmUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4odmFsKTsgfQpAQCAtMjU2LDIwICsyNTYsNiBAQCBwcml2YXRlOgogICAgIERhdGFSZWY8
U3R5bGVSZXNvdXJjZURhdGE+IG1fbm9uSW5oZXJpdGVkUmVzb3VyY2VEYXRhOwogfTsKIAotaW5s
aW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsQmFzZWxpbmVTaGlmdFZh
bHVlKCkKLXsKLSAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAgbGVuZ3RoLm5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCk7Ci0gICAgcmV0dXJuIGxlbmd0aDsK
LX0KLQotaW5saW5lIFNWR0xlbmd0aFZhbHVlIFNWR1JlbmRlclN0eWxlOjppbml0aWFsS2Vybmlu
ZygpCi17Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoOwotICAgIGxlbmd0aC5uZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDApOwotICAgIHJldHVybiBsZW5ndGg7Ci19
Ci0KIGlubGluZSB2b2lkIFNWR1JlbmRlclN0eWxlOjpzZXRDeChjb25zdCBMZW5ndGgmIGxlbmd0
aCkKIHsKICAgICBpZiAoIShtX2xheW91dERhdGEtPmN4ID09IGxlbmd0aCkpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0VsbGlwc2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHRWxsaXBzZS5jcHAJKHJl
dmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
RWxsaXBzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDggKzc5LDggQEAgdm9pZCBSZW5kZXJT
VkdFbGxpcHNlOjpjYWxjdWxhdGVSYWRpaUFuZAogewogICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dCgmZ3JhcGhpY3NFbGVtZW50KCkpOwogICAgIG1fY2VudGVyID0gRmxvYXRQb2lu
dCgKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxl
KCkuY3goKSwgTGVuZ3RoTW9kZVdpZHRoKSwKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZv
ckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkuY3koKSwgTGVuZ3RoTW9kZUhlaWdodCkpOworICAg
ICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5jeCgp
LCBTVkdMZW5ndGhNb2RlOjpXaWR0aCksCisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLmN5KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpOwog
ICAgIGlmIChpczxTVkdDaXJjbGVFbGVtZW50PihncmFwaGljc0VsZW1lbnQoKSkpIHsKICAgICAg
ICAgZmxvYXQgcmFkaXVzID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2
Z1N0eWxlKCkucigpKTsKICAgICAgICAgbV9yYWRpaSA9IEZsb2F0U2l6ZShyYWRpdXMsIHJhZGl1
cyk7CkBAIC04OSw4ICs4OSw4IEBAIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6Y2FsY3VsYXRlUmFk
aWlBbmQKIAogICAgIEFTU0VSVChpczxTVkdFbGxpcHNlRWxlbWVudD4oZ3JhcGhpY3NFbGVtZW50
KCkpKTsKICAgICBtX3JhZGlpID0gRmxvYXRTaXplKAotICAgICAgICBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpLAot
ICAgICAgICBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS5y
eSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgICAgIGxlbmd0aENvbnRleHQudmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgpLnJ4KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwKKyAg
ICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkucnko
KSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHRWxsaXBzZTo6
ZmlsbFNoYXBlKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAkocmV2aXNpb24gMjQ5
ODE3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0
ZVNoYXBlRnJvbUVsZW1lCiAgICAgbV91c2VQYXRoRmFsbGJhY2sgPSBmYWxzZTsKIAogICAgIFNW
R0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgmcmVjdEVsZW1lbnQoKSk7Ci0gICAgRmxvYXRT
aXplIGJvdW5kaW5nQm94U2l6ZShsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCku
d2lkdGgoKSwgTGVuZ3RoTW9kZVdpZHRoKSwgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChz
dHlsZSgpLmhlaWdodCgpLCBMZW5ndGhNb2RlSGVpZ2h0KSk7CisgICAgRmxvYXRTaXplIGJvdW5k
aW5nQm94U2l6ZShsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkud2lkdGgoKSwg
U1ZHTGVuZ3RoTW9kZTo6V2lkdGgpLCBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
KCkuaGVpZ2h0KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkpOwogCiAgICAgLy8gRWxlbWVudCBp
cyBpbnZhbGlkIGlmIGVpdGhlciBkaW1lbnNpb24gaXMgbmVnYXRpdmUuCiAgICAgaWYgKGJvdW5k
aW5nQm94U2l6ZS53aWR0aCgpIDwgMCB8fCBib3VuZGluZ0JveFNpemUuaGVpZ2h0KCkgPCAwKQpA
QCAtNzQsOCArNzQsOCBAQCB2b2lkIFJlbmRlclNWR1JlY3Q6OnVwZGF0ZVNoYXBlRnJvbUVsZW1l
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2ZpbGxCb3VuZGluZ0JveCA9IEZsb2F0UmVjdChG
bG9hdFBvaW50KGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUoKS5zdmdTdHlsZSgp
LngoKSwgTGVuZ3RoTW9kZVdpZHRoKSwKLSAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxl
bmd0aChzdHlsZSgpLnN2Z1N0eWxlKCkueSgpLCBMZW5ndGhNb2RlSGVpZ2h0KSksCisgICAgbV9m
aWxsQm91bmRpbmdCb3ggPSBGbG9hdFJlY3QoRmxvYXRQb2ludChsZW5ndGhDb250ZXh0LnZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCkuc3ZnU3R5bGUoKS54KCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKSwK
KyAgICAgICAgbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZSgpLnN2Z1N0eWxlKCku
eSgpLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpKSwKICAgICAgICAgYm91bmRpbmdCb3hTaXplKTsK
IAogICAgIC8vIFRvIGRlY2lkZSBpZiB0aGUgc3Ryb2tlIGNvbnRhaW5zIGEgcG9pbnQgd2UgY3Jl
YXRlIHR3byByZWN0cyB3aGljaCByZXByZXNlbnQgdGhlIGlubmVyIGFuZApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdQYXRoRGF0YS5jcHAJKHJldmlzaW9uIDI0OTgx
NykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUGF0aERhdGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw4ICs1Miw4IEBAIHN0YXRpYyBQYXRoIHBhdGhGcm9tQ2lyY2xlRWxl
bWVudChjb25zdCAKICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENvbnRleHQoJmVsZW1lbnQp
OwogICAgIGZsb2F0IHIgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0
eWxlKCkucigpKTsKICAgICBpZiAociA+IDApIHsKLSAgICAgICAgZmxvYXQgY3ggPSBsZW5ndGhD
b250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3goKSwgTGVuZ3RoTW9kZVdp
ZHRoKTsKLSAgICAgICAgZmxvYXQgY3kgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnN2Z1N0eWxlKCkuY3koKSwgTGVuZ3RoTW9kZUhlaWdodCk7CisgICAgICAgIGZsb2F0IGN4
ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLmN4KCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKTsKKyAgICAgICAgZmxvYXQgY3kgPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3koKSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
KTsKICAgICAgICAgcGF0aC5hZGRFbGxpcHNlKEZsb2F0UmVjdChjeCAtIHIsIGN5IC0gciwgciAq
IDIsIHIgKiAyKSk7CiAgICAgfQogICAgIHJldHVybiBwYXRoOwpAQCAtNjcsMTcgKzY3LDE3IEBA
IHN0YXRpYyBQYXRoIHBhdGhGcm9tRWxsaXBzZUVsZW1lbnQoY29uc3QKIAogICAgIGF1dG8mIHN0
eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250
ZXh0KCZlbGVtZW50KTsKLSAgICBmbG9hdCByeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpOworICAgIGZsb2F0IHJ4
ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ4KCksIFNW
R0xlbmd0aE1vZGU6OldpZHRoKTsKICAgICBpZiAocnggPD0gMCkKICAgICAgICAgcmV0dXJuIHsg
fTsKIAotICAgIGZsb2F0IHJ5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5z
dmdTdHlsZSgpLnJ5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgIGZsb2F0IHJ5ID0gbGVuZ3Ro
Q29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgpLnJ5KCksIFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCk7CiAgICAgaWYgKHJ5IDw9IDApCiAgICAgICAgIHJldHVybiB7IH07CiAKICAg
ICBQYXRoIHBhdGg7Ci0gICAgZmxvYXQgY3ggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3Ro
KHN0eWxlLnN2Z1N0eWxlKCkuY3goKSwgTGVuZ3RoTW9kZVdpZHRoKTsKLSAgICBmbG9hdCBjeSA9
IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5jeSgpLCBMZW5n
dGhNb2RlSGVpZ2h0KTsKKyAgICBmbG9hdCBjeCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5n
dGgoc3R5bGUuc3ZnU3R5bGUoKS5jeCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7CisgICAgZmxv
YXQgY3kgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkuY3ko
KSwgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KTsKICAgICBwYXRoLmFkZEVsbGlwc2UoRmxvYXRSZWN0
KGN4IC0gcngsIGN5IC0gcnksIHJ4ICogMiwgcnkgKiAyKSk7CiAgICAgcmV0dXJuIHBhdGg7CiB9
CkBAIC0xMzgsMTkgKzEzOCwxOSBAQCBzdGF0aWMgUGF0aCBwYXRoRnJvbVJlY3RFbGVtZW50KGNv
bnN0IFNWCiAKICAgICBhdXRvJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHlsZSgpOwogICAgIFNWR0xl
bmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dCgmZWxlbWVudCk7Ci0gICAgZmxvYXQgd2lkdGggPSBs
ZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLndpZHRoKCksIExlbmd0aE1vZGVXaWR0
aCk7CisgICAgZmxvYXQgd2lkdGggPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxl
LndpZHRoKCksIFNWR0xlbmd0aE1vZGU6OldpZHRoKTsKICAgICBpZiAod2lkdGggPD0gMCkKICAg
ICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGZsb2F0IGhlaWdodCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuaGVpZ2h0KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgIGZsb2F0
IGhlaWdodCA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuaGVpZ2h0KCksIFNW
R0xlbmd0aE1vZGU6OkhlaWdodCk7CiAgICAgaWYgKGhlaWdodCA8PSAwKQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgUGF0aCBwYXRoOwotICAgIGZsb2F0IHggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkueCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAg
IGZsb2F0IHkgPSBsZW5ndGhDb250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCku
eSgpLCBMZW5ndGhNb2RlSGVpZ2h0KTsKLSAgICBmbG9hdCByeCA9IGxlbmd0aENvbnRleHQudmFs
dWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5bGUoKS5yeCgpLCBMZW5ndGhNb2RlV2lkdGgpOwotICAg
IGZsb2F0IHJ5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChzdHlsZS5zdmdTdHlsZSgp
LnJ5KCksIExlbmd0aE1vZGVIZWlnaHQpOworICAgIGZsb2F0IHggPSBsZW5ndGhDb250ZXh0LnZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkueCgpLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCk7
CisgICAgZmxvYXQgeSA9IGxlbmd0aENvbnRleHQudmFsdWVGb3JMZW5ndGgoc3R5bGUuc3ZnU3R5
bGUoKS55KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCk7CisgICAgZmxvYXQgcnggPSBsZW5ndGhD
b250ZXh0LnZhbHVlRm9yTGVuZ3RoKHN0eWxlLnN2Z1N0eWxlKCkucngoKSwgU1ZHTGVuZ3RoTW9k
ZTo6V2lkdGgpOworICAgIGZsb2F0IHJ5ID0gbGVuZ3RoQ29udGV4dC52YWx1ZUZvckxlbmd0aChz
dHlsZS5zdmdTdHlsZSgpLnJ5KCksIFNWR0xlbmd0aE1vZGU6OkhlaWdodCk7CiAgICAgYm9vbCBo
YXNSeCA9IHJ4ID4gMDsKICAgICBib29sIGhhc1J5ID0gcnkgPiAwOwogICAgIGlmIChoYXNSeCB8
fCBoYXNSeSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5
b3V0RW5naW5lQmFzZWxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZUJhc2VsaW5lLmNwcAkocmV2aXNpb24gMjQ5ODE3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lQmFz
ZWxpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGZsb2F0IFNWR1RleHRM
YXlvdXRFbmdpbmVCYXNlbGluZTo6Y2FsY3UKIHsKICAgICBpZiAoc3R5bGUuYmFzZWxpbmVTaGlm
dCgpID09IEJhc2VsaW5lU2hpZnQ6Okxlbmd0aCkgewogICAgICAgICBhdXRvIGJhc2VsaW5lU2hp
ZnRWYWx1ZUxlbmd0aCA9IHN0eWxlLmJhc2VsaW5lU2hpZnRWYWx1ZSgpOwotICAgICAgICBpZiAo
YmFzZWxpbmVTaGlmdFZhbHVlTGVuZ3RoLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRh
Z2UpCisgICAgICAgIGlmIChiYXNlbGluZVNoaWZ0VmFsdWVMZW5ndGgubGVuZ3RoVHlwZSgpID09
IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgICAgICByZXR1cm4gYmFzZWxpbmVT
aGlmdFZhbHVlTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7
CiAKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KGNvbnRleHQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TGF5b3V0RW5naW5lU3BhY2lu
Zy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0
TGF5b3V0RW5naW5lU3BhY2luZy5jcHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dExheW91dEVuZ2luZVNwYWNpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIGZsb2F0IFNWR1RleHRMYXlvdXRFbmdpbmVTcGFjaW5n
OjpjYWxjdWwKIHsKICAgICBmbG9hdCBrZXJuaW5nID0gMDsKICAgICBhdXRvIGtlcm5pbmdMZW5n
dGggPSBzdHlsZS0+a2VybmluZygpOwotICAgIGlmIChrZXJuaW5nTGVuZ3RoLnVuaXRUeXBlKCkg
PT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKGtlcm5pbmdMZW5ndGgubGVuZ3RoVHlw
ZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIGtlcm5pbmcgPSBrZXJu
aW5nTGVuZ3RoLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBtX2ZvbnQucGl4ZWxTaXplKCk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3RoQ29udGV4dChjb250ZXh0RWxl
bWVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL0xpbmVhckdyYWRpZW50QXR0cmli
dXRlcy5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvTGluZWFyR3Jh
ZGllbnRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAgc3RydWN0
IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyA6IEdyYWRpZQogICAgIExpbmVhckdyYWRpZW50QXR0
cmlidXRlcygpCiAgICAgICAgIDogbV94MSgpCiAgICAgICAgICwgbV95MSgpCi0gICAgICAgICwg
bV94MihMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikKKyAgICAgICAgLCBtX3gyKFNWR0xlbmd0aE1v
ZGU6OldpZHRoLCAiMTAwJSIpCiAgICAgICAgICwgbV95MigpCiAgICAgICAgICwgbV94MVNldChm
YWxzZSkKICAgICAgICAgLCBtX3kxU2V0KGZhbHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9SYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1JhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw5ICsyNSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFJhZGlhbEdy
YWRpZW50QXR0cmlidXRlcyA6IEdyYWRpZW50QXR0cmlidXRlcyB7CiAgICAgUmFkaWFsR3JhZGll
bnRBdHRyaWJ1dGVzKCkKLSAgICAgICAgOiBtX2N4KExlbmd0aE1vZGVXaWR0aCwgIjUwJSIpCi0g
ICAgICAgICwgbV9jeShMZW5ndGhNb2RlV2lkdGgsICI1MCUiKQotICAgICAgICAsIG1fcihMZW5n
dGhNb2RlV2lkdGgsICI1MCUiKQorICAgICAgICA6IG1fY3goU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
ICI1MCUiKQorICAgICAgICAsIG1fY3koU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUiKQorICAg
ICAgICAsIG1fcihTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjUwJSIpCiAgICAgICAgICwgbV9jeFNl
dChmYWxzZSkKICAgICAgICAgLCBtX2N5U2V0KGZhbHNlKQogICAgICAgICAsIG1fclNldChmYWxz
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaAkocmV2aXNpb24gMjQ5ODE3KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTYsMTAgKzU2LDQgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0
cyB7IDAgfTsKIH07CiAKLXRlbXBsYXRlPD4KLXN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdB
bmdsZVZhbHVlPiB7Ci0gICAgc3RhdGljIFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyBy
ZXR1cm4gU1ZHQW5nbGVWYWx1ZSgpOyB9Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBTVkdBbmdsZVZhbHVlJiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQot
fTsKLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMSArNTQsMTEgQEAgdm9pZCBTVkdDaXJjbGVFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpjeEF0dHIpCi0gICAgICAgIG1fY3gt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVX
aWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3lBdHRyKQot
ICAgICAgICBtX2N5LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVj
dChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N5LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdO
YW1lczo6ckF0dHIpCi0gICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6T3RoZXIsIHZhbHVlLCBwYXJzZUVy
cm9yLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCkpOwogCiAgICAgcmVwb3J0
QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVlKTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw5ICs1NSw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24m
KSBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRM
ZW5ndGg+IG1fY3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVI
ZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5jcHAJKHJldmlzaW9u
IDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjQsOSArNjQsOSBAQCB2b2lkIFNWR0N1cnNvckVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwog
CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRl
cm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFs
dWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDdXJz
b3JFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNvckVs
ZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0N1cnNv
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsOCArNjEsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25z
dCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRo
aXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVp
Z2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIEhhc2hTZXQ8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+IG1f
Y2xpZW50czsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTMgKzU1LDEzIEBAIHZvaWQgU1ZHRWxs
aXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VF
cnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6Y3hBdHRyKQotICAg
ICAgICBtX2N4LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fY3gtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Oldp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
OmN5QXR0cikKLSAgICAgICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV9jeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAgICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VF
cnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fcngtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsK
ICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAg
bV9yeS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1
ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJz
ZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxs
aXBzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEwIEBAIHByaXZhdGU6
CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBmaW5hbDsKIAogICAgIFByb3Bl
cnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fY3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fY3kgeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J5IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X2N5IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWln
aHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3J4IHsgU1ZHQW5pbWF0ZWRMZW5n
dGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1fcnkgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xl
bmd0aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0OTgxNykK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzYsMTMgKzc2LDEzIEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY28KICAgICAgICAgaWYgKHByb3BlcnR5VmFsdWUgPiAwKQogICAgICAgICAgICAgbV9wcmlt
aXRpdmVVbml0cy0+c2V0QmFzZVZhbEludGVybmFsPFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+
KHByb3BlcnR5VmFsdWUpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAg
ICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBh
cnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjksMTAgKzY5LDEw
IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAq
dGhpcyB9OwogICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX2ZpbHRlclVuaXRzIHsg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR1VuaXRUeXBlczo6U1ZHX1VO
SVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbj4gbV9wcmltaXRpdmVVbml0cyB7IFNWR0FuaW1hdGVkRW51bWVyYXRpb246OmNyZWF0ZSh0
aGlzLCBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfVVNFUlNQQUNFT05VU0UpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIExlbmd0aE1vZGVXaWR0aCwgIi0xMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0
LCAiLTEwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNy
ZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiMTIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OldpZHRoLCAiLTEwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kg
eyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwg
Ii0xMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMjAlIikgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMjAlIikgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lv
biAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTMgKzUxLDEzIEBAIHZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVu
Z3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJy
b3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAg
ICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQt
PnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1v
ZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjpyZXN1bHRBdHRyKQogICAgICAgICBtX3Jlc3VsdC0+c2V0QmFzZVZhbEludGVybmFs
KHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMjQ5ODE3KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NSwxMCArNzUsMTAgQEAgcHJpdmF0ZToKIAogICAgIC8vIFNw
ZWM6IElmIHRoZSB4L3kgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMCUiIHdlcmUgc3BlY2lmaWVkLgogICAgIC8vIFNwZWM6IElmIHRo
ZSB3aWR0aC9oZWlnaHQgYXR0cmlidXRlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBlZmZlY3QgaXMg
YXMgaWYgYSB2YWx1ZSBvZiAiMTAwJSIgd2VyZSBzcGVjaWZpZWQuCi0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIjAlIikgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjAlIikgfTsKLSAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjEwMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0
aE1vZGVIZWlnaHQsICIxMDAlIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7
IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIw
JSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIjAlIikgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRo
aXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMTAwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6SGVpZ2h0LCAiMTAwJSIpIH07CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBt
X3Jlc3VsdCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksMTMgKzU5LDEzIEBAIHZvaWQgU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmkKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJv
ciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAg
IG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3Ro
TW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3Ry
dWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9k
ZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZH
TmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6
OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAg
ICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdo
dC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9k
ZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VW
YWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJv
cihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsMTAgKzU4LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhz
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBt
X3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3Ro
PiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lk
dGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1hdGVk
TGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0
aE1vZGU6OkhlaWdodCkgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTMgKzc5LDEzIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb24K
ICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFt
ZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVs
c2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJ
bnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVl
LCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAg
bV93aWR0aC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7
CisgICAgICAgIG1fd2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3Ro
TmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJy
b3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0
LCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQp
KTsKIAogICAgIHJlcG9ydEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2
YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksMTAgKzY5LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkg
ZmluYWw7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5p
bWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsKKyAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogICAgIFJl
ZjxTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8+IG1fcHJlc2VydmVBc3BlY3RSYXRpbyB7
IFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbzo6Y3JlYXRlKHRoaXMpIH07CiAgICAgU1ZH
SW1hZ2VMb2FkZXIgbV9pbWFnZUxvYWRlcjsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5o
CShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKICNpbmNs
dWRlICJTVkdWYWx1ZVByb3BlcnR5LmgiCiAKQEAgLTM4LDE3ICszOSwxNyBAQCBjbGFzcyBTVkdM
ZW5ndGggOiBwdWJsaWMgU1ZHVmFsdWVQcm9wZXJ0CiBwdWJsaWM6CiAgICAgLy8gRm9yd2FyZCBk
ZWNsYXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5l
cmF0aW9uCiAgICAgZW51bSB7Ci0gICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gPSBMZW5n
dGhUeXBlVW5rbm93biwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfTlVNQkVSID0gTGVuZ3RoVHlw
ZU51bWJlciwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfUEVSQ0VOVEFHRSA9IExlbmd0aFR5cGVQ
ZXJjZW50YWdlLAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9FTVMgPSBMZW5ndGhUeXBlRU1TLAot
ICAgICAgICBTVkdfTEVOR1RIVFlQRV9FWFMgPSBMZW5ndGhUeXBlRVhTLAotICAgICAgICBTVkdf
TEVOR1RIVFlQRV9QWCA9IExlbmd0aFR5cGVQWCwKLSAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00g
PSBMZW5ndGhUeXBlQ00sCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX01NID0gTGVuZ3RoVHlwZU1N
LAotICAgICAgICBTVkdfTEVOR1RIVFlQRV9JTiA9IExlbmd0aFR5cGVJTiwKLSAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfUFQgPSBMZW5ndGhUeXBlUFQsCi0gICAgICAgIFNWR19MRU5HVEhUWVBFX1BD
ID0gTGVuZ3RoVHlwZVBDCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1VOS05PV04gICAgICA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpVbmtub3duKSwKKyAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfTlVNQkVSICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0
aFR5cGU6Ok51bWJlciksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX1BFUkNFTlRBR0UgICA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSwKKyAgICAgICAg
U1ZHX0xFTkdUSFRZUEVfRU1TICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xl
bmd0aFR5cGU6OkVtcyksCisgICAgICAgIFNWR19MRU5HVEhUWVBFX0VYUyAgICAgICAgICA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihTVkdMZW5ndGhUeXBlOjpFeHMpLAorICAgICAgICBTVkdfTEVO
R1RIVFlQRV9QWCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlw
ZTo6UGl4ZWxzKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfQ00gICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzKSwKKyAgICAgICAgU1ZH
X0xFTkdUSFRZUEVfTU0gICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0
aFR5cGU6Ok1pbGxpbWV0ZXJzKSwKKyAgICAgICAgU1ZHX0xFTkdUSFRZUEVfSU4gICAgICAgICAg
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFNWR0xlbmd0aFR5cGU6OkluY2hlcyksCisgICAgICAg
IFNWR19MRU5HVEhUWVBFX1BUICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihTVkdM
ZW5ndGhUeXBlOjpQb2ludHMpLAorICAgICAgICBTVkdfTEVOR1RIVFlQRV9QQyAgICAgICAgICAg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oU1ZHTGVuZ3RoVHlwZTo6UGljYXMpCiAgICAgfTsKIAog
ICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoPiBjcmVhdGUoKQpAQCAtNzksOSArODAsOSBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBTVkdMZW5ndGg6OmNyZWF0ZShtX3ZhbHVlKTsKICAgICB9CiAK
LSAgICB1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSgpCisgICAgdW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUoKSAgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlLnVuaXRUeXBlKCk7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV92YWx1ZS5sZW5ndGhUeXBlKCkp
OwogICAgIH0KIAogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRpbmdzKCkKQEAg
LTk0LDcgKzk1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXNSZWFkT25seSgpKQogICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9kaWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAK
LSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVlLnNldFZhbHVlKHZhbHVlLCBTVkdMZW5ndGhD
b250ZXh0IHsgY29udGV4dEVsZW1lbnQoKSB9KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBtX3Zh
bHVlLnNldFZhbHVlKFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0RWxlbWVudCgpIH0sIHZhbHVl
KTsKICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIApAQCAtMTM1LDEyICsxMzYsMTIgQEAgcHVibGljOgogICAgICAg
ICBpZiAoaXNSZWFkT25seSgpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vTW9k
aWZpY2F0aW9uQWxsb3dlZEVycm9yIH07CiAKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3ZhbHVl
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7
Ci0gICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICAKKyAgICAgICAgaWYgKHVuaXRUeXBlID09IFNWR19MRU5HVEhUWVBF
X1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfTEVOR1RIVFlQRV9QQykKKyAgICAgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OworCisgICAgICAgIG1fdmFsdWUg
PSB7IHZhbHVlSW5TcGVjaWZpZWRVbml0cywgc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoVHlwZT4odW5p
dFR5cGUpLCBtX3ZhbHVlLmxlbmd0aE1vZGUoKSB9OwogICAgICAgICBjb21taXRDaGFuZ2UoKTsK
LSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQg
c2hvcnQgdW5pdFR5cGUpCkBAIC0xNDgsMTAgKzE0OSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChpc1JlYWRPbmx5KCkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm9Nb2RpZmlj
YXRpb25BbGxvd2VkRXJyb3IgfTsKIAotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdmFsdWUuY29u
dmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIFNWR0xlbmd0aENvbnRleHQgeyBjb250ZXh0
RWxlbWVudCgpIH0pOworICAgICAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0xFTkdUSFRZUEVfVU5L
Tk9XTiB8fCB1bml0VHlwZSA+IFNWR19MRU5HVEhUWVBFX1BDKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yIH07CisKKyAgICAgICAgYXV0byByZXN1bHQg
PSBtX3ZhbHVlLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKFNWR0xlbmd0aENvbnRleHQgeyBjb250
ZXh0RWxlbWVudCgpIH0sIHN0YXRpY19jYXN0PFNWR0xlbmd0aFR5cGU+KHVuaXRUeXBlKSk7CiAg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgICAgICAKKwogICAgICAgICBjb21taXRDaGFuZ2UoKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aENvbnRleHQu
Y3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRl
ZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IEFkb2Jl
IFN5c3RlbXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKQEAgLTg1LDEw
ICs4NSwxMCBAQCBmbG9hdCBTVkdMZW5ndGhDb250ZXh0OjpyZXNvbHZlTGVuZ3RoKGNvCiAgICAg
cmV0dXJuIHgudmFsdWVBc1BlcmNlbnRhZ2UoKTsKIH0KIAotZmxvYXQgU1ZHTGVuZ3RoQ29udGV4
dDo6dmFsdWVGb3JMZW5ndGgoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIFNWR0xlbmd0aE1vZGUgbW9k
ZSkKK2Zsb2F0IFNWR0xlbmd0aENvbnRleHQ6OnZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYg
bGVuZ3RoLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCiB7CiAgICAgaWYgKGxlbmd0aC5pc1Bl
cmNlbnQoKSkgewotICAgICAgICBhdXRvIHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50
YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZhbHVlKCkgLyAxMDAsIG1vZGUpOworICAgICAgICBhdXRv
IHJlc3VsdCA9IGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHMobGVuZ3RoLnZh
bHVlKCkgLyAxMDAsIGxlbmd0aE1vZGUpOwogICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFz
ZVJldHVyblZhbHVlKCk7CkBAIC05OSw0OSArOTksNDkgQEAgZmxvYXQgU1ZHTGVuZ3RoQ29udGV4
dDo6dmFsdWVGb3JMZW5ndGgoYwogICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7CiAgICAgZGV0
ZXJtaW5lVmlld3BvcnQodmlld3BvcnRTaXplKTsKIAotICAgIHN3aXRjaCAobW9kZSkgewotICAg
IGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAgIHN3aXRjaCAobGVuZ3RoTW9kZSkgeworICAgIGNh
c2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVu
Z3RoKGxlbmd0aCwgdmlld3BvcnRTaXplLndpZHRoKCkpOwotICAgIGNhc2UgTGVuZ3RoTW9kZUhl
aWdodDoKKyAgICBjYXNlIFNWR0xlbmd0aE1vZGU6OkhlaWdodDoKICAgICAgICAgcmV0dXJuIGZs
b2F0VmFsdWVGb3JMZW5ndGgobGVuZ3RoLCB2aWV3cG9ydFNpemUuaGVpZ2h0KCkpOwotICAgIGNh
c2UgTGVuZ3RoTW9kZU90aGVyOgorICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6T3RoZXI6CiAgICAg
ICAgIHJldHVybiBmbG9hdFZhbHVlRm9yTGVuZ3RoKGxlbmd0aCwgc3RkOjpzcXJ0KHZpZXdwb3J0
U2l6ZS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSAvIDIpKTsKICAgICB9OwogICAgIHJldHVybiAw
OwogfQogCi1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVl
VG9Vc2VyVW5pdHMoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3RoVHlw
ZSBmcm9tVW5pdCkgY29uc3QKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhU
eXBlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIFNW
R0xlbmd0aENvbnRleHQgY2FycmllcyBhIGN1c3RvbSB2aWV3cG9ydCwgZm9yY2UgcmVzb2x2aW5n
IGFnYWluc3QgaXQuCiAgICAgaWYgKCFtX292ZXJyaWRkZW5WaWV3cG9ydC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3JpY2FsIHJl
YXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgICAgIGlmIChmcm9t
VW5pdCA9PSBMZW5ndGhUeXBlUGVyY2VudGFnZSkKKyAgICAgICAgaWYgKGxlbmd0aFR5cGUgPT0g
U1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZSkKICAgICAgICAgICAgIHZhbHVlIC89IDEwMDsKLSAg
ICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21QZXJjZW50YWdlVG9Vc2VyVW5pdHModmFsdWUs
IG1vZGUpOworICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJV
bml0cyh2YWx1ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCi0gICAgc3dpdGNoIChmcm9tVW5pdCkg
ewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CisgICAgc3dpdGNoIChsZW5ndGhUeXBlKSB7
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBpeGVsczoKICAg
ICAgICAgcmV0dXJuIHZhbHVlOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6Ci0gICAg
ICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKHZhbHVlIC8g
MTAwLCBtb2RlKTsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6CisgICAgY2FzZSBTVkdMZW5ndGhU
eXBlOjpQZXJjZW50YWdlOgorICAgICAgICByZXR1cm4gY29udmVydFZhbHVlRnJvbVBlcmNlbnRh
Z2VUb1VzZXJVbml0cyh2YWx1ZSAvIDEwMCwgbGVuZ3RoTW9kZSk7CisgICAgY2FzZSBTVkdMZW5n
dGhUeXBlOjpFbXM6CiAgICAgICAgIHJldHVybiBjb252ZXJ0VmFsdWVGcm9tRU1TVG9Vc2VyVW5p
dHModmFsdWUpOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVYUzoKKyAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6OkV4czoKICAgICAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21FWFNUb1VzZXJVbml0cyh2
YWx1ZSk7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpD
ZW50aW1ldGVyczoKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDIu
NTRmOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TWls
bGltZXRlcnM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIGNzc1BpeGVsc1BlckluY2ggLyAyNS40
ZjsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkluY2hl
czoKICAgICAgICAgcmV0dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExl
bmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBvaW50czoKICAgICAgICAgcmV0
dXJuIHZhbHVlICogY3NzUGl4ZWxzUGVySW5jaCAvIDcyOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBD
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGljYXM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAq
IGNzc1BpeGVsc1BlckluY2ggLyA2OwogICAgIH0KIApAQCAtMTQ5LDMwICsxNDksMzAgQEAgRXhj
ZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbgogICAgIHJldHVybiAwOwogfQog
Ci1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVz
ZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlLCBTVkdMZW5ndGhUeXBlIHRv
VW5pdCkgY29uc3QKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpjb252ZXJ0
VmFsdWVGcm9tVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUs
IFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSkgY29uc3QKIHsKLSAgICBzd2l0Y2ggKHRvVW5pdCkg
ewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246CisgICAgc3dpdGNoIChsZW5ndGhUeXBlKSB7
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CiAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAg
ICBjYXNlIExlbmd0aFR5cGVQZXJjZW50YWdlOgotICAgICAgICByZXR1cm4gY29udmVydFZhbHVl
RnJvbVVzZXJVbml0c1RvUGVyY2VudGFnZSh2YWx1ZSAqIDEwMCwgbW9kZSk7Ci0gICAgY2FzZSBM
ZW5ndGhUeXBlRU1TOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGVyY2VudGFnZToKKyAgICAg
ICAgcmV0dXJuIGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHNUb1BlcmNlbnRhZ2UodmFsdWUgKiAx
MDAsIGxlbmd0aE1vZGUpOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RW1zOgogICAgICAgICBy
ZXR1cm4gY29udmVydFZhbHVlRnJvbVVzZXJVbml0c1RvRU1TKHZhbHVlKTsKLSAgICBjYXNlIExl
bmd0aFR5cGVFWFM6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFeHM6CiAgICAgICAgIHJldHVy
biBjb252ZXJ0VmFsdWVGcm9tVXNlclVuaXRzVG9FWFModmFsdWUpOwotICAgIGNhc2UgTGVuZ3Ro
VHlwZVBYOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGl4ZWxzOgogICAgICAgICByZXR1cm4g
dmFsdWU7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpD
ZW50aW1ldGVyczoKICAgICAgICAgcmV0dXJuIHZhbHVlICogMi41NGYgLyBjc3NQaXhlbHNQZXJJ
bmNoOwotICAgIGNhc2UgTGVuZ3RoVHlwZU1NOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TWls
bGltZXRlcnM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIDI1LjRmIC8gY3NzUGl4ZWxzUGVySW5j
aDsKLSAgICBjYXNlIExlbmd0aFR5cGVJTjoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkluY2hl
czoKICAgICAgICAgcmV0dXJuIHZhbHVlIC8gY3NzUGl4ZWxzUGVySW5jaDsKLSAgICBjYXNlIExl
bmd0aFR5cGVQVDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBvaW50czoKICAgICAgICAgcmV0
dXJuIHZhbHVlICogNzIgLyBjc3NQaXhlbHNQZXJJbmNoOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBD
OgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGljYXM6CiAgICAgICAgIHJldHVybiB2YWx1ZSAq
IDYgLyBjc3NQaXhlbHNQZXJJbmNoOwogICAgIH0KIApAQCAtMTgwLDE4ICsxODAsMTggQEAgRXhj
ZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbgogICAgIHJldHVybiAwOwogfQog
Ci1FeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29udmVydFZhbHVlRnJvbVVz
ZXJVbml0c1RvUGVyY2VudGFnZShmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSBtb2RlKSBjb25z
dAorRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aENvbnRleHQ6OmNvbnZlcnRWYWx1ZUZyb21V
c2VyVW5pdHNUb1BlcmNlbnRhZ2UoZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9k
ZSkgY29uc3QKIHsKICAgICBGbG9hdFNpemUgdmlld3BvcnRTaXplOwogICAgIGlmICghZGV0ZXJt
aW5lVmlld3BvcnQodmlld3BvcnRTaXplKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yIH07CiAKLSAgICBzd2l0Y2ggKG1vZGUpIHsKLSAgICBjYXNlIExlbmd0
aE1vZGVXaWR0aDoKKyAgICBzd2l0Y2ggKGxlbmd0aE1vZGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0
aE1vZGU6OldpZHRoOgogICAgICAgICByZXR1cm4gdmFsdWUgLyB2aWV3cG9ydFNpemUud2lkdGgo
KSAqIDEwMDsKLSAgICBjYXNlIExlbmd0aE1vZGVIZWlnaHQ6CisgICAgY2FzZSBTVkdMZW5ndGhN
b2RlOjpIZWlnaHQ6CiAgICAgICAgIHJldHVybiB2YWx1ZSAvIHZpZXdwb3J0U2l6ZS5oZWlnaHQo
KSAqIDEwMDsKLSAgICBjYXNlIExlbmd0aE1vZGVPdGhlcjoKKyAgICBjYXNlIFNWR0xlbmd0aE1v
ZGU6Ok90aGVyOgogICAgICAgICByZXR1cm4gdmFsdWUgLyAoc3RkOjpzcXJ0KHZpZXdwb3J0U2l6
ZS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSAvIDIpKSAqIDEwMDsKICAgICB9OwogCkBAIC0xOTks
MTggKzE5OSwxOCBAQCBFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6Y29uCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLUV4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhDb250ZXh0Ojpj
b252ZXJ0VmFsdWVGcm9tUGVyY2VudGFnZVRvVXNlclVuaXRzKGZsb2F0IHZhbHVlLCBTVkdMZW5n
dGhNb2RlIG1vZGUpIGNvbnN0CitFeGNlcHRpb25PcjxmbG9hdD4gU1ZHTGVuZ3RoQ29udGV4dDo6
Y29udmVydFZhbHVlRnJvbVBlcmNlbnRhZ2VUb1VzZXJVbml0cyhmbG9hdCB2YWx1ZSwgU1ZHTGVu
Z3RoTW9kZSBsZW5ndGhNb2RlKSBjb25zdAogewogICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemU7
CiAgICAgaWYgKCFkZXRlcm1pbmVWaWV3cG9ydCh2aWV3cG9ydFNpemUpKQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IgfTsKIAotICAgIHN3aXRjaCAobW9kZSkg
ewotICAgIGNhc2UgTGVuZ3RoTW9kZVdpZHRoOgorICAgIHN3aXRjaCAobGVuZ3RoTW9kZSkgewor
ICAgIGNhc2UgU1ZHTGVuZ3RoTW9kZTo6V2lkdGg6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHZp
ZXdwb3J0U2l6ZS53aWR0aCgpOwotICAgIGNhc2UgTGVuZ3RoTW9kZUhlaWdodDoKKyAgICBjYXNl
IFNWR0xlbmd0aE1vZGU6OkhlaWdodDoKICAgICAgICAgcmV0dXJuIHZhbHVlICogdmlld3BvcnRT
aXplLmhlaWdodCgpOwotICAgIGNhc2UgTGVuZ3RoTW9kZU90aGVyOgorICAgIGNhc2UgU1ZHTGVu
Z3RoTW9kZTo6T3RoZXI6CiAgICAgICAgIHJldHVybiB2YWx1ZSAqIHN0ZDo6c3FydCh2aWV3cG9y
dFNpemUuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgLyAyKTsKICAgICB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMzUgKzIy
LDE1IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIlNWR0xlbmd0aFZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHVW5pdFR5cGVzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKLWNsYXNzIFNWR0xl
bmd0aFZhbHVlOwogCiBzdHJ1Y3QgTGVuZ3RoOwogCi1lbnVtIFNWR0xlbmd0aFR5cGUgewotICAg
IExlbmd0aFR5cGVVbmtub3duID0gMCwKLSAgICBMZW5ndGhUeXBlTnVtYmVyLAotICAgIExlbmd0
aFR5cGVQZXJjZW50YWdlLAotICAgIExlbmd0aFR5cGVFTVMsCi0gICAgTGVuZ3RoVHlwZUVYUywK
LSAgICBMZW5ndGhUeXBlUFgsCi0gICAgTGVuZ3RoVHlwZUNNLAotICAgIExlbmd0aFR5cGVNTSwK
LSAgICBMZW5ndGhUeXBlSU4sCi0gICAgTGVuZ3RoVHlwZVBULAotICAgIExlbmd0aFR5cGVQQwot
fTsKLQotZW51bSBTVkdMZW5ndGhNb2RlIHsKLSAgICBMZW5ndGhNb2RlV2lkdGggPSAwLAotICAg
IExlbmd0aE1vZGVIZWlnaHQsCi0gICAgTGVuZ3RoTW9kZU90aGVyCi19OwotCiBjbGFzcyBTVkdM
ZW5ndGhDb250ZXh0IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBTVkdMZW5ndGhDb250ZXh0KGNv
bnN0IFNWR0VsZW1lbnQqKTsKQEAgLTY0LDkgKzQ1LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBG
bG9hdFBvaW50IHJlc29sdmVQb2ludChjb25zdCBTVkdFbGVtZW50KiwgU1ZHVW5pdFR5cGVzOjpT
VkdVbml0VHlwZSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIHgsIGNvbnN0IFNWR0xlbmd0aFZhbHVl
JiB5KTsKICAgICBzdGF0aWMgZmxvYXQgcmVzb2x2ZUxlbmd0aChjb25zdCBTVkdFbGVtZW50Kiwg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSwgY29uc3QgU1ZHTGVuZ3RoVmFsdWUmKTsKIAotICAg
IGZsb2F0IHZhbHVlRm9yTGVuZ3RoKGNvbnN0IExlbmd0aCYsIFNWR0xlbmd0aE1vZGUgPSBMZW5n
dGhNb2RlT3RoZXIpOwotICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVUb1VzZXJV
bml0cyhmbG9hdCwgU1ZHTGVuZ3RoTW9kZSwgU1ZHTGVuZ3RoVHlwZSBmcm9tVW5pdCkgY29uc3Q7
Ci0gICAgRXhjZXB0aW9uT3I8ZmxvYXQ+IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQs
IFNWR0xlbmd0aE1vZGUsIFNWR0xlbmd0aFR5cGUgdG9Vbml0KSBjb25zdDsKKyAgICBmbG9hdCB2
YWx1ZUZvckxlbmd0aChjb25zdCBMZW5ndGgmLCBTVkdMZW5ndGhNb2RlID0gU1ZHTGVuZ3RoTW9k
ZTo6T3RoZXIpOworICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiBjb252ZXJ0VmFsdWVUb1VzZXJVbml0
cyhmbG9hdCwgU1ZHTGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9kZSkgY29uc3Q7CisgICAgRXhjZXB0
aW9uT3I8ZmxvYXQ+IGNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZmxvYXQsIFNWR0xlbmd0aFR5
cGUsIFNWR0xlbmd0aE1vZGUpIGNvbnN0OwogCiAgICAgYm9vbCBkZXRlcm1pbmVWaWV3cG9ydChG
bG9hdFNpemUmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aExp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCShy
ZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFNWR0xlbmd0aExpc3QgOiBwdWJs
aWMgU1ZHVmFsdWVQcm8KICAgICB1c2luZyBCYXNlOjpCYXNlOwogCiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxTVkdMZW5ndGhMaXN0PiBjcmVhdGUoU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlID0g
TGVuZ3RoTW9kZU90aGVyKQorICAgIHN0YXRpYyBSZWY8U1ZHTGVuZ3RoTGlzdD4gY3JlYXRlKFNW
R0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHTGVuZ3RoTGlzdChsZW5ndGhNb2RlKSk7CiAg
ICAgfQpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIFNW
R0xlbmd0aE1vZGUgbV9sZW5ndGhNb2RlIHsgTGVuZ3RoTW9kZU90aGVyIH07CisgICAgU1ZHTGVu
Z3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBTVkdMZW5ndGhNb2RlOjpPdGhlciB9OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZh
bHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFsdWUu
Y3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoVmFs
dWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVp
c0BrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNTggKzIyLDM3IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoVmFsdWUuaCIKIAotI2luY2x1ZGUg
IkNTU0hlbHBlci5oIgorI2luY2x1ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkNTU1ByaW1pdGl2ZVZhbHVlLmgiCi0jaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCi0jaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0vLyBIZWxw
ZXIgZnVuY3Rpb25zCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIHN0b3JlVW5pdChTVkdMZW5ndGhN
b2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdHlwZSkKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciog
bGVuZ3RoVHlwZVRvU3RyaW5nKFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSkKIHsKLSAgICByZXR1
cm4gKG1vZGUgPDwgNCkgfCB0eXBlOwotfQotCi1zdGF0aWMgaW5saW5lIFNWR0xlbmd0aE1vZGUg
ZXh0cmFjdE1vZGUodW5zaWduZWQgdW5pdCkKLXsKLSAgICB1bnNpZ25lZCBtb2RlID0gdW5pdCA+
PiA0OyAgICAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHTGVuZ3RoTW9kZT4obW9kZSk7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVHlwZSBleHRyYWN0VHlwZSh1bnNpZ25lZCB1bml0
KQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih1bml0ICYgKCgxIDw8
IDQpIC0gMSkpOwotfQotCi1zdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIGxlbmd0aFR5cGVUb1N0
cmluZyhTVkdMZW5ndGhUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlVW5rbm93bjoKLSAgICBjYXNlIExlbmd0aFR5cGVOdW1iZXI6CisgICAgc3dp
dGNoIChsZW5ndGhUeXBlKSB7CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpVbmtub3duOgorICAg
IGNhc2UgU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOgogICAgICAgICByZXR1cm4gIiI7ICAgIAotICAg
IGNhc2UgTGVuZ3RoVHlwZVBlcmNlbnRhZ2U6CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQZXJj
ZW50YWdlOgogICAgICAgICByZXR1cm4gIiUiOwotICAgIGNhc2UgTGVuZ3RoVHlwZUVNUzoKKyAg
ICBjYXNlIFNWR0xlbmd0aFR5cGU6OkVtczoKICAgICAgICAgcmV0dXJuICJlbSI7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlRVhTOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6RXhzOgogICAgICAgICBy
ZXR1cm4gImV4IjsKLSAgICBjYXNlIExlbmd0aFR5cGVQWDoKKyAgICBjYXNlIFNWR0xlbmd0aFR5
cGU6OlBpeGVsczoKICAgICAgICAgcmV0dXJuICJweCI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlQ006
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpDZW50aW1ldGVyczoKICAgICAgICAgcmV0dXJuICJj
bSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlTU06CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpNaWxs
aW1ldGVyczoKICAgICAgICAgcmV0dXJuICJtbSI7Ci0gICAgY2FzZSBMZW5ndGhUeXBlSU46Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpJbmNoZXM6CiAgICAgICAgIHJldHVybiAiaW4iOwotICAg
IGNhc2UgTGVuZ3RoVHlwZVBUOgorICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOgogICAg
ICAgICByZXR1cm4gInB0IjsKLSAgICBjYXNlIExlbmd0aFR5cGVQQzoKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OlBpY2FzOgogICAgICAgICByZXR1cm4gInBjIjsKICAgICB9CiAKQEAgLTgxLDkw
ICs2MCwxODcgQEAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBsZW5ndGhUeXBlVG9TdAogICAg
IHJldHVybiAiIjsKIH0KIAotaW5saW5lIFNWR0xlbmd0aFR5cGUgcGFyc2VMZW5ndGhUeXBlKGNv
bnN0IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQpCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0
aFR5cGUgcGFyc2VMZW5ndGhUeXBlKGNvbnN0IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQp
CiB7CiAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlTnVtYmVy
OworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TnVtYmVyOwogCiAgICAgY29uc3QgVUNo
YXIgZmlyc3RDaGFyID0gKnB0cjsKIAogICAgIGlmICgrK3B0ciA9PSBlbmQpCi0gICAgICAgIHJl
dHVybiBmaXJzdENoYXIgPT0gJyUnID8gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UgOiBMZW5ndGhUeXBl
VW5rbm93bjsKKyAgICAgICAgcmV0dXJuIGZpcnN0Q2hhciA9PSAnJScgPyBTVkdMZW5ndGhUeXBl
OjpQZXJjZW50YWdlIDogU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjsKIAogICAgIGNvbnN0IFVDaGFy
IHNlY29uZENoYXIgPSAqcHRyOwogCiAgICAgaWYgKCsrcHRyICE9IGVuZCkKLSAgICAgICAgcmV0
dXJuIExlbmd0aFR5cGVVbmtub3duOworICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6VW5r
bm93bjsKIAogICAgIGlmIChmaXJzdENoYXIgPT0gJ2UnICYmIHNlY29uZENoYXIgPT0gJ20nKQot
ICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUVNUzsKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5
cGU6OkVtczsKICAgICBpZiAoZmlyc3RDaGFyID09ICdlJyAmJiBzZWNvbmRDaGFyID09ICd4JykK
LSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVFWFM7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhU
eXBlOjpFeHM7CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAncCcgJiYgc2Vjb25kQ2hhciA9PSAneCcp
Ci0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlUFg7CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhU
eXBlOjpQaXhlbHM7CiAgICAgaWYgKGZpcnN0Q2hhciA9PSAnYycgJiYgc2Vjb25kQ2hhciA9PSAn
bScpCi0gICAgICAgIHJldHVybiBMZW5ndGhUeXBlQ007CisgICAgICAgIHJldHVybiBTVkdMZW5n
dGhUeXBlOjpDZW50aW1ldGVyczsKICAgICBpZiAoZmlyc3RDaGFyID09ICdtJyAmJiBzZWNvbmRD
aGFyID09ICdtJykKLSAgICAgICAgcmV0dXJuIExlbmd0aFR5cGVNTTsKKyAgICAgICAgcmV0dXJu
IFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0ZXJzOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ2knICYm
IHNlY29uZENoYXIgPT0gJ24nKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZUlOOworICAgICAg
ICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6SW5jaGVzOwogICAgIGlmIChmaXJzdENoYXIgPT0gJ3An
ICYmIHNlY29uZENoYXIgPT0gJ3QnKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBUOworICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UG9pbnRzOwogICAgIGlmIChmaXJzdENoYXIgPT0g
J3AnICYmIHNlY29uZENoYXIgPT0gJ2MnKQotICAgICAgICByZXR1cm4gTGVuZ3RoVHlwZVBDOwor
ICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6UGljYXM7CiAKLSAgICByZXR1cm4gTGVuZ3Ro
VHlwZVVua25vd247CisgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlVua25vd247CiB9CiAKLVNW
R0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0
cmluZyYgdmFsdWVBc1N0cmluZykKLSAgICA6IG1fdW5pdChzdG9yZVVuaXQobW9kZSwgTGVuZ3Ro
VHlwZU51bWJlcikpCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0aFR5cGUgcHJpbWl0aXZlVHlwZVRv
TGVuZ3RoVHlwZSh1bnNpZ25lZCBzaG9ydCBwcmltaXRpdmVUeXBlKQogewotICAgIHNldFZhbHVl
QXNTdHJpbmcodmFsdWVBc1N0cmluZyk7CisgICAgc3dpdGNoIChwcmltaXRpdmVUeXBlKSB7Cisg
ICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV046CisgICAgICAgIHJldHVybiBT
VkdMZW5ndGhUeXBlOjpVbmtub3duOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVI6CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpOdW1iZXI7CisgICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U6CisgICAgICAgIHJldHVybiBTVkdMZW5n
dGhUeXBlOjpQZXJjZW50YWdlOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM6
CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpFbXM7CisgICAgY2FzZSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX0VYUzoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OkV4czsKKyAg
ICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFg6CisgICAgICAgIHJldHVybiBTVkdMZW5n
dGhUeXBlOjpQaXhlbHM7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0NNOgorICAg
ICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6Q2VudGltZXRlcnM7CisgICAgY2FzZSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX01NOgorICAgICAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6TWlsbGlt
ZXRlcnM7CisgICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOgorICAgICAgICByZXR1
cm4gU1ZHTGVuZ3RoVHlwZTo6SW5jaGVzOworICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QVDoKKyAgICAgICAgcmV0dXJuIFNWR0xlbmd0aFR5cGU6OlBvaW50czsKKyAgICBjYXNlIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM6CisgICAgICAgIHJldHVybiBTVkdMZW5ndGhUeXBlOjpQ
aWNhczsKKyAgICB9CisKKyAgICByZXR1cm4gU1ZHTGVuZ3RoVHlwZTo6VW5rbm93bjsKIH0KIAot
U1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlIG1vZGUsIFNWR0xlbmd0aFR5cGUgdW5p
dFR5cGUpCi0gICAgOiBtX3VuaXQoc3RvcmVVbml0KG1vZGUsIHVuaXRUeXBlKSkKK3N0YXRpYyBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIGxlbmd0aFR5cGVUb1ByaW1pdGl2ZVR5
cGUoU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewotICAgIHNldFZhbHVlKHZhbHVlLCBjb250
ZXh0KTsKKyAgICBzd2l0Y2ggKGxlbmd0aFR5cGUpIHsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6
OlVua25vd246CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV047
CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpOdW1iZXI6CisgICAgICAgIHJldHVybiBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRh
Z2U6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7Cisg
ICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpFbXM6CisgICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0VNUzsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6OkV4czoKKyAgICAgICAgcmV0
dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6
UGl4ZWxzOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDsKKyAgICBj
YXNlIFNWR0xlbmd0aFR5cGU6OkNlbnRpbWV0ZXJzOgorICAgICAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19DTTsKKyAgICBjYXNlIFNWR0xlbmd0aFR5cGU6Ok1pbGxpbWV0ZXJzOgor
ICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTTsKKyAgICBjYXNlIFNWR0xl
bmd0aFR5cGU6OkluY2hlczoKKyAgICAgICAgcmV0dXJuIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SU47CisgICAgY2FzZSBTVkdMZW5ndGhUeXBlOjpQb2ludHM6CisgICAgICAgIHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BUOworICAgIGNhc2UgU1ZHTGVuZ3RoVHlwZTo6UGljYXM6Cisg
ICAgICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BDOworICAgIH0KKworICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
S05PV047CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFz
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZywgU1ZHTGVuZ3RoTW9kZSBtb2RlKQor
U1ZHTGVuZ3RoVmFsdWU6OlNWR0xlbmd0aFZhbHVlKFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQorICAgIDogbV9sZW5ndGhNb2RlKGxlbmd0aE1v
ZGUpCiB7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSAwOwotICAgIG1fdW5pdCA9IHN0
b3JlVW5pdChtb2RlLCBMZW5ndGhUeXBlTnVtYmVyKTsKLSAgICByZXR1cm4gc2V0VmFsdWVBc1N0
cmluZyh2YWx1ZUFzU3RyaW5nKTsKKyAgICBzZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcp
OwogfQogCi1ib29sIFNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvcj09KGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiBvdGhlcikgY29uc3QKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShmbG9hdCB2
YWx1ZUluU3BlY2lmaWVkVW5pdHMsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlwZSwgU1ZHTGVuZ3Ro
TW9kZSBsZW5ndGhNb2RlKQorICAgIDogbV92YWx1ZUluU3BlY2lmaWVkVW5pdHModmFsdWVJblNw
ZWNpZmllZFVuaXRzKQorICAgICwgbV9sZW5ndGhUeXBlKGxlbmd0aFR5cGUpCisgICAgLCBtX2xl
bmd0aE1vZGUobGVuZ3RoTW9kZSkKIHsKLSAgICByZXR1cm4gbV91bml0ID09IG90aGVyLm1fdW5p
dCAmJiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9PSBvdGhlci5tX3ZhbHVlSW5TcGVjaWZpZWRV
bml0czsKKyAgICBBU1NFUlQobV9sZW5ndGhUeXBlICE9IFNWR0xlbmd0aFR5cGU6OlVua25vd24p
OwogfQogCi1ib29sIFNWR0xlbmd0aFZhbHVlOjpvcGVyYXRvciE9KGNvbnN0IFNWR0xlbmd0aFZh
bHVlJiBvdGhlcikgY29uc3QKK1NWR0xlbmd0aFZhbHVlOjpTVkdMZW5ndGhWYWx1ZShjb25zdCBT
VkdMZW5ndGhDb250ZXh0JiBjb250ZXh0LCBmbG9hdCB2YWx1ZSwgU1ZHTGVuZ3RoVHlwZSBsZW5n
dGhUeXBlLCBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUpCisgICAgOiBtX2xlbmd0aFR5cGUobGVu
Z3RoVHlwZSkKKyAgICAsIG1fbGVuZ3RoTW9kZShsZW5ndGhNb2RlKQogewotICAgIHJldHVybiAh
b3BlcmF0b3I9PShvdGhlcik7CisgICAgc2V0VmFsdWUoY29udGV4dCwgdmFsdWUpOwogfQogCi1T
VkdMZW5ndGhWYWx1ZSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGUgbW9k
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nLCBTVkdQYXJzaW5nRXJyb3ImIHBhcnNlRXJy
b3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSBuZWdhdGl2ZVZhbHVlc01vZGUpCitTVkdM
ZW5ndGhWYWx1ZSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGUgbGVuZ3Ro
TW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nLCBTVkdQYXJzaW5nRXJyb3ImIHBhcnNl
RXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSBuZWdhdGl2ZVZhbHVlc01vZGUpCiB7
Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbGVuZ3RoKG1vZGUpOworICAgIFNWR0xlbmd0aFZhbHVlIGxl
bmd0aChsZW5ndGhNb2RlKTsKIAogICAgIGlmIChsZW5ndGguc2V0VmFsdWVBc1N0cmluZyh2YWx1
ZUFzU3RyaW5nKS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcGFyc2VFcnJvciA9IFBhcnNpbmdB
dHRyaWJ1dGVGYWlsZWRFcnJvcjsKLSAgICBlbHNlIGlmIChuZWdhdGl2ZVZhbHVlc01vZGUgPT0g
Rm9yYmlkTmVnYXRpdmVMZW5ndGhzICYmIGxlbmd0aC52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA8
IDApCisgICAgZWxzZSBpZiAobmVnYXRpdmVWYWx1ZXNNb2RlID09IFNWR0xlbmd0aE5lZ2F0aXZl
VmFsdWVzTW9kZTo6Rm9yYmlkICYmIGxlbmd0aC52YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSA8IDAp
CiAgICAgICAgIHBhcnNlRXJyb3IgPSBOZWdhdGl2ZVZhbHVlRm9yYmlkZGVuRXJyb3I7CiAKICAg
ICByZXR1cm4gbGVuZ3RoOwogfQogCi1TVkdMZW5ndGhUeXBlIFNWR0xlbmd0aFZhbHVlOjp1bml0
VHlwZSgpIGNvbnN0CitTVkdMZW5ndGhWYWx1ZSBTVkdMZW5ndGhWYWx1ZTo6YmxlbmQoY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywgZmxvYXQgcHJv
Z3Jlc3MpCit7CisgICAgaWYgKChmcm9tLmlzWmVybygpICYmIHRvLmlzWmVybygpKQorICAgICAg
ICB8fCBmcm9tLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duCisgICAgICAg
IHx8IHRvLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpVbmtub3duCisgICAgICAgIHx8
ICghZnJvbS5pc1plcm8oKSAmJiBmcm9tLmxlbmd0aFR5cGUoKSAhPSBTVkdMZW5ndGhUeXBlOjpQ
ZXJjZW50YWdlICYmIHRvLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdl
KQorICAgICAgICB8fCAoIXRvLmlzWmVybygpICYmIGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xl
bmd0aFR5cGU6OlBlcmNlbnRhZ2UgJiYgdG8ubGVuZ3RoVHlwZSgpICE9IFNWR0xlbmd0aFR5cGU6
OlBlcmNlbnRhZ2UpCisgICAgICAgIHx8ICghZnJvbS5pc1plcm8oKSAmJiAhdG8uaXNaZXJvKCkg
JiYgKGZyb20ubGVuZ3RoVHlwZSgpID09IFNWR0xlbmd0aFR5cGU6OkVtcyB8fCBmcm9tLmxlbmd0
aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpFeHMpICYmIGZyb20ubGVuZ3RoVHlwZSgpICE9IHRv
Lmxlbmd0aFR5cGUoKSkpCisgICAgICAgIHJldHVybiB0bzsKKworICAgIGlmIChmcm9tLmxlbmd0
aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlIHx8IHRvLmxlbmd0aFR5cGUoKSA9
PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKSB7CisgICAgICAgIGF1dG8gZnJvbVBlcmNlbnQg
PSBmcm9tLnZhbHVlQXNQZXJjZW50YWdlKCkgKiAxMDA7CisgICAgICAgIGF1dG8gdG9QZXJjZW50
ID0gdG8udmFsdWVBc1BlcmNlbnRhZ2UoKSAqIDEwMDsKKyAgICAgICAgcmV0dXJuIHsgV2ViQ29y
ZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVyY2VudCwgcHJvZ3Jlc3MpLCBTVkdMZW5ndGhUeXBl
OjpQZXJjZW50YWdlIH07CisgICAgfQorCisgICAgaWYgKGZyb20ubGVuZ3RoVHlwZSgpID09IHRv
Lmxlbmd0aFR5cGUoKSB8fCBmcm9tLmlzWmVybygpIHx8IHRvLmlzWmVybygpIHx8IGZyb20uaXNS
ZWxhdGl2ZSgpKSB7CisgICAgICAgIGF1dG8gZnJvbVZhbHVlID0gZnJvbS52YWx1ZUluU3BlY2lm
aWVkVW5pdHMoKTsKKyAgICAgICAgYXV0byB0b1ZhbHVlID0gdG8udmFsdWVJblNwZWNpZmllZFVu
aXRzKCk7CisgICAgICAgIHJldHVybiB7IFdlYkNvcmU6OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1
ZSwgcHJvZ3Jlc3MpLCB0by5pc1plcm8oKSA/IGZyb20ubGVuZ3RoVHlwZSgpIDogdG8ubGVuZ3Ro
VHlwZSgpIH07CisgICAgfQorCisgICAgU1ZHTGVuZ3RoQ29udGV4dCBub25SZWxhdGl2ZUxlbmd0
aENvbnRleHQobnVsbHB0cik7CisgICAgYXV0byBmcm9tVmFsdWVJblVzZXJVbml0cyA9IG5vblJl
bGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmcm9tLnZhbHVlSW5T
cGVjaWZpZWRVbml0cygpLCBmcm9tLmxlbmd0aFR5cGUoKSwgZnJvbS5sZW5ndGhNb2RlKCkpOwor
ICAgIGlmIChmcm9tVmFsdWVJblVzZXJVbml0cy5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGF1dG8gZnJvbVZhbHVlID0gbm9uUmVsYXRpdmVMZW5ndGhDb250ZXh0
LmNvbnZlcnRWYWx1ZUZyb21Vc2VyVW5pdHMoZnJvbVZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZVJl
dHVyblZhbHVlKCksIHRvLmxlbmd0aFR5cGUoKSwgdG8ubGVuZ3RoTW9kZSgpKTsKKyAgICBpZiAo
ZnJvbVZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgZmxv
YXQgdG9WYWx1ZSA9IHRvLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgIHJldHVybiB7IFdl
YkNvcmU6OmJsZW5kKGZyb21WYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgdG9WYWx1ZSwgcHJv
Z3Jlc3MpLCB0by5sZW5ndGhUeXBlKCkgfTsKK30KKworU1ZHTGVuZ3RoVmFsdWUgU1ZHTGVuZ3Ro
VmFsdWU6OmZyb21DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSYgdmFs
dWUpCit7CisgICAgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlID0gcHJpbWl0aXZlVHlwZVRvTGVu
Z3RoVHlwZSh2YWx1ZS5wcmltaXRpdmVUeXBlKCkpOworICAgIHJldHVybiBsZW5ndGhUeXBlID09
IFNWR0xlbmd0aFR5cGU6OlVua25vd24gPyBTVkdMZW5ndGhWYWx1ZSgpIDogU1ZHTGVuZ3RoVmFs
dWUodmFsdWUuZmxvYXRWYWx1ZSgpLCBsZW5ndGhUeXBlKTsKK30KKworUmVmPENTU1ByaW1pdGl2
ZVZhbHVlPiBTVkdMZW5ndGhWYWx1ZTo6dG9DU1NQcmltaXRpdmVWYWx1ZShjb25zdCBTVkdMZW5n
dGhWYWx1ZSYgbGVuZ3RoKQogewotICAgIHJldHVybiBleHRyYWN0VHlwZShtX3VuaXQpOworICAg
IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGxlbmd0aC52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKSwgbGVuZ3RoVHlwZVRvUHJpbWl0aXZlVHlwZShsZW5ndGgubGVuZ3RoVHlwZSgpKSk7
CiB9CiAKLVNWR0xlbmd0aE1vZGUgU1ZHTGVuZ3RoVmFsdWU6OnVuaXRNb2RlKCkgY29uc3QKK0V4
Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0
cmluZyYgdmFsdWVBc1N0cmluZywgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQogewotICAgIHJl
dHVybiBleHRyYWN0TW9kZShtX3VuaXQpOworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0g
MDsKKyAgICBtX2xlbmd0aE1vZGUgPSBsZW5ndGhNb2RlOworICAgIG1fbGVuZ3RoVHlwZSA9IFNW
R0xlbmd0aFR5cGU6Ok51bWJlcjsKKyAgICByZXR1cm4gc2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFz
U3RyaW5nKTsKIH0KIAogZmxvYXQgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlKGNvbnN0IFNWR0xlbmd0
aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CkBAIC0xNzUsMzcgKzI1MSwzNSBAQCBmbG9hdCBTVkdM
ZW5ndGhWYWx1ZTo6dmFsdWUoY29uc3QgU1ZHTGVuCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKTsKIH0KIAotRXhjZXB0aW9uT3I8ZmxvYXQ+IFNWR0xlbmd0aFZhbHVlOjp2
YWx1ZUZvckJpbmRpbmdzKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpIGNvbnN0CitT
dHJpbmcgU1ZHTGVuZ3RoVmFsdWU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBjb250ZXh0LmNvbnZlcnRWYWx1ZVRvVXNlclVuaXRzKG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
LCBleHRyYWN0TW9kZShtX3VuaXQpLCBleHRyYWN0VHlwZShtX3VuaXQpKTsKKyAgICByZXR1cm4g
bWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzKSwgbGVuZ3RoVHlwZVRvU3RyaW5nKG1fbGVuZ3RoVHlwZSkpOwogfQogCi1FeGNl
cHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUgbW9kZSwgU1ZHTGVuZ3Ro
VHlwZSB1bml0VHlwZSkKK0V4Y2VwdGlvbk9yPGZsb2F0PiBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVG
b3JCaW5kaW5ncyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiBjb250ZXh0KSBjb25zdAogewotICAg
IC8vIEZJWE1FOiBTZWVtcyBsaWtlIGEgYnVnIHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBt
X3VuaXQgZXZlbiBpZiBzZXRWYWx1ZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgotICAgIG1fdW5pdCA9
IHN0b3JlVW5pdChtb2RlLCB1bml0VHlwZSk7Ci0gICAgcmV0dXJuIHNldFZhbHVlKHZhbHVlLCBj
b250ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cywgbV9sZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUpOwogfQogCi1F
eGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoZmxvYXQgdmFsdWUsIGNv
bnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5n
dGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQg
dmFsdWUpCiB7CiAgICAgLy8gMTAwJSA9IDEwMC4wIGluc3RlYWQgb2YgMS4wIGZvciBoaXN0b3Jp
Y2FsIHJlYXNvbnMsIHRoaXMgY291bGQgZXZlbnR1YWxseSBiZSBjaGFuZ2VkCi0gICAgaWYgKGV4
dHJhY3RUeXBlKG1fdW5pdCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKG1fbGVu
Z3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQogICAgICAgICB2YWx1ZSA9IHZh
bHVlIC8gMTAwOwogCi0gICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnRleHQuY29udmVydFZh
bHVlRnJvbVVzZXJVbml0cyh2YWx1ZSwgZXh0cmFjdE1vZGUobV91bml0KSwgZXh0cmFjdFR5cGUo
bV91bml0KSk7CisgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IGNvbnRleHQuY29udmVydFZhbHVl
RnJvbVVzZXJVbml0cyh2YWx1ZSwgbV9sZW5ndGhUeXBlLCBtX2xlbmd0aE1vZGUpOwogICAgIGlm
IChjb252ZXJ0ZWRWYWx1ZS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRl
ZFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9
IGNvbnZlcnRlZFZhbHVlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogICAgIHJldHVybiB7IH07CiB9
Ci1mbG9hdCBTVkdMZW5ndGhWYWx1ZTo6dmFsdWVBc1BlcmNlbnRhZ2UoKSBjb25zdAotewotICAg
IC8vIDEwMCUgPSAxMDAuMCBpbnN0ZWFkIG9mIDEuMCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCB0
aGlzIGNvdWxkIGV2ZW50dWFsbHkgYmUgY2hhbmdlZAotICAgIGlmIChleHRyYWN0VHlwZShtX3Vu
aXQpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICByZXR1cm4gbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgLyAxMDA7CiAKLSAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7
CitFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsdWUoY29uc3QgU1ZHTGVu
Z3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aFR5cGUgbGVuZ3RoVHlw
ZSwgU1ZHTGVuZ3RoTW9kZSBsZW5ndGhNb2RlKQoreworICAgIC8vIEZJWE1FOiBTZWVtcyBsaWtl
IGEgYnVnIHRoYXQgd2UgY2hhbmdlIHRoZSB2YWx1ZSBvZiBtX3VuaXQgZXZlbiBpZiBzZXRWYWx1
ZSB0aHJvd3MgYW4gZXhjZXB0aW9uLgorICAgIG1fbGVuZ3RoTW9kZSA9IGxlbmd0aE1vZGU7Cisg
ICAgbV9sZW5ndGhUeXBlID0gbGVuZ3RoVHlwZTsKKyAgICByZXR1cm4gc2V0VmFsdWUoY29udGV4
dCwgdmFsdWUpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFs
dWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTIyMSwxNzUgKzI5NSwyOSBAQCBF
eGNlcHRpb25Pcjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6c2V0VmFsCiAgICAgaWYgKCFwYXJzZU51
bWJlcihwdHIsIGVuZCwgY29udmVydGVkTnVtYmVyLCBmYWxzZSkpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTeW50YXhFcnJvciB9OwogCi0gICAgYXV0byB0eXBlID0gcGFyc2VMZW5ndGhU
eXBlKHB0ciwgZW5kKTsKLSAgICBpZiAodHlwZSA9PSBMZW5ndGhUeXBlVW5rbm93bikKKyAgICBh
dXRvIGxlbmd0aFR5cGUgPSBwYXJzZUxlbmd0aFR5cGUocHRyLCBlbmQpOworICAgIGlmIChsZW5n
dGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlVua25vd24pCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBTeW50YXhFcnJvciB9OwogCi0gICAgbV91bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2Rl
KG1fdW5pdCksIHR5cGUpOworICAgIG1fbGVuZ3RoVHlwZSA9IGxlbmd0aFR5cGU7CiAgICAgbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBjb252ZXJ0ZWROdW1iZXI7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIAotU3RyaW5nIFNWR0xlbmd0aFZhbHVlOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbWFrZVN0cmluZyhGb3JtYXR0ZWROdW1iZXI6OmZpeGVkUHJlY2lzaW9uKG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzKSwgbGVuZ3RoVHlwZVRvU3RyaW5nKGV4dHJhY3RUeXBlKG1fdW5p
dCkpKTsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHTGVuZ3RoVmFsdWU6Om5ld1ZhbHVlU3Bl
Y2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdHlwZSwgZmxvYXQgdmFsdWUpCitFeGNlcHRpb25P
cjx2b2lkPiBTVkdMZW5ndGhWYWx1ZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHMoY29uc3QgU1ZH
TGVuZ3RoQ29udGV4dCYgY29udGV4dCwgU1ZHTGVuZ3RoVHlwZSBsZW5ndGhUeXBlKQogewotICAg
IGlmICh0eXBlID09IExlbmd0aFR5cGVVbmtub3duIHx8IHR5cGUgPiBMZW5ndGhUeXBlUEMpCi0g
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciB9OwotCi0gICAgbV91
bml0ID0gc3RvcmVVbml0KGV4dHJhY3RNb2RlKG1fdW5pdCksIHN0YXRpY19jYXN0PFNWR0xlbmd0
aFR5cGU+KHR5cGUpKTsKLSAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlOwotICAg
IHJldHVybiB7IH07Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0xlbmd0aFZhbHVlOjpjb252
ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB0eXBlLCBjb25zdCBTVkdMZW5ndGhD
b250ZXh0JiBjb250ZXh0KQotewotICAgIGlmICh0eXBlID09IExlbmd0aFR5cGVVbmtub3duIHx8
IHR5cGUgPiBMZW5ndGhUeXBlUEMpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RTdXBw
b3J0ZWRFcnJvciB9OwotCiAgICAgYXV0byB2YWx1ZUluVXNlclVuaXRzID0gdmFsdWVGb3JCaW5k
aW5ncyhjb250ZXh0KTsKICAgICBpZiAodmFsdWVJblVzZXJVbml0cy5oYXNFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIHZhbHVlSW5Vc2VyVW5pdHMucmVsZWFzZUV4Y2VwdGlvbigpOwogCi0g
ICAgYXV0byBvcmlnaW5hbFVuaXRBbmRUeXBlID0gbV91bml0OwotICAgIG1fdW5pdCA9IHN0b3Jl
VW5pdChleHRyYWN0TW9kZShtX3VuaXQpLCBzdGF0aWNfY2FzdDxTVkdMZW5ndGhUeXBlPih0eXBl
KSk7Ci0gICAgYXV0byByZXN1bHQgPSBzZXRWYWx1ZSh2YWx1ZUluVXNlclVuaXRzLnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpLCBjb250ZXh0KTsKLSAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7
Ci0gICAgICAgIG1fdW5pdCA9IG9yaWdpbmFsVW5pdEFuZFR5cGU7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0K
LVNWR0xlbmd0aFZhbHVlIFNWR0xlbmd0aFZhbHVlOjpmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29u
c3QgQ1NTUHJpbWl0aXZlVmFsdWUmIHZhbHVlKQotewotICAgIFNWR0xlbmd0aFR5cGUgdHlwZTsK
LSAgICBzd2l0Y2ggKHZhbHVlLnByaW1pdGl2ZVR5cGUoKSkgewotICAgIGNhc2UgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVI6Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBlTnVtYmVyOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFH
RToKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVQZXJjZW50YWdlOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRU1TOgotICAgICAgICB0eXBlID0gTGVu
Z3RoVHlwZUVNUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0VYUzoKLSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVFWFM7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDoKLSAgICAgICAgdHlwZSA9IExlbmd0
aFR5cGVQWDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0NNOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZUNNOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU06Ci0gICAgICAgIHR5cGUgPSBMZW5ndGhUeXBl
TU07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTjoK
LSAgICAgICAgdHlwZSA9IExlbmd0aFR5cGVJTjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOgotICAgICAgICB0eXBlID0gTGVuZ3RoVHlwZVBUOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEM6Ci0gICAg
ICAgIHR5cGUgPSBMZW5ndGhUeXBlUEM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19VTktOT1dOOgotICAgIGRlZmF1bHQ6CisgICAgYXV0byBvcmlnaW5h
bExlbmd0aFR5cGUgPSBtX2xlbmd0aFR5cGU7CisgICAgbV9sZW5ndGhUeXBlID0gbGVuZ3RoVHlw
ZTsKKyAgICBhdXRvIHJlc3VsdCA9IHNldFZhbHVlKGNvbnRleHQsIHZhbHVlSW5Vc2VyVW5pdHMu
cmVsZWFzZVJldHVyblZhbHVlKCkpOworICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4geyB9OwotICAgIH07CiAKLSAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7
Ci0gICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModHlwZSwgdmFsdWUuZmxvYXRWYWx1
ZSgpKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1SZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IFNW
R0xlbmd0aFZhbHVlOjp0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBs
ZW5ndGgpCi17Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlIGNzc1R5cGUgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV047Ci0gICAgc3dpdGNoIChsZW5ndGgudW5pdFR5cGUo
KSkgewotICAgIGNhc2UgTGVuZ3RoVHlwZVVua25vd246Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgTGVuZ3RoVHlwZU51bWJlcjoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVQZXJjZW50
YWdlOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdF
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVFTVM6Ci0gICAgICAgIGNzc1R5
cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBMZW5ndGhUeXBlRVhTOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19FWFM7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTGVuZ3RoVHlwZVBYOgotICAgICAgICBj
c3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBMZW5ndGhUeXBlQ006Ci0gICAgICAgIGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0NNOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIExlbmd0aFR5cGVNTToKLSAgICAgICAg
Y3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTGVuZ3RoVHlwZUlOOgotICAgICAgICBjc3NUeXBlID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19JTjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMZW5ndGhUeXBlUFQ6Ci0gICAgICAg
IGNzc1R5cGUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIExlbmd0aFR5cGVQQzoKLSAgICAgICAgY3NzVHlwZSA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfUEM7Ci0gICAgICAgIGJyZWFrOwotICAgIH07Ci0KLSAgICByZXR1cm4gQ1NTUHJpbWl0
aXZlVmFsdWU6OmNyZWF0ZShsZW5ndGgudmFsdWVJblNwZWNpZmllZFVuaXRzKCksIGNzc1R5cGUp
OwotfQotCi1TVkdMZW5ndGhNb2RlIFNWR0xlbmd0aFZhbHVlOjpsZW5ndGhNb2RlRm9yQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCi17Ci0gICAg
dXNpbmcgTWFwID0gSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBTVkdMZW5ndGhNb2RlPjsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8TWFwPiBtYXAgPSBbXSB7Ci0gICAgICAgIHN0cnVjdCBNb2Rl
IHsKLSAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWU7Ci0gICAgICAgICAgICBT
VkdMZW5ndGhNb2RlIG1vZGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHN0YXRpYyBjb25zdCBNb2Rl
IG1vZGVzW10gPSB7Ci0gICAgICAgICAgICB7IFNWR05hbWVzOjp4QXR0ciwgTGVuZ3RoTW9kZVdp
ZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9
LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6Y3hBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAg
ICAgICAgICAgIHsgU1ZHTmFtZXM6OmN5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAg
ICAgICAgeyBTVkdOYW1lczo6ZHhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAg
IHsgU1ZHTmFtZXM6OmR5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBT
VkdOYW1lczo6ZnhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFt
ZXM6OmZ5QXR0ciwgTGVuZ3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6
d2lkdGhBdHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6Omhl
aWdodEF0dHIsIExlbmd0aE1vZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6Ongx
QXR0ciwgTGVuZ3RoTW9kZVdpZHRoIH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp4MkF0dHIs
IExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6eTFBdHRyLCBMZW5n
dGhNb2RlSGVpZ2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjp5MkF0dHIsIExlbmd0aE1v
ZGVIZWlnaHQgfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnJlZlhBdHRyLCBMZW5ndGhNb2Rl
V2lkdGggfSwKLSAgICAgICAgICAgIHsgU1ZHTmFtZXM6OnJlZllBdHRyLCBMZW5ndGhNb2RlSGVp
Z2h0IH0sCi0gICAgICAgICAgICB7IFNWR05hbWVzOjptYXJrZXJXaWR0aEF0dHIsIExlbmd0aE1v
ZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6bWFya2VySGVpZ2h0QXR0ciwgTGVu
Z3RoTW9kZUhlaWdodCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIs
IExlbmd0aE1vZGVXaWR0aCB9LAotICAgICAgICAgICAgeyBTVkdOYW1lczo6c3RhcnRPZmZzZXRB
dHRyLCBMZW5ndGhNb2RlV2lkdGggfSwKLSAgICAgICAgfTsKLSAgICAgICAgTWFwIG1hcDsKLSAg
ICAgICAgZm9yIChhdXRvJiBtb2RlIDogbW9kZXMpCi0gICAgICAgICAgICBtYXAuYWRkKG1vZGUu
bmFtZSwgbW9kZS5tb2RlKTsKLSAgICAgICAgcmV0dXJuIG1hcDsKLSAgICB9KCk7Ci0gICAgCi0g
ICAgYXV0byByZXN1bHQgPSBtYXAuZ2V0KCkuZmluZChhdHRyTmFtZSk7Ci0gICAgaWYgKHJlc3Vs
dCA9PSBtYXAuZ2V0KCkuZW5kKCkpCi0gICAgICAgIHJldHVybiBMZW5ndGhNb2RlT3RoZXI7Ci0g
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CisgICAgbV9sZW5ndGhUeXBlID0gb3JpZ2luYWxMZW5n
dGhUeXBlOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogfQogCiBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYg
bGVuZ3RoKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aFZhbHVlLmgJKHJldmlzaW9uIDI0
OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAw
NiwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjAsMTQxICsyMSw5MCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1
ZGUgIkFuaW1hdGlvblV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aENvbnRleHQuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNWR1BhcnNpbmdFcnJvci5oIgog
I2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJhaXRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7Ci1jbGFzcyBRdWFsaWZpZWROYW1lOworY2xhc3MgU1ZH
TGVuZ3RoQ29udGV4dDsKIAotZW51bSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUgewotICAg
IEFsbG93TmVnYXRpdmVMZW5ndGhzLAotICAgIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocworZW51bSBj
bGFzcyBTVkdMZW5ndGhUeXBlIDogdWludDhfdCB7CisgICAgVW5rbm93biA9IDAsCisgICAgTnVt
YmVyLAorICAgIFBlcmNlbnRhZ2UsCisgICAgRW1zLAorICAgIEV4cywKKyAgICBQaXhlbHMsCisg
ICAgQ2VudGltZXRlcnMsCisgICAgTWlsbGltZXRlcnMsCisgICAgSW5jaGVzLAorICAgIFBvaW50
cywKKyAgICBQaWNhcworfTsKKworZW51bSBjbGFzcyBTVkdMZW5ndGhNb2RlIDogdWludDhfdCB7
CisgICAgV2lkdGgsCisgICAgSGVpZ2h0LAorICAgIE90aGVyCit9OworCitlbnVtIGNsYXNzIFNW
R0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZSA6IHVpbnQ4X3QgeworICAgIEFsbG93LAorICAgIEZv
cmJpZAogfTsKIAogY2xhc3MgU1ZHTGVuZ3RoVmFsdWUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIC8vIEZJWE1FOiBPbmNlIGFsbCBTVkdMZW5ndGhWYWx1ZSB1
c2VycyB1c2UgTGVuZ3RoIGludGVybmFsbHksIHdlIG1ha2UgdGhpcyBhIHdyYXBwZXIgZm9yIExl
bmd0aC4KLSAgICBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlID0gTGVuZ3RoTW9kZU90aGVy
LCBjb25zdCBTdHJpbmcmIHZhbHVlQXNTdHJpbmcgPSBTdHJpbmcoKSk7Ci0gICAgU1ZHTGVuZ3Ro
VmFsdWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYsIGZsb2F0LCBTVkdMZW5ndGhNb2RlID0gTGVu
Z3RoTW9kZU90aGVyLCBTVkdMZW5ndGhUeXBlID0gTGVuZ3RoVHlwZU51bWJlcik7CisgICAgU1ZH
TGVuZ3RoVmFsdWUoU1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyLCBjb25zdCBT
dHJpbmcmIHZhbHVlQXNTdHJpbmcgPSBTdHJpbmcoKSk7CisgICAgU1ZHTGVuZ3RoVmFsdWUoZmxv
YXQgdmFsdWVJblNwZWNpZmllZFVuaXRzLCBTVkdMZW5ndGhUeXBlLCBTVkdMZW5ndGhNb2RlID0g
U1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOworICAgIFNWR0xlbmd0aFZhbHVlKGNvbnN0IFNWR0xlbmd0
aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSA9IFNWR0xlbmd0aFR5cGU6Ok51bWJlciwg
U1ZHTGVuZ3RoTW9kZSA9IFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKIAotICAgIFNWR0xlbmd0aFR5
cGUgdW5pdFR5cGUoKSBjb25zdDsKLSAgICBTVkdMZW5ndGhNb2RlIHVuaXRNb2RlKCkgY29uc3Q7
CisgICAgc3RhdGljIFNWR0xlbmd0aFZhbHVlIGNvbnN0cnVjdChTVkdMZW5ndGhNb2RlLCBjb25z
dCBTdHJpbmcmLCBTVkdQYXJzaW5nRXJyb3ImLCBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGUg
PSBTVkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkFsbG93KTsKKyAgICBzdGF0aWMgU1ZHTGVu
Z3RoVmFsdWUgYmxlbmQoY29uc3QgU1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGNvbnN0IFNWR0xlbmd0
aFZhbHVlJiB0bywgZmxvYXQgcHJvZ3Jlc3MpOworICAgIAorICAgIHN0YXRpYyBTVkdMZW5ndGhW
YWx1ZSBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUmKTsKKyAg
ICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1ByaW1pdGl2ZVZhbHVlKGNvbnN0
IFNWR0xlbmd0aFZhbHVlJik7CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmKSBjb25zdDsKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU1ZHTGVuZ3RoVmFsdWUm
KSBjb25zdDsKKyAgICBTVkdMZW5ndGhUeXBlIGxlbmd0aFR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2xlbmd0aFR5cGU7IH0KKyAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2xlbmd0aE1vZGU7IH0KIAotICAgIHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZSwgY29uc3QgU3RyaW5nJiwgU1ZHUGFyc2luZ0Vycm9yJiwgU1ZHTGVu
Z3RoTmVnYXRpdmVWYWx1ZXNNb2RlID0gQWxsb3dOZWdhdGl2ZUxlbmd0aHMpOworICAgIGJvb2wg
aXNaZXJvKCkgY29uc3QgeyByZXR1cm4gIW1fdmFsdWVJblNwZWNpZmllZFVuaXRzOyAgfQorICAg
IGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoVHlwZSA9PSBTVkdMZW5n
dGhUeXBlOjpQZXJjZW50YWdlIHx8IG1fbGVuZ3RoVHlwZSA9PSBTVkdMZW5ndGhUeXBlOjpFbXMg
fHwgbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OkV4czsgfQogCiAgICAgZmxvYXQgdmFs
dWUoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpIGNvbnN0OworICAgIGZsb2F0IHZhbHVlQXNQZXJj
ZW50YWdlKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGhUeXBlID09IFNWR0xlbmd0aFR5cGU6OlBl
cmNlbnRhZ2UgPyBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyAvIDEwMCA6IG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzOyB9CisgICAgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZUluU3BlY2lmaWVkVW5pdHM7IH0KKyAgICAKKyAgICBTdHJpbmcgdmFsdWVB
c1N0cmluZygpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPGZsb2F0PiB2YWx1ZUZvckJpbmRpbmdz
KGNvbnN0IFNWR0xlbmd0aENvbnRleHQmKSBjb25zdDsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRWYWx1ZShmbG9hdCwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpOwotICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFZhbHVlKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3Ro
TW9kZSwgU1ZHTGVuZ3RoVHlwZSk7CiAKLSAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0czsgfQogICAgIHZvaWQgc2V0
VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlKSB7IG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gdmFsdWU7IH0KKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZShjb25zdCBTVkdM
ZW5ndGhDb250ZXh0JiwgZmxvYXQpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlKGNv
bnN0IFNWR0xlbmd0aENvbnRleHQmLCBmbG9hdCwgU1ZHTGVuZ3RoVHlwZSwgU1ZHTGVuZ3RoTW9k
ZSk7CiAKLSAgICBmbG9hdCB2YWx1ZUFzUGVyY2VudGFnZSgpIGNvbnN0OwotCi0gICAgU3RyaW5n
IHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUFz
U3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlQXNT
dHJpbmcoY29uc3QgU3RyaW5nJiwgU1ZHTGVuZ3RoTW9kZSk7Ci0gICAgCi0gICAgRXhjZXB0aW9u
T3I8dm9pZD4gbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCwgZmxvYXQgdmFs
dWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVj
aWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCwgY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYpOwogCi0g
ICAgLy8gSGVscGVyIGZ1bmN0aW9ucwotICAgIGJvb2wgaXNSZWxhdGl2ZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICBhdXRvIHR5cGUgPSB1bml0VHlwZSgpOwotICAgICAgICByZXR1cm4gdHlwZSA9
PSBMZW5ndGhUeXBlUGVyY2VudGFnZSB8fCB0eXBlID09IExlbmd0aFR5cGVFTVMgfHwgdHlwZSA9
PSBMZW5ndGhUeXBlRVhTOwotICAgIH0KLQotICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgCi0gICAg
ewotICAgICAgICByZXR1cm4gIW1fdmFsdWVJblNwZWNpZmllZFVuaXRzOwotICAgIH0KLQotICAg
IHN0YXRpYyBTVkdMZW5ndGhWYWx1ZSBmcm9tQ1NTUHJpbWl0aXZlVmFsdWUoY29uc3QgQ1NTUHJp
bWl0aXZlVmFsdWUmKTsKLSAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB0b0NTU1By
aW1pdGl2ZVZhbHVlKGNvbnN0IFNWR0xlbmd0aFZhbHVlJik7Ci0gICAgc3RhdGljIFNWR0xlbmd0
aE1vZGUgbGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKLQotICAgIFNWR0xlbmd0aFZhbHVlIGJsZW5kKGNvbnN0IFNWR0xlbmd0aFZhbHVl
JiBmcm9tLCBmbG9hdCBwcm9ncmVzcykgY29uc3QKLSAgICB7Ci0gICAgICAgIGF1dG8gdG9UeXBl
ID0gdW5pdFR5cGUoKTsKLSAgICAgICAgYXV0byBmcm9tVHlwZSA9IGZyb20udW5pdFR5cGUoKTsK
LSAgICAgICAgaWYgKChmcm9tLmlzWmVybygpICYmIGlzWmVybygpKQotICAgICAgICAgICAgfHwg
ZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVVua25vd24KLSAgICAgICAgICAgIHx8IHRvVHlwZSA9PSBM
ZW5ndGhUeXBlVW5rbm93bgotICAgICAgICAgICAgfHwgKCFmcm9tLmlzWmVybygpICYmIGZyb21U
eXBlICE9IExlbmd0aFR5cGVQZXJjZW50YWdlICYmIHRvVHlwZSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSkKLSAgICAgICAgICAgIHx8ICghaXNaZXJvKCkgJiYgZnJvbVR5cGUgPT0gTGVuZ3RoVHlw
ZVBlcmNlbnRhZ2UgJiYgdG9UeXBlICE9IExlbmd0aFR5cGVQZXJjZW50YWdlKQotICAgICAgICAg
ICAgfHwgKCFmcm9tLmlzWmVybygpICYmICFpc1plcm8oKSAmJiAoZnJvbVR5cGUgPT0gTGVuZ3Ro
VHlwZUVNUyB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBlRVhTKSAmJiBmcm9tVHlwZSAhPSB0b1R5
cGUpKQotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotCi0gICAgICAgIFNWR0xlbmd0aFZhbHVl
IGxlbmd0aDsKLQotICAgICAgICBpZiAoZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2Ug
fHwgdG9UeXBlID09IExlbmd0aFR5cGVQZXJjZW50YWdlKSB7Ci0gICAgICAgICAgICBhdXRvIGZy
b21QZXJjZW50ID0gZnJvbS52YWx1ZUFzUGVyY2VudGFnZSgpICogMTAwOwotICAgICAgICAgICAg
YXV0byB0b1BlcmNlbnQgPSB2YWx1ZUFzUGVyY2VudGFnZSgpICogMTAwOwotICAgICAgICAgICAg
YXV0byByZXN1bHQgPSBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlUGVy
Y2VudGFnZSwgV2ViQ29yZTo6YmxlbmQoZnJvbVBlcmNlbnQsIHRvUGVyY2VudCwgcHJvZ3Jlc3Mp
KTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKLSAgICAgICAgICAgIHJldHVybiBsZW5ndGg7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoZnJvbVR5cGUgPT0gdG9UeXBlIHx8IGZyb20uaXNaZXJvKCkgfHwgaXNaZXJv
KCkgfHwgZnJvbVR5cGUgPT0gTGVuZ3RoVHlwZUVNUyB8fCBmcm9tVHlwZSA9PSBMZW5ndGhUeXBl
RVhTKSB7Ci0gICAgICAgICAgICBhdXRvIGZyb21WYWx1ZSA9IGZyb20udmFsdWVJblNwZWNpZmll
ZFVuaXRzKCk7Ci0gICAgICAgICAgICBhdXRvIHRvVmFsdWUgPSB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMoKTsKLSAgICAgICAgICAgIGlmIChpc1plcm8oKSkgewotICAgICAgICAgICAgICAgIGF1dG8g
cmVzdWx0ID0gbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoZnJvbVR5cGUsIFdlYkNvcmU6
OmJsZW5kKGZyb21WYWx1ZSwgdG9WYWx1ZSwgcHJvZ3Jlc3MpKTsKLSAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGxl
bmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHRvVHlwZSwgV2ViQ29yZTo6YmxlbmQoZnJvbVZh
bHVlLCB0b1ZhbHVlLCBwcm9ncmVzcykpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNT
RVJUKCFpc1JlbGF0aXZlKCkpOwotICAgICAgICBBU1NFUlQoIWZyb20uaXNSZWxhdGl2ZSgpKTsK
LQotICAgICAgICBTVkdMZW5ndGhDb250ZXh0IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dChudWxs
cHRyKTsKLSAgICAgICAgYXV0byBmcm9tVmFsdWVJblVzZXJVbml0cyA9IG5vblJlbGF0aXZlTGVu
Z3RoQ29udGV4dC5jb252ZXJ0VmFsdWVUb1VzZXJVbml0cyhmcm9tLnZhbHVlSW5TcGVjaWZpZWRV
bml0cygpLCBmcm9tLnVuaXRNb2RlKCksIGZyb21UeXBlKTsKLSAgICAgICAgaWYgKGZyb21WYWx1
ZUluVXNlclVuaXRzLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQot
ICAgICAgICBhdXRvIGZyb21WYWx1ZSA9IG5vblJlbGF0aXZlTGVuZ3RoQ29udGV4dC5jb252ZXJ0
VmFsdWVGcm9tVXNlclVuaXRzKGZyb21WYWx1ZUluVXNlclVuaXRzLnJlbGVhc2VSZXR1cm5WYWx1
ZSgpLCB1bml0TW9kZSgpLCB0b1R5cGUpOwotICAgICAgICBpZiAoZnJvbVZhbHVlLmhhc0V4Y2Vw
dGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBmbG9hdCB0b1ZhbHVl
ID0gdmFsdWVJblNwZWNpZmllZFVuaXRzKCk7Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gbGVuZ3Ro
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModG9UeXBlLCBXZWJDb3JlOjpibGVuZChmcm9tVmFsdWUu
cmVsZWFzZVJldHVyblZhbHVlKCksIHRvVmFsdWUsIHByb2dyZXNzKSk7Ci0gICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICBy
ZXR1cm4gbGVuZ3RoOwotICAgIH0KKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVj
aWZpZWRVbml0cyhjb25zdCBTVkdMZW5ndGhDb250ZXh0JiwgU1ZHTGVuZ3RoVHlwZSk7CiAKIHBy
aXZhdGU6CiAgICAgZmxvYXQgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgeyAwIH07Ci0gICAgdW5z
aWduZWQgbV91bml0OworICAgIFNWR0xlbmd0aFR5cGUgbV9sZW5ndGhUeXBlIHsgU1ZHTGVuZ3Ro
VHlwZTo6TnVtYmVyIH07CisgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGUgeyBTVkdMZW5n
dGhNb2RlOjpPdGhlciB9OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHTGVuZ3RoVmFsdWU+IHsKLSAgICBzdGF0aWMgU1ZHTGVuZ3RoVmFsdWUgaW5pdGlhbFZh
bHVlKCkgeyByZXR1cm4geyB9OyB9Ci0gICAgc3RhdGljIE9wdGlvbmFsPFNWR0xlbmd0aFZhbHVl
PiBwYXJzZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgY29uc3QgU3RyaW5nJiBzdHJp
bmcpCi0gICAgewotICAgICAgICBTVkdMZW5ndGhWYWx1ZSBsZW5ndGg7Ci0gICAgICAgIGxlbmd0
aC5zZXRWYWx1ZUFzU3RyaW5nKHN0cmluZywgU1ZHTGVuZ3RoVmFsdWU6Omxlbmd0aE1vZGVGb3JB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpLmhhc0V4Y2VwdGlvbigpOwotICAgICAg
ICByZXR1cm4gbGVuZ3RoOwotICAgIH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFNWR0xlbmd0aFZhbHVlJiBsZW5ndGgpIHsgcmV0dXJuIGxlbmd0aC52YWx1ZUFzU3RyaW5nKCk7
IH0KLX07CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBhLCBj
b25zdCBTVkdMZW5ndGhWYWx1ZSYgYikKK3sKKyAgICByZXR1cm4gYS52YWx1ZUluU3BlY2lmaWVk
VW5pdHMoKSA9PSBiLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpICYmIGEubGVuZ3RoVHlwZSgpID09
IGIubGVuZ3RoVHlwZSgpICYmIGEubGVuZ3RoTW9kZSgpID09IGIubGVuZ3RoTW9kZSgpOworfQor
CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBhLCBjb25zdCBT
VkdMZW5ndGhWYWx1ZSYgYikKK3sKKyAgICByZXR1cm4gYS52YWx1ZUluU3BlY2lmaWVkVW5pdHMo
KSAhPSBiLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpIHx8IGEubGVuZ3RoVHlwZSgpICE9IGIubGVu
Z3RoVHlwZSgpIHx8IGEubGVuZ3RoTW9kZSgpICE9IGIubGVuZ3RoTW9kZSgpOworfQogCiBXVEY6
OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgU1ZHTGVuZ3Ro
VmFsdWUmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSwxMyArNTUsMTMgQEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29ucwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJv
cjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjp4MUF0dHIpCi0gICAgICAgIG1feDEtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0
aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV94MS0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eTFBdHRyKQotICAg
ICAgICBtX3kxLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChM
ZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3kxLT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1l
czo6eDJBdHRyKQotICAgICAgICBtX3gyLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feDItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNW
R0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OnkyQXR0cikKLSAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IpKTsKKyAgICAgICAgbV95Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwog
CiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUsIHZhbHVl
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgJKHJldmlzaW9uIDI0OTgx
NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NiwxMCArNTYsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdCBmaW5hbDsKIAogICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJl
Z2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feDEgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTEgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMs
IExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAg
UmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94
MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgp
IH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feTIgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsMTMgKzY0LDEzIEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpwYXJz
ZUF0dHIKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBp
ZiAobmFtZSA9PSBTVkdOYW1lczo6eDFBdHRyKQotICAgICAgICBtX3gxLT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1feDEtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnkxQXR0cikKLSAgICAgICAgbV95MS0+
c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhl
aWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95MS0+c2V0QmFzZVZhbEludGVy
bmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1
ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OngyQXR0cikK
LSAgICAgICAgbV94Mi0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gyLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjp5MkF0dHIpCi0gICAgICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1feTItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmgJKHJldmlz
aW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTAgKzU5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3gxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kxIHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdB
bmltYXRlZExlbmd0aD4gbV94MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVu
Z3RoTW9kZVdpZHRoLCAiMTAwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ky
IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94MSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3kxIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2Rl
OjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3gyIHsgU1ZHQW5pbWF0
ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95MiB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2
aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMyArNzksMTMgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9F
cnJvcjsKIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpyZWZYQXR0cikKLSAgICAgICAgbV9y
ZWZYLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhN
b2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fcmVmWC0+c2V0QmFzZVZh
bEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgs
IHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6cmVm
WUF0dHIpCi0gICAgICAgIG1fcmVmWS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVl
Ojpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV9yZWZZLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChT
VkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAo
bmFtZSA9PSBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyKQotICAgICAgICBtX21hcmtlcldpZHRo
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2Rl
V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fbWFya2VyV2lkdGgtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Oldp
ZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6
Om1hcmtlckhlaWdodEF0dHIpCi0gICAgICAgIG1fbWFya2VySGVpZ2h0LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX21hcmtlckhlaWdodC0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJy
b3IsIG5hbWUsIHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5oCShyZXZpc2lvbiAyNDk4MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxMCArODgsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRUeXBlLCBjb25zdCBTVkdBbmdsZVZhbHVlJik7
CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0g
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3JlZlggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+
IG1fcmVmWSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VyV2lkdGggeyBTVkdBbmlt
YXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCwgIjMiKSB9OwotICAgIFJl
ZjxTVkdBbmltYXRlZExlbmd0aD4gbV9tYXJrZXJIZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQsICIzIikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1fcmVmWCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVu
Z3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3JlZlkgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fbWFya2VyV2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoLCAiMyIpIH07CisgICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX21hcmtlckhlaWdodCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiMyIpIH07CiAgICAgUmVmPFNWR0Fu
aW1hdGVkRW51bWVyYXRpb24+IG1fbWFya2VyVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9u
OjpjcmVhdGUodGhpcywgU1ZHTWFya2VyVW5pdHNTdHJva2VXaWR0aCkgfTsKICAgICBSZWY8U1ZH
QW5pbWF0ZWRBbmdsZT4gbV9vcmllbnRBbmdsZSB7IFNWR0FuaW1hdGVkQW5nbGU6OmNyZWF0ZSh0
aGlzKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZE9yaWVudFR5cGU+IG1fb3JpZW50VHlwZSB7IFNW
R0FuaW1hdGVkT3JpZW50VHlwZTo6Y3JlYXRlKHRoaXMsIFNWR01hcmtlck9yaWVudEFuZ2xlKSB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MiwxMyArODIsMTMgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29ucwogICAgIFNWR1BhcnNpbmdFcnJvciBwYXJzZUVycm9yID0gTm9FcnJvcjsKIAogICAg
IGlmIChuYW1lID09IFNWR05hbWVzOjp4QXR0cikKLSAgICAgICAgbV94LT5zZXRCYXNlVmFsSW50
ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CisgICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCi0gICAgICAgIG1feS0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdo
dCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBw
YXJzZUVycm9yKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyKQot
ICAgICAgICBtX3dpZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0
cnVjdChMZW5ndGhNb2RlV2lkdGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fd2lk
dGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OmhlaWdodEF0dHIpCi0gICAgICAgIG1faGVpZ2h0LT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvcikpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOwogCiAgICAgcmVwb3J0QXR0cmlidXRlUGFyc2luZ0Vycm9yKHBhcnNlRXJyb3IsIG5hbWUs
IHZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgJKHJldmlzaW9u
IDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NCwxMCArNjQsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVXaWR0aCwgIi0xMCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsgU1ZH
QW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0LCAiLTEwJSIpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMjAlIikgfTsKLSAgICBSZWY8U1ZHQW5p
bWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlSGVpZ2h0LCAiMTIwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBt
X3ggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRo
LCAiLTEwJSIpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRl
ZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgIi0xMCUiKSB9Owor
ICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpj
cmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICIxMjAlIikgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlz
LCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQsICIxMjAlIikgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRF
bnVtZXJhdGlvbj4gbV9tYXNrVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUo
dGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9Owog
ICAgIFJlZjxTVkdBbmltYXRlZEVudW1lcmF0aW9uPiBtX21hc2tDb250ZW50VW5pdHMgeyBTVkdB
bmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9U
WVBFX1VTRVJTUEFDRU9OVVNFKSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dHRlcm5FbGVtZW50LmNwcAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsMTMgKzkzLDEzIEBA
IHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGMKICAgICBTVkdQYXJzaW5n
RXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBt
X3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5n
dGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7
CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2Ug
aWYgKG5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFz
ZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2
YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lk
dGgtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0
aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNN
b2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KQotICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpj
b25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0
aXZlTGVuZ3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xl
bmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VF
cnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCShyZXZpc2lvbiAyNDk4MTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNzUsMTAgKzc1LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3Ry
eSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlV2lkdGgp
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVu
Z3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2hlaWdodCB7IFNWR0FuaW1h
dGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZH
QW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZH
TGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBT
VkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xl
bmd0aE1vZGU6OkhlaWdodCkgfTsKICAgICBSZWY8U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9w
YXR0ZXJuVW5pdHMgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB9OwogICAgIFJlZjxTVkdB
bmltYXRlZEVudW1lcmF0aW9uPiBtX3BhdHRlcm5Db250ZW50VW5pdHMgeyBTVkdBbmltYXRlZEVu
dW1lcmF0aW9uOjpjcmVhdGUodGhpcywgU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX1VTRVJT
UEFDRU9OVVNFKSB9OwogICAgIFJlZjxTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3Q+IG1fcGF0dGVy
blRyYW5zZm9ybSB7IFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdDo6Y3JlYXRlKHRoaXMpIH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRp
ZW50RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE3ICs2NiwxNyBAQCB2b2lkIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRyCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBh
cnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmN4QXR0cikK
LSAgICAgICAgbV9jeC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX2N4LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2Rl
OjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpjeUF0dHIpCi0gICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7Cisg
ICAgICAgIG1fY3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0
KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlm
IChuYW1lID09IFNWR05hbWVzOjpyQXR0cikKLSAgICAgICAgbV9yLT5zZXRCYXNlVmFsSW50ZXJu
YWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJz
ZUVycm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yLT5zZXRCYXNlVmFs
SW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpPdGhlciwg
dmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6ZnhBdHRyKQotICAgICAgICBtX2Z4LT5z
ZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlV2lk
dGgsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1fZngtPnNldEJhc2VWYWxJbnRlcm5h
bChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OmZ5QXR0cikKLSAg
ICAgICAgbV9meS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAgICAgbV9meS0+c2V0
QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6
SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OmZyQXR0cikKLSAgICAgICAgbV9mci0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlk
TmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fZnItPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6Ok90aGVyLCB2YWx1ZSwgcGFyc2VF
cnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9y
dEF0dHJpYnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmgJKHJldmlz
aW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTIgKzYzLDEyIEBAIHByaXZhdGU6CiAgICAgYm9v
bCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0
eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1h
dGVkTGVuZ3RoPiBtX2N4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhN
b2RlV2lkdGgsICI1MCUiKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjUwJSIpIH07
Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3IgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3Jl
YXRlKHRoaXMsIExlbmd0aE1vZGVPdGhlciwgIjUwJSIpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX2Z4IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2Rl
V2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z5IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV9mciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3Ro
TW9kZU90aGVyLCAiMCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgsICI1MCUi
KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9jeSB7IFNWR0FuaW1hdGVkTGVuZ3Ro
OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCAiNTAlIikgfTsKKyAgICBSZWY8
U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fciB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
U1ZHTGVuZ3RoTW9kZTo6T3RoZXIsICI1MCUiKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9meCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
V2lkdGgpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX2Z5IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNW
R0FuaW1hdGVkTGVuZ3RoPiBtX2ZyIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBT
VkdMZW5ndGhNb2RlOjpPdGhlciwgIjAlIikgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ5
ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsMTcgKzU4LDE3IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnMKICAgICBTVkdQYXJzaW5nRXJyb3IgcGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAg
ICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIpCi0gICAgICAgIG1feC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikp
OwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWln
aHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAgICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFs
KFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwg
cGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnJ4QXR0cikKLSAg
ICAgICAgbV9yeC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3Qo
TGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhz
KSk7CisgICAgICAgIG1fcngtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3Ro
TmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05h
bWVzOjpyeUF0dHIpCi0gICAgICAgIG1fcnktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhW
YWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3Ji
aWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9yeS0+c2V0QmFzZVZhbEludGVybmFsKFNW
R0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFy
c2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKICAgICBlbHNl
IGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpCi0gICAgICAgIG1fd2lkdGgtPnNldEJh
c2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwg
dmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3RocykpOworICAgICAgICBtX3dp
ZHRoLT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5n
dGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVz
TW9kZTo6Rm9yYmlkKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0
cikKLSAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6
Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBGb3JiaWROZWdh
dGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV9oZWlnaHQtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdM
ZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNl
RXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKSk7CiAKICAgICByZXBv
cnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFtZSwgdmFsdWUpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDEy
ICs2MSwxMiBAQCBwcml2YXRlOgogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikg
ZmluYWw7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlSZWdpc3RyeSB7ICp0aGlz
IH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0aDo6
Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZUhlaWdo
dCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExl
bmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsKLSAgICBSZWY8U1ZHQW5pbWF0
ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5n
dGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9yeCB7IFNWR0Fu
aW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywg
TGVuZ3RoTW9kZUhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNW
R0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07Cisg
ICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5n
dGg+IG1fd2lkdGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1v
ZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9oZWlnaHQgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OkhlaWdodCkgfTsKKyAg
ICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fcnggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRl
KHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0
aD4gbV9yeSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6
SGVpZ2h0KSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsMjMgKzIzMSwy
MyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0CiAgICAgU1ZHUGFy
c2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnhBdHRyKQotICAgICAgICBtX3gtPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKKyAgICAg
ICAgbV94LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdM
ZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1l
ID09IFNWR05hbWVzOjp5QXR0cikKLSAgICAgICAgbV95LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZH
TGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlSGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJv
cikpOworICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29u
c3RydWN0KFNWR0xlbmd0aE1vZGU6OkhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBl
bHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIpIHsKLSAgICAgICAgYXV0byBsZW5n
dGggPSBTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVuZ3Rocyk7CisgICAgICAgIGF1dG8gbGVuZ3RoID0g
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpXaWR0aCwgdmFsdWUsIHBh
cnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9yYmlkKTsKICAgICAgICAg
aWYgKHBhcnNlRXJyb3IgIT0gTm9FcnJvciB8fCB2YWx1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIGRlZmluaXRlbHkgdGhlIGNvcnJlY3QgYmVoYXZpb3IgZm9y
IGEgbWlzc2luZy9yZW1vdmVkIGF0dHJpYnV0ZS4KICAgICAgICAgICAgIC8vIE5vdCBzdXJlIGl0
J3MgY29ycmVjdCBmb3IgdGhlIGVtcHR5IHN0cmluZyBvciBmb3Igc29tZXRoaW5nIHRoYXQgY2Fu
J3QgYmUgcGFyc2VkLgotICAgICAgICAgICAgbGVuZ3RoID0gU1ZHTGVuZ3RoVmFsdWUoTGVuZ3Ro
TW9kZVdpZHRoLCAiMTAwJSJfcyk7CisgICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1
ZShTVkdMZW5ndGhNb2RlOjpXaWR0aCwgIjEwMCUiX3MpOwogICAgICAgICB9CiAgICAgICAgIG1f
d2lkdGgtPnNldEJhc2VWYWxJbnRlcm5hbChsZW5ndGgpOwogICAgIH0gZWxzZSBpZiAobmFtZSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewotICAgICAgICBhdXRvIGxlbmd0aCA9IFNWR0xlbmd0
aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZv
cmJpZE5lZ2F0aXZlTGVuZ3Rocyk7CisgICAgICAgIGF1dG8gbGVuZ3RoID0gU1ZHTGVuZ3RoVmFs
dWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yLCBT
VkdMZW5ndGhOZWdhdGl2ZVZhbHVlc01vZGU6OkZvcmJpZCk7CiAgICAgICAgIGlmIChwYXJzZUVy
cm9yICE9IE5vRXJyb3IgfHwgdmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBGSVhN
RTogVGhpcyBpcyBkZWZpbml0ZWx5IHRoZSBjb3JyZWN0IGJlaGF2aW9yIGZvciBhIHJlbW92ZWQg
YXR0cmlidXRlLgogICAgICAgICAgICAgLy8gTm90IHN1cmUgaXQncyBjb3JyZWN0IGZvciB0aGUg
ZW1wdHkgc3RyaW5nIG9yIGZvciBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSBwYXJzZWQuCi0gICAg
ICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShMZW5ndGhNb2RlSGVpZ2h0LCAiMTAwJSJf
cyk7CisgICAgICAgICAgICBsZW5ndGggPSBTVkdMZW5ndGhWYWx1ZShTVkdMZW5ndGhNb2RlOjpI
ZWlnaHQsICIxMDAlIl9zKTsKICAgICAgICAgfQogICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZh
bEludGVybmFsKGxlbmd0aCk7CiAgICAgfQpAQCAtNTc2LDE3ICs1NzYsMTcgQEAgRmxvYXRTaXpl
IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3cG9ydAogCiBib29sIFNWR1NWR0VsZW1lbnQ6Omhh
c0ludHJpbnNpY1dpZHRoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2lkdGgoKS51bml0VHlwZSgp
ICE9IExlbmd0aFR5cGVQZXJjZW50YWdlOworICAgIHJldHVybiB3aWR0aCgpLmxlbmd0aFR5cGUo
KSAhPSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOwogfQogCiBib29sIFNWR1NWR0VsZW1lbnQ6
Omhhc0ludHJpbnNpY0hlaWdodCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhlaWdodCgpLnVuaXRU
eXBlKCkgIT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2U7CisgICAgcmV0dXJuIGhlaWdodCgpLmxlbmd0
aFR5cGUoKSAhPSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlOwogfQogCiBMZW5ndGggU1ZHU1ZH
RWxlbWVudDo6aW50cmluc2ljV2lkdGgoKSBjb25zdAogewotICAgIGlmICh3aWR0aCgpLnVuaXRU
eXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAgaWYgKHdpZHRoKCkubGVuZ3RoVHlw
ZSgpID09IFNWR0xlbmd0aFR5cGU6OlBlcmNlbnRhZ2UpCiAgICAgICAgIHJldHVybiBMZW5ndGgo
MCwgRml4ZWQpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOwpA
QCAtNTk1LDcgKzU5NSw3IEBAIExlbmd0aCBTVkdTVkdFbGVtZW50OjppbnRyaW5zaWNXaWR0aCgp
IGMKIAogTGVuZ3RoIFNWR1NWR0VsZW1lbnQ6OmludHJpbnNpY0hlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKGhlaWdodCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpCisgICAg
aWYgKGhlaWdodCgpLmxlbmd0aFR5cGUoKSA9PSBTVkdMZW5ndGhUeXBlOjpQZXJjZW50YWdlKQog
ICAgICAgICByZXR1cm4gTGVuZ3RoKDAsIEZpeGVkKTsKIAogICAgIFNWR0xlbmd0aENvbnRleHQg
bGVuZ3RoQ29udGV4dCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAko
cmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTY0LDEwICsxNjQsMTAgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZH
UG9pbnQ+IG1fY3VycmVudFRyYW5zbGF0ZSB7IFNWR1BvaW50OjpjcmVhdGUoKSB9OwogCiAgICAg
UHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxT
VkdBbmltYXRlZExlbmd0aD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3kgeyBTVkdB
bmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07Ci0gICAgUmVm
PFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0
aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIl9zKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1v
ZGVIZWlnaHQsICIxMDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV94IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feSB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExl
bmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3Ro
TW9kZTo6V2lkdGgsICIxMDAlIl9zKSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV9o
ZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6Okhl
aWdodCwgIjEwMCUiX3MpIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24g
MjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxl
bWVudDo6cGFyc2VBdHRyaWJ1CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKICAgICAg
ICAgICAgIG1fbGVuZ3RoQWRqdXN0LT5zZXRCYXNlVmFsSW50ZXJuYWw8U1ZHTGVuZ3RoQWRqdXN0
VHlwZT4ocHJvcGVydHlWYWx1ZSk7CiAgICAgfSBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjp0
ZXh0TGVuZ3RoQXR0cikKLSAgICAgICAgbV90ZXh0TGVuZ3RoLT5zZXRCYXNlVmFsSW50ZXJuYWwo
U1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChMZW5ndGhNb2RlT3RoZXIsIHZhbHVlLCBwYXJzZUVy
cm9yLCBGb3JiaWROZWdhdGl2ZUxlbmd0aHMpKTsKKyAgICAgICAgbV90ZXh0TGVuZ3RoLT5zZXRC
YXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhNb2RlOjpP
dGhlciwgdmFsdWUsIHBhcnNlRXJyb3IsIFNWR0xlbmd0aE5lZ2F0aXZlVmFsdWVzTW9kZTo6Rm9y
YmlkKSk7CiAKICAgICByZXBvcnRBdHRyaWJ1dGVQYXJzaW5nRXJyb3IocGFyc2VFcnJvciwgbmFt
ZSwgdmFsdWUpOwogCkBAIC0xOTcsOSArMTk3LDkgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZQogCiBTVkdBbmltYXRlZExlbmd0aCYgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
VkdMZW5ndGhWYWx1ZT4gZGVmYXVsdFRleHRMZW5ndGgoTGVuZ3RoTW9kZU90aGVyKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U1ZHTGVuZ3RoVmFsdWU+IGRlZmF1bHRUZXh0TGVuZ3RoKFNW
R0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICBpZiAobV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZh
bHVlKCkgPT0gZGVmYXVsdFRleHRMZW5ndGgpCi0gICAgICAgIG1fdGV4dExlbmd0aC0+YmFzZVZh
bCgpLT52YWx1ZSgpLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgZ2V0
Q29tcHV0ZWRUZXh0TGVuZ3RoKCkpOworICAgICAgICBtX3RleHRMZW5ndGgtPmJhc2VWYWwoKS0+
dmFsdWUoKSA9IHsgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksIFNWR0xlbmd0aFR5cGU6Ok51bWJl
ciB9OwogICAgIHJldHVybiBtX3RleHRMZW5ndGg7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDkgKzEwNyw5IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgYm9vbCBpc1RleHRDb250
ZW50KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgUmVmPFNWR0FuaW1hdGVk
TGVuZ3RoPiBtX3RleHRMZW5ndGggeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExl
bmd0aE1vZGVPdGhlcikgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1fdGV4dExlbmd0
aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIp
IH07CiAgICAgUmVmPFNWR0FuaW1hdGVkRW51bWVyYXRpb24+IG1fbGVuZ3RoQWRqdXN0IHsgU1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aEFkanVzdFNwYWNpbmcp
IH07Ci0gICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoIHsgTGVuZ3RoTW9k
ZU90aGVyIH07CisgICAgU1ZHTGVuZ3RoVmFsdWUgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoIHsgU1ZH
TGVuZ3RoTW9kZTo6T3RoZXIgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNDk4
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoCiAgICAgU1ZHUGFyc2luZ0Vycm9yIHBhcnNlRXJyb3IgPSBOb0Vycm9yOwogCiAg
ICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikKLSAgICAgICAgbV9zdGFy
dE9mZnNldC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVu
Z3RoTW9kZU90aGVyLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3N0YXJ0T2Zmc2V0
LT5zZXRCYXNlVmFsSW50ZXJuYWwoU1ZHTGVuZ3RoVmFsdWU6OmNvbnN0cnVjdChTVkdMZW5ndGhN
b2RlOjpPdGhlciwgdmFsdWUsIHBhcnNlRXJyb3IpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNW
R05hbWVzOjptZXRob2RBdHRyKSB7CiAgICAgICAgIFNWR1RleHRQYXRoTWV0aG9kVHlwZSBwcm9w
ZXJ0eVZhbHVlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHVGV4dFBhdGhNZXRob2RUeXBlPjo6ZnJv
bVN0cmluZyh2YWx1ZSk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVZhbHVlID4gMCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmgJKHJldmlzaW9uIDI0OTgxNykKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5n
dGhzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBQcm9wZXJ0eVJlZ2lzdHJ5IG1fcHJvcGVydHlS
ZWdpc3RyeSB7ICp0aGlzIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3N0YXJ0T2Zm
c2V0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlT3RoZXIpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3N0YXJ0T2Zmc2V0IHsgU1ZHQW5pbWF0ZWRM
ZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpPdGhlcikgfTsKICAgICBSZWY8U1ZH
QW5pbWF0ZWRFbnVtZXJhdGlvbj4gbV9tZXRob2QgeyBTVkdBbmltYXRlZEVudW1lcmF0aW9uOjpj
cmVhdGUodGhpcywgU1ZHVGV4dFBhdGhNZXRob2RBbGlnbikgfTsKICAgICBSZWY8U1ZHQW5pbWF0
ZWRFbnVtZXJhdGlvbj4gbV9zcGFjaW5nIHsgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIFNWR1RleHRQYXRoU3BhY2luZ0V4YWN0KSB9OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDEwIEBAIHByaXZhdGU6CiAgICAgY29uc3QgU1ZHUHJv
cGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCiAgICAgUHJvcGVydHlSZWdpc3RyeSBtX3Byb3BlcnR5
UmVnaXN0cnkgeyAqdGhpcyB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExpc3Q+IG1feCB7
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVXaWR0aCkgfTsK
LSAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX3kgeyBTVkdBbmltYXRlZExlbmd0aExp
c3Q6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAgIFJlZjxTVkdBbmltYXRl
ZExlbmd0aExpc3Q+IG1fZHggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBM
ZW5ndGhNb2RlV2lkdGgpIH07Ci0gICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV9keSB7
IFNWR0FuaW1hdGVkTGVuZ3RoTGlzdDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWlnaHQpIH07
CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoTGlzdD4gbV94IHsgU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpIH07CisgICAgUmVmPFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhp
cywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9OworICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aExp
c3Q+IG1fZHggeyBTVkdBbmltYXRlZExlbmd0aExpc3Q6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhN
b2RlOjpXaWR0aCkgfTsKKyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0PiBtX2R5IHsgU1ZH
QW5pbWF0ZWRMZW5ndGhMaXN0OjpjcmVhdGUodGhpcywgU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0KSB9
OwogICAgIFJlZjxTVkdBbmltYXRlZE51bWJlckxpc3Q+IG1fcm90YXRlIHsgU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0OjpjcmVhdGUodGhpcykgfTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMTMgKzgwLDEzIEBAIHZvaWQg
U1ZHVXNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QKICAgICBTVkdQYXJzaW5nRXJyb3Ig
cGFyc2VFcnJvciA9IE5vRXJyb3I7CiAKICAgICBpZiAobmFtZSA9PSBTVkdOYW1lczo6eEF0dHIp
Ci0gICAgICAgIG1feC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOworICAgICAgICBtX3gtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKQotICAgICAgICBtX3ktPnNldEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1
ZTo6Y29uc3RydWN0KExlbmd0aE1vZGVIZWlnaHQsIHZhbHVlLCBwYXJzZUVycm9yKSk7CisgICAg
ICAgIG1feS0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoU1ZH
TGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvcikpOwogICAgIGVsc2UgaWYgKG5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cikKLSAgICAgICAgbV93aWR0aC0+c2V0QmFzZVZhbElu
dGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1Y3QoTGVuZ3RoTW9kZVdpZHRoLCB2YWx1ZSwg
cGFyc2VFcnJvciwgRm9yYmlkTmVnYXRpdmVMZW5ndGhzKSk7CisgICAgICAgIG1fd2lkdGgtPnNl
dEJhc2VWYWxJbnRlcm5hbChTVkdMZW5ndGhWYWx1ZTo6Y29uc3RydWN0KFNWR0xlbmd0aE1vZGU6
OldpZHRoLCB2YWx1ZSwgcGFyc2VFcnJvciwgU1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpG
b3JiaWQpKTsKICAgICBlbHNlIGlmIChuYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKQotICAg
ICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZhbHVlOjpjb25zdHJ1
Y3QoTGVuZ3RoTW9kZUhlaWdodCwgdmFsdWUsIHBhcnNlRXJyb3IsIEZvcmJpZE5lZ2F0aXZlTGVu
Z3RocykpOworICAgICAgICBtX2hlaWdodC0+c2V0QmFzZVZhbEludGVybmFsKFNWR0xlbmd0aFZh
bHVlOjpjb25zdHJ1Y3QoU1ZHTGVuZ3RoTW9kZTo6SGVpZ2h0LCB2YWx1ZSwgcGFyc2VFcnJvciwg
U1ZHTGVuZ3RoTmVnYXRpdmVWYWx1ZXNNb2RlOjpGb3JiaWQpKTsKIAogICAgIHJlcG9ydEF0dHJp
YnV0ZVBhcnNpbmdFcnJvcihwYXJzZUVycm9yLCBuYW1lLCB2YWx1ZSk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsMTAgKzk2LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlRGVwZW5kZW50U2hhZG93VHJlZXMoKTsKIAog
ICAgIFByb3BlcnR5UmVnaXN0cnkgbV9wcm9wZXJ0eVJlZ2lzdHJ5IHsgKnRoaXMgfTsKLSAgICBS
ZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1feCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVhdGUodGhp
cywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV95IHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBMZW5ndGhNb2RlSGVpZ2h0KSB9OwotICAg
IFJlZjxTVkdBbmltYXRlZExlbmd0aD4gbV93aWR0aCB7IFNWR0FuaW1hdGVkTGVuZ3RoOjpjcmVh
dGUodGhpcywgTGVuZ3RoTW9kZVdpZHRoKSB9OwotICAgIFJlZjxTVkdBbmltYXRlZExlbmd0aD4g
bV9oZWlnaHQgeyBTVkdBbmltYXRlZExlbmd0aDo6Y3JlYXRlKHRoaXMsIExlbmd0aE1vZGVIZWln
aHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3ggeyBTVkdBbmltYXRlZExlbmd0
aDo6Y3JlYXRlKHRoaXMsIFNWR0xlbmd0aE1vZGU6OldpZHRoKSB9OworICAgIFJlZjxTVkdBbmlt
YXRlZExlbmd0aD4gbV95IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5n
dGhNb2RlOjpIZWlnaHQpIH07CisgICAgUmVmPFNWR0FuaW1hdGVkTGVuZ3RoPiBtX3dpZHRoIHsg
U1ZHQW5pbWF0ZWRMZW5ndGg6OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpXaWR0aCkgfTsK
KyAgICBSZWY8U1ZHQW5pbWF0ZWRMZW5ndGg+IG1faGVpZ2h0IHsgU1ZHQW5pbWF0ZWRMZW5ndGg6
OmNyZWF0ZSh0aGlzLCBTVkdMZW5ndGhNb2RlOjpIZWlnaHQpIH07CiAKICAgICBib29sIG1faGF2
ZUZpcmVkTG9hZEV2ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fc2hhZG93VHJlZU5lZWRzVXBk
YXRlIHsgdHJ1ZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eUFjY2Vzc29ySW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlBY2Nlc3NvckltcGwuaAkocmV2aXNp
b24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eUFjY2Vzc29ySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAg
cHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdBdHRyaWJ1dGVBbmltYXRvcj4gY3Jl
YXRlQW5pbWF0b3IoT3duZXJUeXBlJiBvd25lciwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSwgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwg
Ym9vbCBpc0FjY3VtdWxhdGVkLCBib29sIGlzQWRkaXRpdmUpIGNvbnN0IGZpbmFsCiAgICAgewot
ICAgICAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBwcm9wZXJ0eShvd25lciktPmJhc2VW
YWwoKS0+dmFsdWUoKS51bml0TW9kZSgpOworICAgICAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1v
ZGUgPSBwcm9wZXJ0eShvd25lciktPmJhc2VWYWwoKS0+dmFsdWUoKS5sZW5ndGhNb2RlKCk7CiAg
ICAgICAgIHJldHVybiBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRl
TmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSwgbGVuZ3RoTW9kZSk7CiAgICAgfQogCkBAIC0xNDYsNyArMTQ2LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQXR0cmlidXRlQW5p
bWF0b3I+IGNyZWF0ZUFuaW1hdG9yKE93bmVyVHlwZSYgb3duZXIsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSwgQ2FsY01vZGUg
Y2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0FkZGl0aXZlKSBjb25zdCBmaW5h
bAogICAgIHsKLSAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpj
cmVhdGUoYXR0cmlidXRlTmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZVdpZHRoKTsKKyAgICAg
ICAgcmV0dXJuIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjcmVhdGUoYXR0cmlidXRl
TmFtZSwgcHJvcGVydHkob3duZXIpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVs
YXRlZCwgaXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZTo6V2lkdGgpOwogICAgIH0KIAogICAgIHZv
aWQgYXBwZW5kQW5pbWF0ZWRJbnN0YW5jZShPd25lclR5cGUmIG93bmVyLCBTVkdBdHRyaWJ1dGVB
bmltYXRvciYgYW5pbWF0b3IpIGNvbnN0IGZpbmFsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5RGVzY3Jp
cHRpb24uaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw4
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNw
cmFnbWEgb25jZQotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9tU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU1ZHRWxlbWVu
dDsKLQotc3RydWN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiB7ICAgICAgICAgICAg
Ci0gICAgLy8gRW1wdHkgdmFsdWUKLSAgICBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24o
KQotICAgICAgICA6IG1fZWxlbWVudChudWxscHRyKQotICAgICAgICAsIG1fYXR0cmlidXRlTmFt
ZShudWxscHRyKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBEZWxldGVkIHZhbHVlCi0gICAgU1ZH
QW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlw
ZSkKLSAgICAgICAgOiBtX2VsZW1lbnQocmVpbnRlcnByZXRfY2FzdDxTVkdFbGVtZW50Kj4oLTEp
KQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VsZW1lbnQgPT0gcmVpbnRlcnByZXRfY2FzdDxT
VkdFbGVtZW50Kj4oLTEpOwotICAgIH0KLQotICAgIFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlw
dGlvbihTVkdFbGVtZW50KiBlbGVtZW50LCBjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1l
KQotICAgICAgICA6IG1fZWxlbWVudChlbGVtZW50KQotICAgICAgICAsIG1fYXR0cmlidXRlTmFt
ZShhdHRyaWJ1dGVOYW1lLmltcGwoKSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2VsZW1lbnQp
OwotICAgICAgICBBU1NFUlQobV9hdHRyaWJ1dGVOYW1lKTsKLSAgICB9Ci0KLSAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uJiBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VsZW1lbnQgPT0gb3RoZXIubV9lbGVtZW50ICYm
IG1fYXR0cmlidXRlTmFtZSA9PSBvdGhlci5tX2F0dHJpYnV0ZU5hbWU7Ci0gICAgfQotCi0gICAg
U1ZHRWxlbWVudCogbV9lbGVtZW50OwotICAgIEF0b21TdHJpbmdJbXBsKiBtX2F0dHJpYnV0ZU5h
bWU7Ci19OwotCi1zdHJ1Y3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0aW9uSGFzaCB7Ci0g
ICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgU1ZHQW5pbWF0ZWRQcm9wZXJ0eURlc2NyaXB0
aW9uJiBrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5
PHNpemVvZihTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24pPigma2V5KTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRp
b24mIGEsIGNvbnN0IFNWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbiYgYikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhID09IGI7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOwotfTsKLQotc3RydWN0IFNWR0FuaW1h
dGVkUHJvcGVydHlEZXNjcmlwdGlvbkhhc2hUcmFpdHMgOiBXVEY6OlNpbXBsZUNsYXNzSGFzaFRy
YWl0czxTVkdBbmltYXRlZFByb3BlcnR5RGVzY3JpcHRpb24+IHsgfTsKLSAKLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlEZXNjcmlwdGlvbi5oCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0aW9uQWRkaXRpdmVMaXN0RnVuY3Rpb25JbXBs
LmgJKHJldmlzaW9uIDI0OTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R0FuaW1hdGlvbkFkZGl0aXZlTGlzdEZ1bmN0aW9uSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogICAgICAgICBTVkdMZW5ndGhDb250ZXh0IGxlbmd0aENv
bnRleHQodGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0
b0l0ZW1zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBl
ID0gKGkgPCBmcm9tSXRlbXMuc2l6ZSgpICYmIHByb2dyZXNzIDwgMC41ID8gZnJvbUl0ZW1zIDog
dG9JdGVtcylbaV0tPnZhbHVlKCkudW5pdFR5cGUoKTsKKyAgICAgICAgICAgIFNWR0xlbmd0aFR5
cGUgbGVuZ3RoVHlwZSA9IChpIDwgZnJvbUl0ZW1zLnNpemUoKSAmJiBwcm9ncmVzcyA8IDAuNSA/
IGZyb21JdGVtcyA6IHRvSXRlbXMpW2ldLT52YWx1ZSgpLmxlbmd0aFR5cGUoKTsKIAogICAgICAg
ICAgICAgZmxvYXQgZnJvbSA9IGkgPCBmcm9tSXRlbXMuc2l6ZSgpID8gZnJvbUl0ZW1zW2ldLT52
YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQpIDogMDsKICAgICAgICAgICAgIGZsb2F0IHRvID0g
dG9JdGVtc1tpXS0+dmFsdWUoKS52YWx1ZShsZW5ndGhDb250ZXh0KTsKQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgZmxvYXQgdmFsdWUgPSBhbmltYXRlZEl0ZW1zW2ldLT52
YWx1ZSgpLnZhbHVlKGxlbmd0aENvbnRleHQpOwogCiAgICAgICAgICAgICB2YWx1ZSA9IEJhc2U6
OmFuaW1hdGUocHJvZ3Jlc3MsIHJlcGVhdENvdW50LCBmcm9tLCB0bywgdG9BdEVuZE9mRHVyYXRp
b24sIHZhbHVlKTsKLSAgICAgICAgICAgIGFuaW1hdGVkSXRlbXNbaV0tPnZhbHVlKCkuc2V0VmFs
dWUobGVuZ3RoQ29udGV4dCwgdmFsdWUsIGxlbmd0aE1vZGUsIHVuaXRUeXBlKTsKKyAgICAgICAg
ICAgIGFuaW1hdGVkSXRlbXNbaV0tPnZhbHVlKCkuc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgdmFs
dWUsIGxlbmd0aFR5cGUsIGxlbmd0aE1vZGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9t
SXRlbXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiBm
cm9tVmFsdWUgPSBmcm9tSXRlbXNbaV0tPnZhbHVlKCk7CiAgICAgICAgICAgICBTVkdMZW5ndGhW
YWx1ZSYgdG9WYWx1ZSA9IHRvSXRlbXNbaV0tPnZhbHVlKCk7Ci0gICAgICAgICAgICB0b1ZhbHVl
LnNldFZhbHVlKHRvVmFsdWUudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tVmFsdWUudmFsdWUo
bGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQpOworICAgICAgICAgICAgdG9WYWx1ZS5zZXRW
YWx1ZShsZW5ndGhDb250ZXh0LCB0b1ZhbHVlLnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbVZh
bHVlLnZhbHVlKGxlbmd0aENvbnRleHQpKTsKICAgICAgICAgfQogICAgIH0KIH07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZhbHVlRnVu
Y3Rpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMv
U1ZHQW5pbWF0aW9uQWRkaXRpdmVWYWx1ZUZ1bmN0aW9uSW1wbC5oCShyZXZpc2lvbiAyNDk4MTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRpb25BZGRpdGl2ZVZh
bHVlRnVuY3Rpb25JbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhbmltYXRlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGZsb2F0IHBy
b2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHTGVuZ3RoVmFsdWUmIGFuaW1hdGVkKQog
ICAgIHsKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRhcmdldEVsZW1l
bnQpOwotICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gcHJvZ3Jlc3MgPCAwLjUgPyBt
X2Zyb20udW5pdFR5cGUoKSA6IG1fdG8udW5pdFR5cGUoKTsKKyAgICAgICAgU1ZHTGVuZ3RoVHlw
ZSBsZW5ndGhUeXBlID0gcHJvZ3Jlc3MgPCAwLjUgPyBtX2Zyb20ubGVuZ3RoVHlwZSgpIDogbV90
by5sZW5ndGhUeXBlKCk7CiAKICAgICAgICAgZmxvYXQgZnJvbSA9IChtX2FuaW1hdGlvbk1vZGUg
PT0gQW5pbWF0aW9uTW9kZTo6VG8gPyBhbmltYXRlZCA6IG1fZnJvbSkudmFsdWUobGVuZ3RoQ29u
dGV4dCk7CiAgICAgICAgIGZsb2F0IHRvID0gbV90by52YWx1ZShsZW5ndGhDb250ZXh0KTsKQEAg
LTE4NSw3ICsxODUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IHZhbHVlID0gYW5pbWF0ZWQu
dmFsdWUobGVuZ3RoQ29udGV4dCk7CiAKICAgICAgICAgdmFsdWUgPSBCYXNlOjphbmltYXRlKHBy
b2dyZXNzLCByZXBlYXRDb3VudCwgZnJvbSwgdG8sIHRvQXRFbmRPZkR1cmF0aW9uLCB2YWx1ZSk7
Ci0gICAgICAgIGFuaW1hdGVkID0geyBsZW5ndGhDb250ZXh0LCB2YWx1ZSwgbV9sZW5ndGhNb2Rl
LCB1bml0VHlwZSB9OworICAgICAgICBhbmltYXRlZCA9IHsgbGVuZ3RoQ29udGV4dCwgdmFsdWUs
IGxlbmd0aFR5cGUsIG1fbGVuZ3RoTW9kZSB9OwogICAgIH0KIAogICAgIE9wdGlvbmFsPGZsb2F0
PiBjYWxjdWxhdGVEaXN0YW5jZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBTdHJp
bmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pIGNvbnN0IG92ZXJyaWRlCkBAIC0yMDAsNyArMjAw
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZEZyb21BbmRUb1ZhbHVlcyhTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KHRhcmdldEVsZW1lbnQpOwotICAgICAgICBtX3RvLnNldFZhbHVlKG1fdG8u
dmFsdWUobGVuZ3RoQ29udGV4dCkgKyBtX2Zyb20udmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0
aENvbnRleHQpOworICAgICAgICBtX3RvLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIG1fdG8udmFs
dWUobGVuZ3RoQ29udGV4dCkgKyBtX2Zyb20udmFsdWUobGVuZ3RoQ29udGV4dCkpOwogICAgIH0K
IAogICAgIFNWR0xlbmd0aE1vZGUgbV9sZW5ndGhNb2RlOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlBbmltYXRv
ckltcGwuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHVmFsdWVQcm9wZXJ0eUFuaW1hdG9ySW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwx
MyArMzksMTMgQEAgY2xhc3MgU1ZHTGVuZ3RoQW5pbWF0b3IgZmluYWwgOiBwdWJsaWMgUwogcHVi
bGljOgogICAgIHN0YXRpYyBhdXRvIGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1
dGVOYW1lLCBSZWY8U1ZHUHJvcGVydHk+JiYgcHJvcGVydHksIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSwgQ2FsY01vZGUgY2FsY01vZGUsIGJvb2wgaXNBY2N1bXVsYXRlZCwgYm9vbCBpc0Fk
ZGl0aXZlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoQW5pbWF0
b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxj
TW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVyKTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoQW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdU
Rk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25Nb2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwg
aXNBZGRpdGl2ZSwgU1ZHTGVuZ3RoTW9kZTo6T3RoZXIpOwogICAgIH0KIAogICAgIHZvaWQgc3Rh
cnQoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIFN0
cmluZyBiYXNlVmFsdWUgPSBjb21wdXRlQ1NTUHJvcGVydHlWYWx1ZSh0YXJnZXRFbGVtZW50LCBj
c3NQcm9wZXJ0eUlEKG1fYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpOwotICAgICAgICBTVkdM
ZW5ndGhWYWx1ZSB2YWx1ZShMZW5ndGhNb2RlT3RoZXIpOworICAgICAgICBTVkdMZW5ndGhWYWx1
ZSB2YWx1ZShTVkdMZW5ndGhNb2RlOjpPdGhlcik7CiAgICAgICAgIGlmICghdmFsdWUuc2V0VmFs
dWVBc1N0cmluZyhiYXNlVmFsdWUpLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICAgICAgbV9wcm9w
ZXJ0eS0+c2V0VmFsdWUodmFsdWUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR1ZhbHVlUHJvcGVydHlMaXN0QW5pbWF0b3JJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmlt
YXRvckltcGwuaAkocmV2aXNpb24gMjQ5ODE3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHVmFsdWVQcm9wZXJ0eUxpc3RBbmltYXRvckltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNyArMzksNyBAQCBjbGFzcyBTVkdMZW5ndGhMaXN0QW5pbWF0b3IgZmluYWwgOiBwdWJs
CiBwdWJsaWM6CiAgICAgc3RhdGljIGF1dG8gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJpYnV0ZU5hbWUsIFJlZjxTVkdQcm9wZXJ0eT4mJiBwcm9wZXJ0eSwgQW5pbWF0aW9uTW9kZSBh
bmltYXRpb25Nb2RlLCBDYWxjTW9kZSBjYWxjTW9kZSwgYm9vbCBpc0FjY3VtdWxhdGVkLCBib29s
IGlzQWRkaXRpdmUpCiAgICAgewotICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxTVkdMZW5ndGhM
aXN0QW5pbWF0b3I+KGF0dHJpYnV0ZU5hbWUsIFdURk1vdmUocHJvcGVydHkpLCBhbmltYXRpb25N
b2RlLCBjYWxjTW9kZSwgaXNBY2N1bXVsYXRlZCwgaXNBZGRpdGl2ZSwgTGVuZ3RoTW9kZU90aGVy
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8U1ZHTGVuZ3RoTGlzdEFuaW1hdG9yPihhdHRy
aWJ1dGVOYW1lLCBXVEZNb3ZlKHByb3BlcnR5KSwgYW5pbWF0aW9uTW9kZSwgY2FsY01vZGUsIGlz
QWNjdW11bGF0ZWQsIGlzQWRkaXRpdmUsIFNWR0xlbmd0aE1vZGU6Ok90aGVyKTsKICAgICB9CiAK
ICAgICB2b2lkIHN0YXJ0KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>